diff --git a/classes/misc/Wind.m b/classes/misc/Wind.m
index 109e646c5deddd970be91fa46814081375be1fea..7fae578553a6ad526da4700dfd5832d65c8be826 100644
--- a/classes/misc/Wind.m
+++ b/classes/misc/Wind.m
@@ -11,17 +11,29 @@ classdef Wind < Config
 %               file
     properties
         altitudes               (1, :)
-
+    end
+   
+    properties(Dependent)
         magnitudeDistribution   (1, :) ... 
-            {mustBeMember(magnitudeDistribution, {'u', 'g'})} = 'u'         % [-] Magnitude distrubution: uniform, gaussian
+            {mustBeMember(magnitudeDistribution, {'u', 'g'})}               % [-] Magnitude distrubution: uniform, gaussian
         azimuthDistribution     (1, :) ...
-            {mustBeMember(azimuthDistribution, {'u', 'g'})} = 'u'           % [-] Azimuth   distrubution: uniform, gaussian
+            {mustBeMember(azimuthDistribution, {'u', 'g'})}                 % [-] Azimuth   distrubution: uniform, gaussian
         elevationDistribution   (1, :) ... 
-            {mustBeMember(elevationDistribution, {'u', 'g'})} = 'u'         % [-] Elevation distrubution: uniform, gaussian
+            {mustBeMember(elevationDistribution, {'u', 'g'})}               % [-] Elevation distrubution: uniform, gaussian
         magnitudeParameters     (2, :)                                      % [m/s] Distribution parameters: [min; max], [mu; sigma]
         azimuthParameters       (2, :)                                      % [deg] Distribution parameters: [min; max], [mu; sigma]
         elevationParameters     (2, :)                                      % [deg] Distribution parameters: [min; max], [mu; sigma]
     end
+
+    properties(Access = private)
+        MAGNITUDE_DISTRIBUTION  = 'u'
+        AZIMUTH_DISTRIBUTION    = 'u'
+        ELEVATION_DISTRIBUTION  = 'u'
+
+        MAGNITUDE_PARAMETERS
+        AZIMUTH_PARAMETERS
+        ELEVATION_PARAMETERS
+    end
     
     properties(SetAccess = private)
         azimuth
@@ -34,6 +46,85 @@ classdef Wind < Config
         variableName = 'windCustom'
     end
     
+
+    methods
+        function value = get.magnitudeDistribution(obj)
+            value = obj.MAGNITUDE_DISTRIBUTION;
+        end
+
+        function value = get.azimuthDistribution(obj)
+            value = obj.AZIMUTH_DISTRIBUTION;
+        end
+
+        function value = get.elevationDistribution(obj)
+            value = obj.ELEVATION_DISTRIBUTION;
+        end
+
+        function value = get.magnitudeParameters(obj)
+            value = obj.MAGNITUDE_PARAMETERS;
+        end
+
+        function value = get.azimuthParameters(obj)
+            value = obj.AZIMUTH_PARAMETERS;
+        end
+
+        function value = get.elevationParameters(obj)
+            value = obj.ELEVATION_PARAMETERS;
+        end
+
+        function obj = set.magnitudeDistribution(obj, value)
+            obj.MAGNITUDE_DISTRIBUTION = value;
+            if ~isempty(obj.MAGNITUDE_PARAMETERS)
+                obj = obj.updateElevation();
+                obj.magnitude = obj.updateDistribution(value, ...
+                    obj.MAGNITUDE_PARAMETERS);
+            end
+        end
+
+        function obj = set.magnitudeParameters(obj, value)
+            obj.MAGNITUDE_PARAMETERS = value;
+            if ~isempty(obj.MAGNITUDE_DISTRIBUTION)
+                obj = obj.updateElevation();
+                obj.magnitude = obj.updateDistribution(obj.MAGNITUDE_DISTRIBUTION, ...
+                    value);
+            end
+        end
+
+        function obj = set.azimuthDistribution(obj, value)
+            obj.AZIMUTH_DISTRIBUTION = value;
+            if ~isempty(obj.AZIMUTH_PARAMETERS)
+                obj = obj.updateElevation();
+                obj.azimuth = obj.updateDistribution(value, ...
+                    obj.AZIMUTH_PARAMETERS);
+            end
+        end
+
+        function obj = set.azimuthParameters(obj, value)
+            obj.AZIMUTH_PARAMETERS = value;
+            if ~isempty(obj.AZIMUTH_DISTRIBUTION)
+                obj = obj.updateElevation();
+                obj.azimuth = obj.updateDistribution(obj.AZIMUTH_DISTRIBUTION, ...
+                    value);
+            end
+        end
+
+        function obj = set.elevationDistribution(obj, value)
+            obj.ELEVATION_DISTRIBUTION = value;
+            if ~isempty(obj.ELEVATION_PARAMETERS)
+                obj.elevation = obj.updateDistribution(value, ...
+                    obj.ELEVATION_PARAMETERS);
+            end
+        end
+
+        function obj = set.elevationParameters(obj, value)
+            obj.ELEVATION_PARAMETERS = value;
+            if ~isempty(obj.ELEVATION_DISTRIBUTION)
+                obj.elevation = obj.updateDistribution(obj.ELEVATION_DISTRIBUTION, ...
+                    value);
+            end
+        end
+    end
+
     methods
         function obj = Wind(mission, varIn)
             arguments(Input)
@@ -41,7 +132,7 @@ classdef Wind < Config
                 varIn = []
             end
             obj@Config(mission, varIn);
