diff --git a/RTX class/BalazsAperture.m b/RTX class/BalazsAperture.m
index f4f737b04ecbe9b9b909532f5304b7461a4d0ef3..b8ccb7bbbe4d5528996f97c7090ba24afe41713e 100644
--- a/RTX class/BalazsAperture.m	
+++ b/RTX class/BalazsAperture.m	
@@ -24,6 +24,15 @@ classdef BalazsAperture < Aperture
                 obj.collisions(i) = obj.collisions(i) + exp(1i*phase);
             end
         end
-      
+        
+        function plotApertureField(obj)
+            histogram = obj.getCollisionHistogram();
+            figure;            
+            x = linspace(-obj.size/2, obj.size/2, length(histogram));
+            plot(x, abs(histogram));
+            title("Apertúrán áthaladó sugarak eloszlása");
+            xlabel("Pozíció");
+            ylabel("Sugarak száma");
+        end      
     end
 end
diff --git a/RTX class/FarField.m b/RTX class/FarField.m
index 78f176b3d2600c5932d12b631335f629f35bf99e..f736e1fda7b6a3e0107cf9b50e746170f7815376 100644
--- a/RTX class/FarField.m	
+++ b/RTX class/FarField.m	
@@ -1,42 +1,68 @@
-classdef FarField
+classdef FarField < handle 
     
     properties
-
+        field = [];
+        aperture Aperture;
+        wavelength;
+        theta;
+        nFi;
     end
     
-    methods (Static)
-        function field = CalculateFarField(ntheta, nfi, apertureSize, wavelength, histogram)            
+    methods
+        function obj = FarField(aperture, theta, nFi, wavelength)
+            obj.aperture = aperture;
+            obj.wavelength = wavelength;
+            obj.theta = theta;
+            obj.nFi = nFi;
+        end
+        
+        function field = calculate(obj)            
             progressBar2 = waitbar(0,'Calculating far field...','Name','Calculating far field...',...
                 'CreateCancelBtn','setappdata(gcbf,''canceling'',1)');
             setappdata(progressBar2,'canceling',0);
-            stepSize = ntheta/100;
+            nTheta = length(obj.theta);
+            stepSize = nTheta/100;
             
-            field = zeros(1, ntheta);
-            theta = linspace(-pi/6, pi/6, ntheta);
-            fi = linspace(0, 2*pi, nfi);
+            histogram = obj.aperture. getCollisionHistogram();
+            field = zeros(1, nTheta);
+            fi = linspace(0, 2*pi, obj.nFi);
             nr = floor(length(histogram)/2);
-            r = linspace(0, apertureSize/2, nr);
-            c1 = (apertureSize/(2*nr))*2*pi/nfi;
-            c2 = 1i*2*pi/wavelength;            
+            r = linspace(0, obj.aperture.size/2, nr);
+            c1 = (obj.aperture.size/(2*nr))*2*pi/obj.nFi;
+            c2 = 1i*2*pi/obj.wavelength;            
 
-            for i = 1:ntheta
+            for i = 1:nTheta
                 if getappdata(progressBar2,'canceling') 
                     break; 
                 end
                 if mod(i, stepSize) == 0
-                    waitbar(i/ntheta,progressBar2,sprintf('Calculating far field... [%0.0f%%]',i/ntheta*100));
+                    waitbar(i/nTheta,progressBar2,sprintf('Calculating far field... [%0.0f%%]',i/nTheta*100));
                 end
-                c3 = c2*sin(theta(i));
+                c3 = c2*sin(obj.theta(i));
                 for j = 1:nr
                     area = r(j) * c1;
                     c4 = c3*r(j);
                     ind = 2*nr-j+1;
-                    for k = 1:nfi                        
+                    for k = 1:obj.nFi                        
                         field(i) = field(i) + histogram(ind)*exp(c4*sin(fi(k)))*area;                  
                     end
                 end
             end
+            obj.field = field;
             delete(progressBar2)
         end
+        
+        function plot(obj)
+            if isempty(obj.field)
+                obj.calculate();
+            end
+            figure;
+            y = abs(obj.field);
+            y = y/max(y);
+            plot(obj.theta*180/pi, 20*log10(y));
+            title("Távoltér");
+            xlabel("\Theta [°]");
+            ylabel("S [dB]");
+        end        
     end
 end
diff --git a/RTX class/RTX.m b/RTX class/RTX.m
index 0f5e4faef7f7115c91762390e7c22049f029da62..5666fd637140dbeb324c80b19330cba8ed0c6299 100644
--- a/RTX class/RTX.m	
+++ b/RTX class/RTX.m	
@@ -6,12 +6,11 @@ classdef RTX < handle
         reflectors Barrier;
         aperture Aperture;
         antenna Antenna = Antenna(Vect(1, 0));
+        farField FarField;
         wavelength double = 1;
         nRay = 10000; 
         rays Ray;
         traces Trace;
-        histogram;
-        field;
     end
     
     methods
@@ -47,14 +46,13 @@ classdef RTX < handle
                 end
                 obj.traces(j) = Trace(j, obj.rays(j), obj.wavelength, [obj.reflectors obj.aperture], maxCollision);
             end
-            obj.histogram = obj.aperture.getCollisionHistogram();
             traces = obj.traces;
             delete(progBar);
         end
         
-        function field = calculateFarField(obj, nTheta, nFi)
+        function field = calculateFarField(obj, theta, nFi)
             if nargin < 2
-                nTheta = 1000;
+                theta = linspace(-pi/6, pi/6, 1000);
             end
             if nargin < 3
                 nFi = 500;
@@ -62,32 +60,25 @@ classdef RTX < handle
             if isempty(obj.traces)
                 obj.trace();
             end
-            obj.field = FarField.CalculateFarField(nTheta, nFi, obj.aperture.size, obj.wavelength, obj.histogram);
-            field = obj.field;
+            obj.farField = FarField(obj.aperture, theta, nFi, obj.wavelength);
+            field = obj.farField.calculate();
         end
         
         function plotApertureField(obj)
-            if isempty(obj.histogram)
+           if isempty(obj.aperture.getCollisionHistogram())
                 obj.trace();
-            end
-            figure;            
-            x = linspace(-obj.aperture.size/2, obj.aperture.size/2, length(obj.histogram));
-            plot(x, abs(obj.histogram));
-            title("Apertúrán áthaladó sugarak eloszlása");
-            xlabel("Pozíció");
-            ylabel("Sugarak száma");
+           end
+           obj.aperture.plotApertureField();
         end
         
         function plotFarField(obj)
-            if isempty(obj.traces)
+            if isempty(obj.aperture.getCollisionHistogram())
                 obj.trace();
             end
-            if isempty(obj.field)
+            if isempty(obj.farField)
                 obj.calculateFarField();
             end
-            y = abs(obj.field);
-            y = y/max(y);
-            plot(20*log10(y));
+            obj.farField.plot()        
         end       
         
         function plotSetup(obj)
diff --git a/RTX class/rtx_test.m b/RTX class/rtx_test.m
index 444bfb5c2f812b530ef29834081ecb89e45c4f13..661afd23d5d9f267cb8bfa2ea3176365861ec52c 100644
--- a/RTX class/rtx_test.m	
+++ b/RTX class/rtx_test.m	
@@ -8,6 +8,4 @@ wavelength = 3e8/1e9;
 nRay = 1000;
 
 rtx = RTX(reflectors, aperture, antenna, wavelength, nRay);
-rtx.trace();
-rtx.plotApertureField();
 rtx.plotFarField();