diff --git a/examples/aligo/FFT_ArmCavity_precompute.py b/examples/aligo/FFT_ArmCavity_precompute.py
index cb65252979f4a6f7d02bb2a6d3f744c03e77defa..a8ad81da7ab4638b1ebdaa997ebc0e5f8bd86650 100644
--- a/examples/aligo/FFT_ArmCavity_precompute.py
+++ b/examples/aligo/FFT_ArmCavity_precompute.py
@@ -16,6 +16,7 @@ from pykat.external.progressbar import ProgressBar, ETA, Percentage, Bar
 from pykat.optics.maps import *
 from pykat.optics.gaussian_beams import HG_beam, beam_param
 from pykat.optics.fft import *
+from pykat.utilities.plotting.tools import plot_field, plot_propagation
 
 from aligo import *
 
@@ -64,7 +65,7 @@ def main():
 	# setup grid for FFT propagation
 	[xpoints,ypoints] = surface.size
 	xsize = xpoints * surface.step_size[0]
-	ysize = 0.05 * surface.step_size[0]
+	ysize = ypoints * surface.step_size[0]
 	xoffset = 0.0
 	yoffset = 0.0
 
@@ -74,24 +75,38 @@ def main():
 	y = shape.yaxis
 
 	result['shape']=shape
-	
+	global gx, gy, beam, laser
 	# generate roughly mode-matched input beam
 	gx = beam_param(w0=0.012, z=-1834.0)
 	gy = gx
 	beam = HG_beam(gx,gy,0,0)
 	laser = beam.Unm(x,y) 
 
+	# some debugging plots
+	#plot_field(laser)
+	#Lrange= np.linspace(0,4000,200)
+	#plot_propagation(laser, shape, Lambda, 0, 1, Lrange, 1)
+
+	precompute_roundtrips(shape, laser)
+
+	# now save any `result' variables:
+	tmpfile = shelve.open(tmpresultfile)
+	tmpfile['result']=result
+	tmpfile.close()
+
+		
+def precompute_roundtrips(shape, laser):
 	R=aligo.etmX_R*aligo.itmX_R
 	Loss = 1-R
 	accuracy=100E-6
 	print("cavity loss: {0}".format(Loss))	
 	N=int(required_roundtrips(Loss,accuracy))
 	print("required rountrips: {0} (for accuracy of {1})".format(N, accuracy))
-	print("Estimated memory requirement: {0:.2f} MBytes".format(2*8*xpoints*ypoints*N/1024.0/1024.0))
+	print("Estimated memory requirement: {0:.2f} MBytes".format(2*8*shape.xpoints*shape.ypoints*N/1024.0/1024.0))
 
 	global f_round
-	f_circ=np.zeros((xpoints,ypoints),dtype=np.complex128)
-	f_round=np.zeros((xpoints,ypoints,N),dtype=np.complex128)
+	f_circ=np.zeros((shape.xpoints,shape.ypoints),dtype=np.complex128)
+	f_round=np.zeros((shape.xpoints,shape.ypoints,N),dtype=np.complex128)
       
 	# move impinging field into cavity
 	f_circ = np.sqrt(aligo.itmX_T) * laser
@@ -103,10 +118,10 @@ def main():
 	p = ProgressBar(maxval=N, widgets=["computing f_circ:", Percentage(),"|", ETA(), Bar()])
 
 	for n in range(2,N):
-		f_circ = FFT_propagate(f_circ,shape,Lambda,aligo.LX,1) 
-		f_circ = aligo.etmX_r*FFT_apply_map(f_circ, etm, Lambda)
-		f_circ = FFT_propagate(f_circ,shape,Lambda,aligo.LX,1) 
-		f_circ = aligo.itmX_r*FFT_apply_map(f_circ, itm, Lambda)
+		f_circ = FFT_propagate(f_circ,shape,aligo.Lambda,aligo.LX,1) 
+		f_circ = aligo.etmX_r*FFT_apply_map(f_circ, etm, aligo.Lambda)
+		f_circ = FFT_propagate(f_circ,shape,aligo.Lambda,aligo.LX,1) 
+		f_circ = aligo.itmX_r*FFT_apply_map(f_circ, itm, aligo.Lambda)
 		f_round[:,:,n] = f_circ;
 		p.update(n)
 
@@ -115,10 +130,6 @@ def main():
 	timestr = time.strftime("%Y:%m:%d-%H:%M:%S")
 	np.save('fround-'+timestr,f_round)
 
-	# now the result variables:
-	tmpfile = shelve.open(tmpresultfile)
-	tmpfile['result']=result
-	tmpfile.close()
 	
 	
 def FFT_apply_map(field, Map, Lambda):