diff --git a/src/new/finesse/prepare_files/FT_DR_FP_MICH_initial_tuning.m b/src/new/finesse/prepare_files/FT_DR_FP_MICH_initial_tuning.m
index ed9c011269f6bc98c06a6ba9fdc3d57c8f073ade..e83fb958f4ed9173f99874eba825530d0b5510d3 100644
--- a/src/new/finesse/prepare_files/FT_DR_FP_MICH_initial_tuning.m
+++ b/src/new/finesse/prepare_files/FT_DR_FP_MICH_initial_tuning.m
@@ -95,11 +95,9 @@ function [tunings] = FT_DR_FP_MICH_initial_tuning(infile,outfile,commands,mirror
     relative_err = 1e-2;
     % Number of zooms
     zooms = 3;
-    % Number of points and ranges for the first and second round of scans
-    npoints = 5000;
+    % Number of points and ranges for the scans
+    npoints = 300;
     range = 90;
-    zoom_npoints = 500;
-    zoom_range = 90;
     
     % Initilise Finesse
     FT = FT_init_Finesse();
@@ -132,7 +130,7 @@ function [tunings] = FT_DR_FP_MICH_initial_tuning(infile,outfile,commands,mirror
     npty = nodes{2};
     nas = nodes{3};
     npop = nodes{4};
-    npox = nodes{5};
+    npos = nodes{5};
     
     % Read in the mirror parameters from blocks
     [R_ETMX,T_ETMX,L_ETMX,phi_ETMX] = FT_read_mirror_parameters_from_blocks(blocks,etmx);
@@ -149,27 +147,52 @@ function [tunings] = FT_DR_FP_MICH_initial_tuning(infile,outfile,commands,mirror
     
     % Read in intial maxtem
     maxtem = FT_read_maxtem_from_blocks(blocks);
-    % Start off with maxtem at minimum (i.e. max order of tem modes)
-    [gc,max_order] = FT_read_TEM_from_blocks(blocks);
-    blocks = FT_replace_maxtem_in_blocks(blocks,max_order);
+    if isnan(maxtem)==0
+        % Start off with maxtem at minimum (i.e. max order of tem modes)
+        [gc,max_order] = FT_read_TEM_from_blocks(blocks);
+        blocks = FT_replace_maxtem_in_blocks(blocks,max_order);
+    end
     
-    % Perform tunigns twice, once with maxtem 0 and once with the value for
-    % maxtem set in infile    
-    for i=1:2
-        %======================================================================
-        %============ 1. Tuning arm cavities to be on resonance ===============
-        %======================================================================
-        % Setting R_PRM=0 
-        if ~strcmp(prm,'off')
+	% Setting R_PRM=0 
+	if ~strcmp(prm,'off')
+        [bi,li,mtype_prm] = FT_find_mirror_in_blocks(blocks,prm);
+        if mtype_prm==0 || mtype_prm==2
             blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'R',0);
+        end
+        if mtype_prm<2
             blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'T',1);
         end
+        if mtype_prm>0
+            blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'L',0);
+        end
+	end
     
-        % Setting R_SRM=0
-        if ~strcmp(srm,'off')
+	% Setting R_SRM=0
+	if ~strcmp(srm,'off')
+        [bi,li,mtype_srm] = FT_find_mirror_in_blocks(blocks,srm);
+        if mtype_srm==0 || mtype_srm==2
             blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'R',0);
+        end
+        if mtype_srm<2
             blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'T',1);
         end
+        if mtype_srm>0
+            blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'L',0);
+        end
+    end
+    
+    if strcmp(srm,'off')
+        ntimes = 2;
+    else
+        ntimes = 3;
+    end
+    
+    % Perform tunigns twice, once with maxtem 0 and once with the value for
+    % maxtem set in infile    
+    for i=1:ntimes
+        %======================================================================
+        %============ 1. Tuning arm cavities to be on resonance ===============
+        %======================================================================
         %----------------------------------------------------------------------
         % Tuning the x arm cavity
         tuning = phi_ETMX;
