diff --git a/ParticleGenerator/res/config/imgui.ini b/ParticleGenerator/res/config/imgui.ini
index 2debb9c1f584f73decc8c1256714d66791c3523c..2049a5ed91703b1c8fcee9b217bf4211a5023975 100644
--- a/ParticleGenerator/res/config/imgui.ini
+++ b/ParticleGenerator/res/config/imgui.ini
@@ -2,12 +2,11 @@
 Pos=60,60
 Size=400,400
 
-[Window][Particle Generator]
-Pos=86,73
-Size=848,814
-
 [Window][Dear ImGui Demo]
-Pos=984,78
-Size=598,693
-Collapsed=1
+Pos=650,20
+Size=550,680
+
+[Window][Particle Generator]
+Pos=60,60
+Size=141,81
 
diff --git a/ParticleGenerator/src/Interface/Generator/PathGenerator.cpp b/ParticleGenerator/src/Interface/Generator/PathUniqueGenerator.cpp
similarity index 92%
rename from ParticleGenerator/src/Interface/Generator/PathGenerator.cpp
rename to ParticleGenerator/src/Interface/Generator/PathUniqueGenerator.cpp
index 887f7a097a5247927e268f1010374d4cd87c8cf0..11a6872aecaf35df9caaf1981c45c5006f7ba4e3 100644
--- a/ParticleGenerator/src/Interface/Generator/PathGenerator.cpp
+++ b/ParticleGenerator/src/Interface/Generator/PathUniqueGenerator.cpp
@@ -1,19 +1,19 @@
 #pragma once
 
-#include "PathGenerator.hpp"
+#include "PathUniqueGenerator.hpp"
 
 #include <imgui.h>
 
