diff --git a/examples/asc_test/master.py b/examples/asc_test/master.py
index 118a64ec0f598fe475bbb038c99a7fd9964fa03b..826c6070b2d9dac30f85e2281b321f2a06bd7189 100644
--- a/examples/asc_test/master.py
+++ b/examples/asc_test/master.py
@@ -1,72 +1,205 @@
 from pykat import finesse
 from pykat.commands import *
-import pylab as pl
+#import pylab as pl
 import copy
-
-print """
---------------------------------------------------------------
-Example file for using PyKat to automate Finesse simulations
-Finesse: http://www.gwoptics.org/finesse
-PyKat:   https://pypi.python.org/pypi/PyKat/
-
-The file runs through the various pykat files which are used
-to generate the Finesse results reported in the document:
-`Comparing Finesse simulations, analytical solutions and OSCAR 
-simulations of Fabry-Perot alignment signals', LIGO-T1300345
-
-Andreas Freise 06.12.2013
---------------------------------------------------------------
-"""
-
-
-kat = finesse.kat(tempdir=".",tempname="test")
-#kat = finesse.kat()
-kat.verbose = False
-kat.loadKatFile('asc_base.kat')
-kat.maxtem=3
-Lambda=1064.0e-9
-
-
-print "--------------------------------------------------------"
-print " 1. tunes ETM position to find resonance"
-import asc_resonance 
-kat.ETM.phi=asc_resonance.run(kat)
-
-print "--------------------------------------------------------"
-print " 2. print sideband and carrier powers/amplitudes"
-import asc_powers 
-asc_powers.run(kat)
-
-print "--------------------------------------------------------"
-print " 3. determine the optimal phase for the PDH signal"
-import asc_pd_phase
-(p_phase, q_phase) = asc_pd_phase.run(kat)
-
-# setting demodulation phase
-code_det = """
-pd1 PDrefl_p 9M 0 nWFS1
-scale 2 PDrefl_p
-pd1 PDrefl_q 9M 90 nWFS1
-scale 2 PDrefl_q
-"""
-kat.parseKatCode(code_det)
-kat.PDrefl_p.phi[0]=p_phase
-kat.PDrefl_q.phi[0]=q_phase
-
-print "--------------------------------------------------------"
-print " 4. adding a 0.1nm offset to ETM and compute PDH signal"
-phi0=kat.ETM.phi
-kat.ETM.phi=phi0 + 0.1/1064.0*360
-print " new ETM phi tuning = %g " % kat.ETM.phi
-
-import asc_pd_signal
-(pd_p, pd_q) = asc_pd_signal.run(kat)
-print " PDH inphase     = %e " % pd_p
-print " PDH quadrtature = %e " % pd_q
-
-
-
-
-
-
+import shelve
+import sys
+import scipy.optimize
+
+
+def main():
+
+    print """
+    --------------------------------------------------------------
+    Example file for using PyKat to automate Finesse simulations
+    Finesse: http://www.gwoptics.org/finesse
+    PyKat:   https://pypi.python.org/pypi/PyKat/
+    
+    The file runs through the various pykat files which are used
+    to generate the Finesse results reported in the document:
+    `Comparing Finesse simulations, analytical solutions and OSCAR 
+    simulations of Fabry-Perot alignment signals', LIGO-T1300345
+    
+    This file is part of a collection.
+    
+    Andreas Freise 06.12.2013
+    --------------------------------------------------------------
+    """
+    
+    
+    kat = finesse.kat()
+    # or, for debugging we might need to see the file:
+    #kat = finesse.kat(tempdir=".",tempname="test")
+    kat.verbose = False
+    kat.loadKatFile('asc_base.kat')
+    kat.maxtem=3
+    Lambda=1064.0e-9
+    result = {}
+    
+    print "--------------------------------------------------------"
+    print " 1. tunes ETM position to find resonance"
+    kat.ETM.phi=resonance(kat)
+    
+    print "--------------------------------------------------------"
+    print " 2. print sideband and carrier powers/amplitudes"
+    powers(kat)
+    
+    print "--------------------------------------------------------"
+    print " 3. determine the optimal phase for the PDH signal"
+    (result['p_phase'], result['q_phase']) = pd_phase(kat)
+    
+    # setting demodulation phase
+    code_det = """
+    pd1 PDrefl_p 9M 0 nWFS1
+    scale 2 PDrefl_p
+    pd1 PDrefl_q 9M 90 nWFS1
+    scale 2 PDrefl_q
+    """
+    kat.parseKatCode(code_det)
+    kat.PDrefl_p.phi[0]=result['p_phase']
+    kat.PDrefl_q.phi[0]=result['q_phase']
+    
+    print "--------------------------------------------------------"
+    print " 4. adding a 0.1nm offset to ETM and compute PDH signal"
+    result['phi_tuned']=float(kat.ETM.phi)
+    result['phi_detuned'] = result['phi_tuned'] + 0.1/1064.0*360
+    
+    kat.ETM.phi=result['phi_detuned']
+    print " new ETM phi tuning = %g " % kat.ETM.phi
+
+    (result['pd_p'], result['pd_q']) = pd_signal(kat)
+    print " PDH inphase     = %e " % result['pd_p']
+    print " PDH quadrtature = %e " % result['pd_q']
+    
+    print "--------------------------------------------------------"
+    print " Saving results in temp. files to be read by master2.py"
+    tmpkatfile = "asc_base2.kat"
+    tmpresultfile = "myshelf1.dat"
+    print " kat object saved in: {0}".format(tmpkatfile)
+    print " current results saved in: {0}".format(tmpresultfile)
+    # first the current kat file
+    kat.saveScript(tmpkatfile)
+    # now the result variables:
+    tmpfile = shelve.open(tmpresultfile)
+    tmpfile['result']=result
+    tmpfile.close()
+
+
+    
+#-------------------------------------------------------------------
+#-------------------------------------------------------------------
+#-------------------------------------------------------------------
+
+
+def pd_signal(tmpkat):
+
+    kat = copy.deepcopy(tmpkat)
+
+    code1="yaxis abs"
+    kat.parseKatCode(code1)
+    kat.noxaxis = True
+    
+    out = kat.run(printout=0,printerr=0)
+    return (out.y[0], out.y[1])
+    
+def pd_phase(tmpkat):
+
+    kat = copy.deepcopy(tmpkat)
+    
+    code_det = """
+    pd1 PDrefl_q 9M 90 nWFS1
+    %scale 2 PDrefl_q
+    """
+    
+    kat.parseKatCode(code_det)
+    kat.noxaxis= True
+
+    # function for root finding
+    def PD_q_test(x):
+        kat.PDrefl_q.phi[0]=x
+        out = kat.run(printout=0,printerr=0)
+        print '\r root finding: function value %g                    ' % out.y,
+        sys.stdout.flush()
+        return out.y
+
+    # do root finding
+    xtol=1e-8
+    (result, info)=scipy.optimize.bisect(PD_q_test,80.0,100.0, xtol=xtol, maxiter=500, full_output=True)
+
+    print ""
+    if info.converged:
+        p_phase=result-90.0
+        q_phase=result
+        print " Root has been found:"
+        print " p_phase %8f" % (p_phase)
+        print " q_phase %8f" % (q_phase)
+        print " (%d iterations, %g tolerance)" % (info.iterations, xtol)
+        return (p_phase, q_phase)
+    else:
+        raise Exception("Root has not been found")
+        
+
+def powers(tmpkat):
+
+    kat = copy.deepcopy(tmpkat)
+    
+    code1 = """
+    ad EOM_up 9M nEOM1
+    ad EOM_low -9M nEOM1
+    pd cav_pow nITM2
+    ad cav_c 0 nITM2
+    ad WFS1_u  9M nWFS1
+    ad WFS1_l -9M nWFS1
+    ad WFS1_c  0  nWFS1
+    ad WFS2_u  9M nWFS2
+    ad WFS2_l -9M nWFS2
+    ad WFS2_c   0 nWFS2
+    noxaxis
+    """
+
+    kat.parseKatCode(code1)
+
+    out = kat.run(printout=0,printerr=0)
+
+    code1 = code1.split("\n")
+    for i in range(len(out.y)):
+        print " %8s: %.4e" % (out.ylabels[i], out.y[i])
+ 
+
+def resonance(tmpkat):
+    kat = copy.deepcopy(tmpkat)
+    
+    code1 = """
+    ad carr2 0 nITM1*
+    ad carr3 0 nITM2
+    yaxis deg
+    """
+    kat.parseKatCode(code1)
+    kat.noxaxis = True
+    
+    # function for root finding
+    def carrier_resonance(x):
+        kat.ETM.phi=x
+        out = kat.run(printout=0,printerr=0)
+        phase = (out.y[0]-out.y[1]-90)%360-180
+        print '\r root finding: function value %g                    ' % phase ,
+        sys.stdout.flush()
+        return phase
+    
+    # do root finding
+    xtol=1e-8
+    (result, info)=scipy.optimize.bisect(carrier_resonance,0.0,40.0, xtol=xtol, maxiter=500, full_output=True)
+    
+    print ""
+    if info.converged:
+        print " Root has been found:"
+        print " ETM phi %8f" % (result)
+        print " (%d iterations, %g tolerance)" % (info.iterations, xtol)
+        return result
+    else:
+        raise Exception(" Root has not been found")
+        
+
+if __name__ == '__main__':
+    main()
 
