diff --git a/toSubAps.m b/toSubAps.m
index c5726a0970448d156946f4195b3d0148568fd845..a97cfdd8e78c7befde4e5df56ce933a35225c79e 100644
--- a/toSubAps.m
+++ b/toSubAps.m
@@ -6,14 +6,17 @@ sz = size(data);
 sz = sz(4:end);
 sz(end+1:2) = 1;
 mask = true(sz);
+maxValue = [];
+if isinteger(data); maxValue = intmax(class(data)); end
+
 p = inputParser();
-p.addParameter('name' , ''   , @ischar);
-p.addParameter('shift', 0    , @isnumeric);
-p.addParameter('mask' , mask , @(x) islogical(x)&&isequal(size(x),size(mask)));
-p.addParameter('ext'  , 'png', @ischar);
-p.addParameter('map'  , []   , @(x) isempty(x)||isnumeric(x));
-p.addParameter('alpha', []   , @(x) isempty(x)||isnumeric(x));
-p.addParameter('maxValue', []   , @(x) isempty(x)||isnumeric(x));
+p.addParameter('name'    , ''       , @ischar);
+p.addParameter('shift'   , 0        , @isnumeric);
+p.addParameter('mask'    , mask     , @(x) islogical(x)&&isequal(size(x),size(mask)));
+p.addParameter('ext'     , 'png'    , @ischar);
+p.addParameter('map'     , []       , @(x) isempty(x)||isnumeric(x));
+p.addParameter('alpha'   , []       , @(x) isempty(x)||isnumeric(x));
+p.addParameter('maxValue', maxValue , @(x) isempty(x)||isnumeric(x));
 p.parse(varargin{:});
 
 name  = p.Results.name;
@@ -24,34 +27,8 @@ map   = p.Results.map;
 alpha = p.Results.alpha;
 maxValue = p.Results.maxValue;
 
-if ~startsWith(ext,'.')
-    ext = ['.',ext];
-end
-
-if ~exist(Dir,'dir')
-    mkdir(Dir)
-end
-
-switch ext
-    case '.png'
-        if ~isempty(map)
-            fun_write = @(frame,filename) imwrite(frame,map,fullfile(Dir,[filename,'.png']));
-        elseif ~isempty(alpha)
-            fun_write = @(frame,frame_alpha,filename) imwrite(frame,fullfile(Dir,[filename,'.png']),'Alpha',frame_alpha);
-        else
-            fun_write = @(frame,filename) imwrite(frame,fullfile(Dir,[filename,'.png']));
-        end
-    case '.pfm'
-        data = single(data);
-        warning('implicit conversion to single in pfmwrite');
-        fun_write = @(frame,filename) LF.pfmwrite(frame,fullfile(Dir,[filename,'.pfm']));
-    case '.mat'
-        fun_write = @(frame,filename) save(fullfile(Dir,[filename,'.mat']),'disparity',frame);
-    case {'.ppm','.pgm'}
-        fun_write = @(frame,max_value,filename) imwrite(frame,fullfile(Dir,[filename,ext]),'MaxValue',max_value);
-    otherwise
-        fun_write = @(frame,filename) imwrite(frame,fullfile(Dir,[filename,ext]));
-end
+if ~startsWith(ext,'.'); ext = ['.',ext]; end
+if ~exist(Dir,'dir'); mkdir(Dir); end
 
 frames = LF.toSlices(data);
 
@@ -66,39 +43,55 @@ else
     filenames = cellfun(@(index) strjoin([name,index],'_'),indices,'UniformOutput',false);
 end
 
+filenames = cellfun(@(filename) fullfile(Dir,[filename,ext]),filenames,'UniformOutput',false);
+
 frames = frames(mask);
 filenames = filenames(mask);
 
+if ~isempty(alpha)
+    frames_alpha = LF.toSlices(alpha);
+    frames_alpha = frames_alpha(mask);
+end
+
 switch ext
     case '.png'
-        if ~isempty(alpha)
-            frames_alpha = LF.toSlices(alpha);
-            frames_alpha = frames_alpha(mask);
-            cellfun(fun_write,frames,frames_alpha,filenames);
-        else
+        if ~isempty(map)
+            if ~isempty(alpha)
+                fun_write = @(frame,frame_alpha,filename)...
+                    imwrite(frame,filename,'Alpha',frame_alpha);
+                
+                cellfun(fun_write,frames,frames_alpha,filenames);
+            else
+                fun_write = @(frame,filename) imwrite(frame,map,filename);
+                cellfun(fun_write,frames,filenames);
+            end
+        elseif ~isempty(alpha)
+                fun_write = @(frame,frame_alpha,filename)...
+                    imwrite(frame,filename,'Alpha',frame_alpha);
+                
+                cellfun(fun_write,frames,frames_alpha,filenames);
+        else    
+            fun_write = @(frame,filename) imwrite(frame,filename);
             cellfun(fun_write,frames,filenames);
-        end
+        end    
     case '.mat'
         for it = 1:numel(frames)
             disparity = frames{it};
-            filename = fullfile(Dir,[filenames{it},'.mat']);
+            filename = filenames{it};
             save(filename,'disparity');
         end
     case {'.pgm','.ppm'}
-        if isempty(maxValue)
-            if isinteger(frames{1})
-                maxValue = intmax(class(frames{1}));
-            else
-                maxValue = 255;
-            end
-        end
+        fun_write = @(frame,filename) imwrite(frame,filename,'MaxValue',maxValue);
         
-        maxValue = num2cell(maxValue*ones(size(frames)));
-        cellfun(fun_write,frames,maxValue,filenames);
-
+        cellfun(fun_write,frames,filenames);
+    case '.pfm'
+        warning('implicit conversion to single in pfmwrite');
+        
+        fun_write = @(frame,filename) LF.pfmwrite(single(frame),filename);
+        cellfun(fun_write,frames,filenames);
     otherwise
+        fun_write = @(frame,filename) imwrite(frame,filename);
         cellfun(fun_write,frames,filenames);
 end
 
-end
-
+end
\ No newline at end of file