-#include "../../Particle/generator/PathGenerator.hpp"
+#include "../../Particle/generator/PathUniqueGenerator.hpp"
 
 namespace pg::interface {
-    PathGenerator::PathGenerator(particle::PathGenerator * parent, scene::Trajectory * trajectory)
+    PathUniqueGenerator::PathUniqueGenerator(particle::PathUniqueGenerator * parent, scene::Trajectory * trajectory)
     : Generator(parent), 
      _trajectory(trajectory), 
      _next(0.f, 0.f, 0.f), 
      _index(0) {}
     
-    void PathGenerator::draw(double current_time) {
+    void PathUniqueGenerator::draw(double current_time) {
         ImGui::Text("Physic generator at %f / %f / %f (x, y, z) - variation : %f.", this->parent()->m_position.x, this->parent()->m_position.y, this->parent()->m_position.z, this->parent()->m_positionVariation);
         ImGui::Text("Default u : %f", this->parent()->m_u);
         ImGui::Text("u increment : %f", this->parent()->m_increment);
diff --git a/ParticleGenerator/src/Interface/Generator/PathGenerator.hpp b/ParticleGenerator/src/Interface/Generator/PathUniqueGenerator.hpp
similarity index 63%
rename from ParticleGenerator/src/Interface/Generator/PathGenerator.hpp
rename to ParticleGenerator/src/Interface/Generator/PathUniqueGenerator.hpp
index 01c6f58b1e07f85bc20fda74f8615bb65724a53b..91f5ea8ecef73f3f22c784cf75a479b013884366 100644
--- a/ParticleGenerator/src/Interface/Generator/PathGenerator.hpp
+++ b/ParticleGenerator/src/Interface/Generator/PathUniqueGenerator.hpp
@@ -6,11 +6,11 @@
 #include <glm/vec3.hpp>
 
 namespace pg::particle {
-    class PathGenerator;
+    class PathUniqueGenerator;
 }
 
 namespace pg::interface {
-    class PathGenerator : public Generator<particle::PathGenerator> {
+    class PathUniqueGenerator : public Generator<particle::PathUniqueGenerator> {
         private:
             scene::Trajectory * _trajectory;
 
@@ -18,8 +18,8 @@ namespace pg::interface {
             int _index;
 
         public:
-            PathGenerator(particle::PathGenerator *, scene::Trajectory * = nullptr);
-   virtual ~PathGenerator() = default;
+            PathUniqueGenerator(particle::PathUniqueGenerator *, scene::Trajectory * = nullptr);
+   virtual ~PathUniqueGenerator() = default;
 
             void draw(double) override;
             virtual inline std::string title() const {return "Path Generator Interface";}
diff --git a/ParticleGenerator/src/Interface/Scene/Path.cpp b/ParticleGenerator/src/Interface/Scene/Path.cpp
index e6981583a59bec0c8e45ec35e6537b8397a547d9..d283ce0786c17f7737fcd5ed15e942fc750748ab 100644
--- a/ParticleGenerator/src/Interface/Scene/Path.cpp
+++ b/ParticleGenerator/src/Interface/Scene/Path.cpp
@@ -6,7 +6,7 @@
 #include "../../tfd/tinyfiledialogs.h"
 
 namespace pg::interface {
-    Path::Path(scene::Path * parent, particle::PathGenerator * generator, scene::Trajectory * trajectory)
+    Path::Path(scene::Path * parent, particle::PathUniqueGenerator * generator, scene::Trajectory * trajectory)
     : Scene(parent), SceneParticle(parent), _interface(generator, trajectory) {}
 
     void Path::draw(double current_time) {
diff --git a/ParticleGenerator/src/Interface/Scene/Path.hpp b/ParticleGenerator/src/Interface/Scene/Path.hpp
index 6359ed4546f847d9b9a1fe0aaf90bcf926fea6b3..a1f381d3760f7af520f3c7e3f6fe692075e1cfbd 100644
--- a/ParticleGenerator/src/Interface/Scene/Path.hpp
+++ b/ParticleGenerator/src/Interface/Scene/Path.hpp
@@ -2,7 +2,7 @@
 
 #include "../Interface.hpp"
 #include "SceneParticle.hpp"
-#include "../Generator/PathGenerator.hpp"
+#include "../Generator/PathUniqueGenerator.hpp"
 #include "../../Scene/Scenes/Trajectory.hpp"
 
 #include <glm/vec4.hpp>
@@ -15,10 +15,10 @@ namespace pg::scene {
 namespace pg::interface {
     class Path : public Scene<scene::Path>, public SceneParticle {
         private:
-			PathGenerator _interface;
+			PathUniqueGenerator _interface;
         
         public:
-            Path(scene::Path *, particle::PathGenerator *, pg::scene::Trajectory * = nullptr);
+            Path(scene::Path *, particle::PathUniqueGenerator *, pg::scene::Trajectory * = nullptr);
    virtual ~Path() = default;
 
             virtual void draw(double);
diff --git a/ParticleGenerator/src/Particle/generator/PathGenerator.cpp b/ParticleGenerator/src/Particle/generator/PathUniqueGenerator.cpp
similarity index 85%
rename from ParticleGenerator/src/Particle/generator/PathGenerator.cpp
rename to ParticleGenerator/src/Particle/generator/PathUniqueGenerator.cpp
index fc759fff437a217a938514440ed155b0744d7014..e19cda1dabf62274d674c8a2d2e9b57b56806e1c 100644
--- a/ParticleGenerator/src/Particle/generator/PathGenerator.cpp
+++ b/ParticleGenerator/src/Particle/generator/PathUniqueGenerator.cpp
@@ -1,4 +1,4 @@
-#include "PathGenerator.hpp"
+#include "PathUniqueGenerator.hpp"
 
 #include <random>
 
@@ -6,14 +6,14 @@
 #include <glm/gtx/rotate_vector.hpp>
 
 namespace pg::particle {
-	PathGenerator::PathGenerator(ct::CurveGenerator * generator, const ct::Curve& controlPoints, const ct::Point& position, float positionVariation) 
+	PathUniqueGenerator::PathUniqueGenerator(ct::CurveGenerator * generator, const ct::Curve& controlPoints, const ct::Point& position, float positionVariation) 
 	: Generator(position, positionVariation), m_generator(generator), m_controlPoints(), m_u(0.0), m_spacing(0.0), m_increment(0.0) {
 		for(auto & point : controlPoints) {
 			this->m_controlPoints.push_back(this->m_position + glm::vec3(point));
 		}
 	}
 
-	std::vector<std::unique_ptr<Path>> PathGenerator::generate(size_t count, size_t birth) const {
+	std::vector<std::unique_ptr<Path>> PathUniqueGenerator::generate(size_t count, size_t birth) const {
 		std::random_device device;
 		std::mt19937 randomEngine(device());
 
diff --git a/ParticleGenerator/src/Particle/generator/PathGenerator.hpp b/ParticleGenerator/src/Particle/generator/PathUniqueGenerator.hpp
similarity index 79%
rename from ParticleGenerator/src/Particle/generator/PathGenerator.hpp
rename to ParticleGenerator/src/Particle/generator/PathUniqueGenerator.hpp
index 8263cdb64e3d5ecec9c8c3eea084d2ce6ab70440..a6abb2168c0f8db1748f6c98880a89c90f15a0e3 100644
--- a/ParticleGenerator/src/Particle/generator/PathGenerator.hpp
+++ b/ParticleGenerator/src/Particle/generator/PathUniqueGenerator.hpp
@@ -3,19 +3,21 @@
 #include "Generator.hpp"
 #include "../Path.hpp"
 
+#include <set>
+
 namespace pg::interface {
-	class PathGenerator;
+	class PathUniqueGenerator;
 }
 
 namespace pg::particle {
-	class PathGenerator : public Generator<Path> {
+	class PathUniqueGenerator : public Generator<Path> {
 		private:
 			ct::Curve m_controlPoints;
 			ct::CurveGenerator * m_generator;
 			float m_u, m_spacing, m_increment, m_limitor;
 
 		public:
-			PathGenerator(ct::CurveGenerator * generator, const ct::Curve& controlPoints, const ct::Point& position = ct::Point(), float positionVariation = 0.0);
+			PathUniqueGenerator(ct::CurveGenerator * generator, const ct::Curve& controlPoints, const ct::Point& position = ct::Point(), float positionVariation = 0.0);
 
 			inline ct::CurveGenerator * getGenerator() const {return this->m_generator;}
 			inline const ct::Curve& getControlPoint() const {return this->m_controlPoints;}
@@ -32,6 +34,6 @@ namespace pg::particle {
 
 			virtual std::vector<std::unique_ptr<Path>> generate(size_t count, size_t birth = 0) const;
 
-			friend class interface::PathGenerator;
+			friend class interface::PathUniqueGenerator;
 	};
 }
\ No newline at end of file
diff --git a/ParticleGenerator/src/Scene/Scenes/Path.hpp b/ParticleGenerator/src/Scene/Scenes/Path.hpp
index 3c16f4cc9260550f96b5cee5392df01ead8cdbc1..1c39cb49c605b3f637b79e1bda7c8170b7b64e81 100644
--- a/ParticleGenerator/src/Scene/Scenes/Path.hpp
+++ b/ParticleGenerator/src/Scene/Scenes/Path.hpp
@@ -4,7 +4,7 @@
 #include "Trajectory.hpp"
 
 #include "../../Renderer/Renderer.hpp"
-#include "../../Particle/generator/PathGenerator.hpp"
+#include "../../Particle/generator/PathUniqueGenerator.hpp"
 #include "../../Interface/Scene/Path.hpp"
 #include "../../Mesh/Billboard.hpp"
 #include "../../System/Window.hpp"
@@ -18,7 +18,7 @@ namespace pg::scene {
             Billboard _billboard;
             Trajectory _trajectory;
             Material _texture;
-            particle::PathGenerator _generator;
+            particle::PathUniqueGenerator _generator;
             glm::vec4 _color;
 
             interface::Path _interface;
@@ -34,7 +34,7 @@ namespace pg::scene {
 
             inline const Program & getProgram() const {return this->_program;}
             inline const Material & getTexture() const {return this->_texture;}
-            inline const particle::PathGenerator & getGenerator() const {return this->_generator;}
+            inline const particle::PathUniqueGenerator & getGenerator() const {return this->_generator;}
 
             void changeParticletexture(const std::string &);
 
diff --git a/ParticleGenerator/src/Scene/Scenes/Trajectory.cpp b/ParticleGenerator/src/Scene/Scenes/Trajectory.cpp
index ec73c94b40bbe4231639f208bda34beb3bdd86db..722ae7d9f01bf021badb3e95720ca7732f28ca9e 100644
--- a/ParticleGenerator/src/Scene/Scenes/Trajectory.cpp
+++ b/ParticleGenerator/src/Scene/Scenes/Trajectory.cpp
@@ -4,7 +4,7 @@
 #include <CurveTools/CPU/CurveSampler.hpp>
 
 namespace pg::scene {
-    Trajectory::Trajectory(particle::PathGenerator * generator, double increment)
+    Trajectory::Trajectory(particle::PathUniqueGenerator * generator, double increment)
     : _generator(generator), 
       _vbo(this->_vao, {layout::POSITION, layout::COLOR}), 
       _increment(increment),
diff --git a/ParticleGenerator/src/Scene/Scenes/Trajectory.hpp b/ParticleGenerator/src/Scene/Scenes/Trajectory.hpp
index c9a1d6cf3a6dc648087c3ef566a31cdf134bfcee..8e1537e571a286ce95b4018fcf9a33978d754076 100644
--- a/ParticleGenerator/src/Scene/Scenes/Trajectory.hpp
+++ b/ParticleGenerator/src/Scene/Scenes/Trajectory.hpp
@@ -1,14 +1,14 @@
 #pragma once
 
 #include "../../Renderer/Renderer.hpp"
-#include "../../Particle/generator/PathGenerator.hpp"
+#include "../../Particle/generator/PathUniqueGenerator.hpp"
 #include "../../Interface/Scene/Trajectory.hpp"
 #include "../Scene.hpp"
 
 namespace pg::scene {
     class Trajectory : public Scene {
         private:
-            particle::PathGenerator * _generator;
+            particle::PathUniqueGenerator * _generator;
             VertexArray _vao;
             VerticeBuffer _vbo;
             Program _program;
@@ -22,9 +22,9 @@ namespace pg::scene {
             interface::Trajectory _interface;
 
         public:
-            Trajectory(particle::PathGenerator *, double = 0.01f);
+            Trajectory(particle::PathUniqueGenerator *, double = 0.01f);
 
-            inline particle::PathGenerator * getGenerator() const {return this->_generator;}
+            inline particle::PathUniqueGenerator * getGenerator() const {return this->_generator;}
             inline double getIncrement() const {return this->_increment;}
             inline const glm::vec4 & getColor() const {return this->_color;}
             inline float getPointSize() const {return this->_pointSize;}