@@ -223,9 +246,15 @@ function [tunings] = FT_DR_FP_MICH_initial_tuning(infile,outfile,commands,mirror
             %======= 3. Tuning PRM to maximise power at POP port ==========
             %==============================================================
             % Set PRM reflectivity back to normal
-            blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'R',R_PRM);
-            blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'T',T_PRM);
-        
+            if mtype_prm==0 || mtype_prm==2
+                blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'R',R_PRM);
+            end
+            if mtype_prm<2
+                blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'T',T_PRM);
+            end
+            if mtype_prm>0
+                blocks = FT_replace_mirror_parameter_in_blocks(blocks,prm,'L',L_PRM);
+            end
             % Tuning the power-recyling cavity
             tuning = phi_PRM;
             tuning = scan_for_operating_point(FT,Run1,blocks,prm,npop,tuning,range,npoints,'max',relative_err,zooms,debug(4));
@@ -245,36 +274,42 @@ function [tunings] = FT_DR_FP_MICH_initial_tuning(infile,outfile,commands,mirror
         
         % HOMs can greatly effect SRM tuning, so return to original maxtem
         % at this point.
-        blocks = FT_replace_maxtem_in_blocks(blocks,maxtem);
+        if isnan(maxtem)==0
+            blocks = FT_replace_maxtem_in_blocks(blocks,maxtem);
+        end
         
         if ~strcmp(srm,'off')
-            %==============================================================
-            %======= 4. Tuning SRM to maximise power at POX port ==========
-            %==============================================================
-            % Set SRM reflectivity back to normal
-            blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'R',R_SRM);
-            blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'T',T_SRM);
-        
-            % Tuning the signal recycling cavity
-            tuning = phi_SRM;
-            tuning = scan_for_operating_point(FT,Run1,blocks,srm,npox,tuning,range,npoints,'max',relative_err,zooms,debug(4));
+            if i==2
+                %==============================================================
+                %========= 4. Tuning SRM for broadband SRM tuning =============
+                %==============================================================
+                % Set SRM reflectivity back to normal
+                if mtype_srm==0 || mtype_srm==2
+                    blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'R',R_SRM);
+                end
+                if mtype_srm<2
+                    blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'T',T_SRM);
+                end
+                if mtype_srm>0
+                    blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'L',L_SRM);
+                end
+                % Tuning the signal recycling cavity
+                tuning = phi_SRM;
+                tuning = scan_for_operating_point(FT,Run1,blocks,srm,npos,tuning,range,npoints,'min',relative_err,zooms,debug(4));
     
-            if abs(tuning) < tuning_threshold
-                tuning=0.0;
-            end
+                if abs(tuning) < tuning_threshold
+                    tuning=0.0;
+                end
     
-            % Setting BS tuning
-            phi_SRM = tuning;
-            blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'phi',phi_SRM);
-            fprintf('setting %s tuning to %f\n',srm,phi_SRM);
-            %==============================================================
-            %==============================================================
+                % Setting BS tuning
+                phi_SRM = tuning+srm_tuning;
+                blocks = FT_replace_mirror_parameter_in_blocks(blocks,srm,'phi',phi_SRM);
+                fprintf('setting %s tuning to %f\n',srm,phi_SRM);
+                %==============================================================
+                %==============================================================
+            end
         end
         
-        % And use smaller range and number of points
-        range = zoom_range;
-        npoints = zoom_npoints;
-        
     end
     
     % Store final tunings
@@ -344,9 +379,9 @@ function [tuning] = scan_for_operating_point(FT,Run,blocks,mirror,node,x0,range,
         
         % Find the operating point
         if strcmp(op_point,'max')
-            new_tuning = Run.x(max(find(Run.y==max(Run.y))));
+            new_tuning = Run.x(max(find(Run.y(:,1)==max(Run.y(:,1)))));
         elseif strcmp(op_point,'min')
-            new_tuning = Run.x(max(find(Run.y==min(Run.y))));
+            new_tuning = Run.x(max(find(Run.y(:,1)==min(Run.y(:,1)))));
         end
         
         % Relaive difference from previous operating point
@@ -362,7 +397,7 @@ function [tuning] = scan_for_operating_point(FT,Run,blocks,mirror,node,x0,range,
         % Plot scan if required
         if verbose==1
             figure
-            semilogy(Run.x,Run.y)
+            semilogy(Run.x,Run.y(:,1))
             xlabel(sprintf('%s tuning [phi]',mirror))
             ylabel(sprintf('carrier amplitude (%s) [a.u.]',node))
             drawnow;