diff --git a/pykat/gw_detectors/ifo.py b/pykat/gw_detectors/ifo.py
index edfc9040ff300155a110fa0073599de7b00cac36..5cca8df458a0694e32d5312ed51732d22148e78e 100644
--- a/pykat/gw_detectors/ifo.py
+++ b/pykat/gw_detectors/ifo.py
@@ -59,10 +59,7 @@ class aLIGO(object):
             self.kat.loadKatFile(katfile)
             self.rawBlocks.read(katfile)
         else:
-            """
-            if _name not in names: # TODO different files not yet implemented
-                printf("aLIGO name `{}' not recognised, must be 'default', 'LLO' or 'LHO'",_name)
-            """
+            # TODO different files not yet implemented
             if _name != "default":
                 printf("aLIGO name `{}' not recognised, using 'default'",_name)                
             self.kat.loadKatFile(self._data_path+"aLIGO.kat")
@@ -264,7 +261,7 @@ put f1m f $mx1
         make_transparent(kat1,["PRM","SRM"])
         make_transparent(kat1,["ITMY", "ETMY"])
         kat1.BS.setRTL(0.0,1.0,0.0) # set BS refl. for X arm
-        phi, precision = self.scan_to_precision(kat1, self.preARMX, pretune_precision)
+        phi, precision = scan_to_precision(kat1, self.preARMX, pretune_precision)
         phi=round(phi/pretune_precision)*pretune_precision
         phi=round_to_n(phi,5)
         vprint(verbose, "   found max/min at: {} (precision = {:2g})".format(phi, precision))
@@ -275,7 +272,7 @@ put f1m f $mx1
         make_transparent(kat,["PRM","SRM"])
         make_transparent(kat,["ITMX", "ETMX"])
         kat.BS.setRTL(1.0,0.0,0.0) # set BS refl. for Y arm
-        phi, precision = self.scan_to_precision(kat, self.preARMY, pretune_precision)
+        phi, precision = scan_to_precision(kat, self.preARMY, pretune_precision)
         phi=round(phi/pretune_precision)*pretune_precision
         phi=round_to_n(phi,5)
         vprint(verbose, "   found max/min at: {} (precision = {:2g})".format(phi, precision))
@@ -284,7 +281,7 @@ put f1m f $mx1
         vprint(verbose, "   scanning MICH (minimising power)")
         kat = _kat.deepcopy()
         make_transparent(kat,["PRM","SRM"])
-        phi, precision = self.scan_to_precision(kat, self.preMICH, pretune_precision, minmax="min", precision=30.0)
+        phi, precision = scan_to_precision(kat, self.preMICH, pretune_precision, minmax="min", precision=30.0)
         phi=round(phi/pretune_precision)*pretune_precision
         phi=round_to_n(phi,5)
         vprint(verbose, "   found max/min at: {} (precision = {:2g})".format(phi, precision))
@@ -293,7 +290,7 @@ put f1m f $mx1
         vprint(verbose, "   scanning PRCL (maximising power)")
         kat = _kat.deepcopy()
         make_transparent(kat,["SRM"])
-        phi, precision = self.scan_to_precision(kat, self.prePRCL, pretune_precision)
+        phi, precision = scan_to_precision(kat, self.prePRCL, pretune_precision)
         phi=round(phi/pretune_precision)*pretune_precision
         phi=round_to_n(phi,5)
         vprint(verbose, "   found max/min at: {} (precision = {:2g})".format(phi, precision))
@@ -301,20 +298,13 @@ put f1m f $mx1
 
         vprint(verbose, "   scanning SRCL (maximising carrier power, then adding 90 deg)")
         kat = _kat.deepcopy()
-        phi, precision = self.scan_to_precision(kat, self.preSRCL, pretune_precision, phi=0)
+        phi, precision = scan_to_precision(kat, self.preSRCL, pretune_precision, phi=0)
         phi=round(phi/pretune_precision)*pretune_precision
         phi=round_to_n(phi,4)-90.0
         vprint(verbose, "   found max/min at: {} (precision = {:2g})".format(phi, precision))
         self.preSRCL.apply_tuning(_kat,phi)
         print("   ... done")
         
-    def scan_to_precision(self, kat, DOF, pretune_precision, minmax="max", phi=0.0, precision=60.0):
-        while precision>pretune_precision*DOF.scale:
-            out = scan_DOF(kat, DOF, xlimits = [phi-1.5*precision, phi+1.5*precision])
-            phi, precision = find_peak(out, DOF.port.portName, minmax=minmax)
-            #print("** phi= {}".format(phi))
-        return phi, precision
-
     def pretune_status(self, _kat):
         kat = _kat.deepcopy()
         kat.verbose = False
@@ -929,6 +919,17 @@ def set_tunings(kat, tunings):
     for comp in keys:
         kat.components[comp].phi = tunings[comp] 
 
+        
+def scan_to_precision(kat, DOF, pretune_precision, minmax="max", phi=0.0, precision=60.0):
+    """
+    find a maximum or minimum in a DOF within a given range
+    """
+    while precision>pretune_precision*DOF.scale:
+        out = scan_DOF(kat, DOF, xlimits = [phi-1.5*precision, phi+1.5*precision])
+        phi, precision = find_peak(out, DOF.port.portName, minmax=minmax)
+        #print("** phi= {}".format(phi))
+    return phi, precision
+
 def scan_optics_string(_optics, _factors, _varName, linlog="lin", xlimits=[-100, 100], steps=200, axis=1,relative=False):
     optics=make_list_copy(_optics)
     factors=make_list_copy(_factors)