diff --git a/RTX class/Ray.m b/RTX class/Ray.m
index c017f32489c6f66963a7d6f19e0dcd2c9036acae..df985ce10b8154f16cb82afa26a8ba8eac0d4b42 100644
--- a/RTX class/Ray.m	
+++ b/RTX class/Ray.m	
@@ -10,39 +10,5 @@ classdef Ray
                 obj.dir = dir;
             end
         end
-        function t = trace(obj, barriers, maxCol)
-            t = Trace(obj);
-            ncol = 0;
-            for m = 1:maxCol
-                col = Collision;
-                col.collided = false;
-                dist = +Inf;
-                col_barrier = 1;
-                for k = 1:size(barriers,2)
-                    c = barriers(k).collide(t.rays(ncol+1)); % get collision from the 'k'th barrier
-                    if (c.collided)
-                        d = Vect.abs(c.pos - obj.start);
-                        if d < dist
-                            dist = d;
-                            col = c;
-                            col_barrier = k;
-                        end
-                    end
-                end
-                if col.collided
-                    ncol = ncol + 1;
-                    next_ray = Ray(col.pos, col.reflDir);
-                    t = t + next_ray;
-                    barriers(col_barrier).post_collide(col);
-                    if col.stop
-                        t.trace_end();
-                        %Nem tudom ez mire való: rays(m+1).dir = Vect;
-                        break;
-                    end
-                else
-                    break;
-                end
-            end
-        end
     end
 end
diff --git a/RTX class/Trace.m b/RTX class/Trace.m
index 3c5a8cd1cf8f8b1971796b65fb491729714955c1..fb0b15c2e13bfa1779fd872f4aa163afc3649326 100644
--- a/RTX class/Trace.m	
+++ b/RTX class/Trace.m	
@@ -1,6 +1,8 @@
 classdef Trace < handle
  
     properties
+        id;
+        wavelength;
         rays Ray = [];
         length = +inf;
         init_phase = 0;
@@ -8,20 +10,42 @@ classdef Trace < handle
     end
     
     methods
-        function obj = Trace(rays, init_phase)
-            if isvector(rays)
-                obj.rays = rays;
-                return
-            else
-                obj.rays(1) = rays;
+        function obj = Trace(id, init_ray, init_phase, wavelength, barriers, maxCol)
+            obj.id = id;
+            obj.rays(1) = init_ray;
+            obj.init_phase = init_phase;
+            obj.wavelength = wavelength;
+            
+            ncol = 0;
+            for m = 1:maxCol
+                col = Collision;
+                col.collided = false;
+                dist = +Inf;
+                col_barrier = 1;
+                for k = 1:size(barriers,2)
+                    c = barriers(k).collide(obj.rays(ncol+1)); % get collision from the 'k'th barrier
+                    if (c.collided)
+                        d = Vect.abs(c.pos - init_ray.start);
+                        if d < dist
+                            dist = d;
+                            col = c;
+                            col_barrier = k;
+                        end
+                    end
+                end
+                if col.collided
+                    ncol = ncol + 1;
+                    next_ray = Ray(col.pos, col.reflDir);
+                    obj.rays(end+1) = next_ray;
+                    barriers(col_barrier).post_collide(col);
+                    if col.stop
+                        obj.trace_end();
+                        break;
+                    end
+                else
+                    break;
+                end
             end
-            if nargin == 2
-                obj.init_phase = init_phase;
-            end
-        end
-        
-        function p = plus(t,r)
-            p = Trace([t.rays r], t.init_phase);
         end
         
         function length = trace_end(obj)
diff --git a/RTX class/simclass_test.m b/RTX class/simclass_test.m
index 4daa74a9133c0362282a985ea147fcdbcfb9760c..c9ba0752fe8d965b650dfa019b14d51369b28af9 100644
--- a/RTX class/simclass_test.m	
+++ b/RTX class/simclass_test.m	
@@ -17,8 +17,8 @@ figure(1);
 plot(0, 0);
 hold on;
 for k = 1:n_ray
-    t = rays(k).trace(reflectors, 5);
-    %t.plot_trace();
+    t = Trace(k, rays(k), 0, wavelength, reflectors, 5);
+    t.plot_trace();
 end
 plot(start.x, start.y, 'kO', 'MarkerSize', 10);
 for k = 1:size(reflectors, 2)