-            obj = obj.updateAll();
+            %obj = obj.updateAll();
         end
 
         function [uw, vw, ww] = getVels(obj, z)
@@ -60,57 +151,80 @@ classdef Wind < Config
             end
         end
 
-        function obj = updateAll(obj)
-            obj = obj.checkElevation();
+        % function obj = updateAll(obj)
+        %     obj = obj.checkElevation();
+        % 
+        %     s = length(obj.altitudes);
+        %     magVector = nan(1,s);
+        %     azVector = nan(1,s);
+        %     elVector = nan(1,s);
+        %     isUniformMag = strcmp(obj.magnitudeDistribution, "u");
+        %     isUniformAz = strcmp(obj.azimuthDistribution, "u");
+        %     isUniformEl = strcmp(obj.elevationDistribution, "u");
+        % 
+        %     uniformDist = @(val1, val2) rand(1)*(val2 - val1) + val1;
+        %     gaussianDist = @(mean, sigma) normrnd(mean, sigma, 1);
+        % 
+        %     for i = 1:s
+        %         if isUniformMag(i)
+        %             magVector(i) = uniformDist(obj.magnitudeParameters(1,i), ...
+        %                 obj.magnitudeParameters(2,i));
+        %         else
+        %             magVector(i) = gaussianDist(obj.magnitudeParameters(1,i), ...
+        %                 obj.magnitudeParameters(2,i));
+        %         end
+        % 
+        %         if isUniformAz(i)
+        %             azVector(i) = uniformDist(obj.azimuthParameters(1,i), ...
+        %                 obj.azimuthParameters(2,i));
+        %         else
+        %             azVector(i) = gaussianDist(obj.azimuthParameters(1,i), ...
+        %                 obj.azimuthParameters(2,i));
+        %         end
+        % 
+        %         if isUniformEl(i)
+        %             elVector(i) = uniformDist(obj.elevationParameters(1,i), ...
+        %                 obj.elevationParameters(2,i));
+        %         else
+        %             elVector(i) = gaussianDist(obj.elevationParameters(1,i), ...
+        %                 obj.elevationParameters(2,i));
+        %         end
+        %     end
+        % 
+        %     obj.magnitude = magVector;
+        %     obj.azimuth = azVector;
+        %     obj.elevation = elVector;
+        % end
+    end
 
+    methods(Access = private)
+        function vec = updateDistribution(obj, dist, parameters)
             s = length(obj.altitudes);
-            magVector = nan(1,s);
-            azVector = nan(1,s);
-            elVector = nan(1,s);
-            isUniformMag = strcmp(obj.magnitudeDistribution, "u");
-            isUniformAz = strcmp(obj.azimuthDistribution, "u");
-            isUniformEl = strcmp(obj.elevationDistribution, "u");
-            
+            vec = nan(1,s);
+            isUniform = strcmp(dist, "u");
+
             uniformDist = @(val1, val2) rand(1)*(val2 - val1) + val1;
             gaussianDist = @(mean, sigma) normrnd(mean, sigma, 1);
 
             for i = 1:s
-                if isUniformMag(i)
-                    magVector(i) = uniformDist(obj.magnitudeParameters(1,i), ...
-                        obj.magnitudeParameters(2,i));
-                else
-                    magVector(i) = gaussianDist(obj.magnitudeParameters(1,i), ...
-                        obj.magnitudeParameters(2,i));
-                end
-                
-                if isUniformAz(i)
-                    azVector(i) = uniformDist(obj.azimuthParameters(1,i), ...
-                        obj.azimuthParameters(2,i));
-                else
-                    azVector(i) = gaussianDist(obj.azimuthParameters(1,i), ...
-                        obj.azimuthParameters(2,i));
-                end
-
-                if isUniformEl(i)
-                    elVector(i) = uniformDist(obj.elevationParameters(1,i), ...
-                        obj.elevationParameters(2,i));
+                if isUniform(i)
+                    vec(i) = uniformDist(parameters(1,i), parameters(2,i));
                 else
-                    elVector(i) = gaussianDist(obj.elevationParameters(1,i), ...
-                        obj.elevationParameters(2,i));
+                    vec(i) = gaussianDist(parameters(1,i), parameters(2,i));
                 end
             end
-            
-            obj.magnitude = magVector;
-            obj.azimuth = azVector;
-            obj.elevation = elVector;
         end
 
-        function obj = checkElevation(obj)
-            if any(size(obj.elevationDistribution) ~= size(obj.azimuthDistribution))
-                obj.elevationDistribution = repmat("u", size(obj.azimuthDistribution));
+        function obj = updateElevation(obj)
+            if any(size(obj.ELEVATION_DISTRIBUTION) ~= size(obj.AZIMUTH_DISTRIBUTION))
+                obj.ELEVATION_DISTRIBUTION = repmat("u", size(obj.AZIMUTH_DISTRIBUTION));
             end
-            if isempty(obj.elevationParameters)
-                obj.elevationParameters = zeros(size(obj.azimuthParameters));
+
+            if isempty(obj.ELEVATION_PARAMETERS) && ~isempty(obj.AZIMUTH_PARAMETERS)
+                obj.ELEVATION_PARAMETERS = zeros(size(obj.AZIMUTH_PARAMETERS));
+
+                obj.elevation = obj.updateDistribution(obj.ELEVATION_DISTRIBUTION, ...
+                    obj.ELEVATION_PARAMETERS);
             end
         end
     end