diff --git a/examples/asc_test/master2.py b/examples/asc_test/master2.py
new file mode 100644
index 0000000000000000000000000000000000000000..84bcc1a19faa53a1b2db9040087e10b11de0467d
--- /dev/null
+++ b/examples/asc_test/master2.py
@@ -0,0 +1,84 @@
+
+from pykat import finesse
+from pykat.commands import *
+import pylab as pl
+import shelve
+import copy
+
+def main():
+
+    print """
+    --------------------------------------------------------------
+    Example file for using PyKat to automate Finesse simulations
+    Finesse: http://www.gwoptics.org/finesse
+    PyKat:   https://pypi.python.org/pypi/PyKat/
+    
+    The file runs through the various pykat files which are used
+    to generate the Finesse results reported in the document:
+    `Comparing Finesse simulations, analytical solutions and OSCAR 
+    simulations of Fabry-Perot alignment signals', LIGO-T1300345
+    
+    This file is part of a collection.
+    
+    Andreas Freise 06.12.2013
+    --------------------------------------------------------------
+    """
+    
+    # shall we clear the workspace?
+    # %reset -f
+    
+    kat = finesse.kat(tempdir=".",tempname="test")
+    kat.verbose = False
+    
+    tmpresultfile = 'myshelf1.dat'
+    
+    # loading data saved by master.py
+    kat.loadKatFile('asc_base2.kat')
+    try:
+        tmpfile = shelve.open(tmpresultfile)
+        result=tmpfile['result']
+        tmpfile.close()
+    except: raise Exception("Could not open temprary results file {0}".format(tmpresultfile))
+        
+    # overwriting some variables
+    kat.maxtem=3
+    Lambda=1064.0e-9
+    
+    
+    print "--------------------------------------------------------"
+    print " 5. checking wavefront tilt for ITM/ETM tilt of 0.1nrad"
+    
+    
+    out = tilt(kat)
+    #(tilt_l, tilt_u) = asc_tilt.run(kat)
+    
+    kat.ETM.phi=result['phi_tuned']
+    
+
+
+
+def tilt(tmpkat):
+
+    kat = copy.deepcopy(tmpkat)
+
+    
+    code_det = """
+    beam PDrefl_car 0 nWFS2
+    beam PDrefl_up 9M nWFS2
+    beam PDrefl_low -9M nWFS2
+    bp w0y y w0 nWFS2
+    yaxis abs:deg
+    """
+    kat.parseKatCode(code_det)
+    kat.noxaxis = True
+    
+    out = kat.run(printout=0,printerr=0)
+    tilt_l = out.y[0]
+    tilt_u = out.y[0]
+    return (out)
+    #return (tilt_l, tilt_u)
+
+    
+if __name__ == '__main__':
+    main()
+