diff --git a/Doc/UserManual/AppendixListings.tex b/Doc/UserManual/AppendixListings.tex
new file mode 100644
index 0000000000000000000000000000000000000000..85d89975bfac04cb4f9c6309df4d777eb21e8be2
--- /dev/null
+++ b/Doc/UserManual/AppendixListings.tex
@@ -0,0 +1,143 @@
+\newpage{\pagestyle{empty}\cleardoublepage}
+
+
+%\mychapter{1}{Appendix}
+
+\chapter{Listings}
+
+\begin{lstlisting}[caption={Python script of example 1},
+  label=script_ex1,captionpos=b,escapeinside={@}{@} ,language=python,style=eclipse, numbers= none,frame = leftline ,
+      framerule = 2mm ,
+      rulecolor = \color{lightgrey},
+      breaklines = true]
+import sys, os, numpy 
+
+sys.path.append(os.path.abspath(os.path.join(os.path.split(__file__)[0],'..', '..', '..', 'lib')))
+
+from libBornAgainCore import * 
+
+def RunSimulation():
+    #  defining materials 
+    mAmbience = MaterialManager.getHomogeneousMaterial("Air", 0.0, 0.0 ) 
+    mSubstrate = MaterialManager.getHomogeneousMaterial("Substrate",
+    6e-6, 2e-8) 
+    mParticle = MaterialManager.getHomogeneousMaterial("Particle", 6e-4, 2e-8 )
+    # collection of particles 
+    cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer) 
+    cylinder = Particle(mParticle, cylinder_ff) 
+    prism_ff = FormFactorPrism3(5*nanometer, 5*nanometer) 
+    prism = Particle(mParticle, prism_ff) 
+    particle_decoration = ParticleDecoration()  
+    particle_decoration.addParticle(cylinder, 0.0, 0.5)  
+    particle_decoration.addParticle(prism, 0.0, 0.5)  
+    interference = InterferenceFunctionNone()  
+    particle_decoration.addInterferenceFunction(interference)  
+    # air layer with particles and substrate form multi layer 
+    air_layer = Layer(mAmbience)  
+    air_layer.setDecoration(particle_decoration)
+    substrate_layer = Layer(mSubstrate, 0) 
+    multi_layer = MultiLayer()  
+    multi_layer.addLayer(air_layer) 
+    multi_layer.addLayer(substrate_layer) 
+
+    # build and run simulation  
+    simulation = Simulation()  
+    simulation.setDetectorParameters(100,-1.0*degree, 1.0*degree, 
+                                    100, 0.0*degree, 2.0*degree, True) 
+    simulation.setBeamParameters(1.0*angstrom, 0.2*degree, 0.0*degree) 
+    simulation.setSample(multi_layer) 
+    simulation.runSimulation()  
+
+    # retrieving intensity data
+     return GetOutputData(simulation)
+\end{lstlisting}
+
+
+\begin{lstlisting}[caption={Python script of fitting example},
+  label=script_exfit1,captionpos=b,escapeinside={@}{@} ,language=python,style=eclipse, numbers= none,frame = leftline ,
+      framerule = 2mm ,
+      rulecolor = \color{lightgrey},
+      breaklines = true]
+import sys, os, numpy
+import math 
+
+sys.path.append(os.path.abspath(
+                os.path.join(os.path.split(__file__)[0],
+                '..', '..', '..', 'lib')))
+
+from libBornAgainCore import *
+from libBornAgainFit import *
+
+# values we want to find
+cylinder_height = 5.0*nanometer
+cylinder_radius = 5.0*nanometer
+prism3_half_side = 5.0*nanometer
+prism3_height = 5.0*nanometer
+# ----------------------------------
+# create sample : cylinders and prisms in the air on substrate layer
+# ----------------------------------
+def buildSample(): 
+    # defining materials
+    mAmbience = MaterialManager.getHomogeneousMaterial("Air", 0.0, 0.0 )
+    mSubstrate = MaterialManager.getHomogeneousMaterial("Substrate",
+    6e-6, 2e-8 )
+    mParticle = MaterialManager.getHomogeneousMaterial("Particle", 6e-4, 2e-8 )
+    # collection of particles
+    cylinder_ff = FormFactorCylinder(cylinder_height, cylinder_radius)
+    cylinder = Particle(mParticle, cylinder_ff)
+    prism_ff = FormFactorPrism3(prism3_height,  prism3_half_side)
+    prism = Particle(mParticle, prism_ff)
+    particle_decoration = ParticleDecoration()
+    particle_decoration.addParticle(cylinder, 0.0, 0.5)
+    particle_decoration.addParticle(prism,0.0, 0.5)  
+    interference = InterferenceFunctionNone()
+    particle_decoration.addInterferenceFunction(interference)
+    # air layer with particles and substrate form multi layer
+    air_layer = Layer(mAmbience)
+    air_layer.setDecoration(particle_decoration)
+    substrate_layer = Layer(mSubstrate, 0)
+    multi_layer = MultiLayer()
+    multi_layer.addLayer(air_layer)
+    multi_layer.addLayer(substrate_layer)
+    return multi_layer
+# ----------------------------------
+# create sample : input beam and detector - characteristics
+# ----------------------------------
+def createSimulation():
+    simulation = Simulation()
+    simulation.setDetectorParameters(100, 0.0*degree, 2.0*degree,100 , 0.0*degree, 2.0*degree)
+    simulation.setBeamParameters(1.0*angstrom, 0.2*degree, 0.0*degree)
+    return simulation
+# ----------------------------------
+# read "real" data from file
+# ----------------------------------
+def GetRealData():
+    real_data = OutputDataIOFactory.getOutputData('Refdata_fitcylinderprisms.txt')
+    return real_data
+# ----------------------------------
+# run fitting 
+# ----------------------------------
+def run_fitting():
+    sample = buildSample()
+    simulation = createSimulation()
+    simulation.setSample(sample)
+    # get the real data, which is simply results of our simulation with default values
+    real_data = GetRealData()   
+    # run the simulation
+    simulation.runSimulation()    
+    # linking real and numerical (to be fitted) data
+    fitSuite = FitSuite()
+    fitSuite.addSimulationAndRealData(simulation, real_data)  
+    # setting fitting minimizer
+    fitSuite.setMinimizer( MinimizerFactory.createMinimizer("Minuit2","Migrad") ) 
+    # setting fitting parameters
+    fitSuite.addFitParameter("*FormFactorCylinder/height", 4.*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
+    fitSuite.addFitParameter("*FormFactorCylinder/radius", 6.*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
+    fitSuite.addFitParameter("*FormFactorPrism3/height", 4.*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
+    fitSuite.addFitParameter("*FormFactorPrism3/half_side", 6*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
+    # run fit
+    fitSuite.runFit()
+    # print fit results
+    fitSuite.printResults()
+\end{lstlisting}
+
diff --git a/Doc/UserManual/Appendix.tex b/Doc/UserManual/AppendixPhysics.tex
similarity index 100%
rename from Doc/UserManual/Appendix.tex
rename to Doc/UserManual/AppendixPhysics.tex
diff --git a/Doc/UserManual/FittingExamples.tex b/Doc/UserManual/FittingExamples.tex
index 4a2e7eaa8feffac57e79cf683e8c4d19310fc986..5831abfea0af6d27d0a671a9acdcd86336585784 100644
--- a/Doc/UserManual/FittingExamples.tex
+++ b/Doc/UserManual/FittingExamples.tex
@@ -611,93 +611,6 @@ Listing~\ref{script_exfit1}, the text given in~\ref{output_exfit1} should be dis
 screen (generated using \Code{PrintResults}).
 
 
-\begin{lstlisting}[caption={Python script of fitting example},
-  label=script_exfit1,captionpos=b,escapeinside={@}{@} ,language=python,style=eclipse, numbers= none,frame = leftline ,
-      framerule = 2mm ,
-      rulecolor = \color{lightgrey},
-      breaklines = true]
-import sys, os, numpy
-import math 
-
-sys.path.append(os.path.abspath(
-                os.path.join(os.path.split(__file__)[0],
-                '..', '..', '..', 'lib')))
-
-from libBornAgainCore import *
-from libBornAgainFit import *
-
-# values we want to find
-cylinder_height = 5.0*nanometer
-cylinder_radius = 5.0*nanometer
-prism3_half_side = 5.0*nanometer
-prism3_height = 5.0*nanometer
-# ----------------------------------
-# create sample : cylinders and prisms in the air on substrate layer
-# ----------------------------------
-def buildSample(): 
-    # defining materials
-    mAmbience = MaterialManager.getHomogeneousMaterial("Air", 0.0, 0.0 )
-    mSubstrate = MaterialManager.getHomogeneousMaterial("Substrate",
-    6e-6, 2e-8 )
-    mParticle = MaterialManager.getHomogeneousMaterial("Particle", 6e-4, 2e-8 )
-    # collection of particles
-    cylinder_ff = FormFactorCylinder(cylinder_height, cylinder_radius)
-    cylinder = Particle(mParticle, cylinder_ff)
-    prism_ff = FormFactorPrism3(prism3_height,  prism3_half_side)
-    prism = Particle(mParticle, prism_ff)
-    particle_decoration = ParticleDecoration()
-    particle_decoration.addParticle(cylinder, 0.0, 0.5)
-    particle_decoration.addParticle(prism,0.0, 0.5)  
-    interference = InterferenceFunctionNone()
-    particle_decoration.addInterferenceFunction(interference)
-    # air layer with particles and substrate form multi layer
-    air_layer = Layer(mAmbience)
-    air_layer.setDecoration(particle_decoration)
-    substrate_layer = Layer(mSubstrate, 0)
-    multi_layer = MultiLayer()
-    multi_layer.addLayer(air_layer)
-    multi_layer.addLayer(substrate_layer)
-    return multi_layer
-# ----------------------------------
-# create sample : input beam and detector - characteristics
-# ----------------------------------
-def createSimulation():
-    simulation = Simulation()
-    simulation.setDetectorParameters(100, 0.0*degree, 2.0*degree,100 , 0.0*degree, 2.0*degree)
-    simulation.setBeamParameters(1.0*angstrom, 0.2*degree, 0.0*degree)
-    return simulation
-# ----------------------------------
-# read "real" data from file
-# ----------------------------------
-def GetRealData():
-    real_data = OutputDataIOFactory.getOutputData('Refdata_fitcylinderprisms.txt')
-    return real_data
-# ----------------------------------
-# run fitting 
-# ----------------------------------
-def run_fitting():
-    sample = buildSample()
-    simulation = createSimulation()
-    simulation.setSample(sample)
-    # get the real data, which is simply results of our simulation with default values
-    real_data = GetRealData()   
-    # run the simulation
-    simulation.runSimulation()    
-    # linking real and numerical (to be fitted) data
-    fitSuite = FitSuite()
-    fitSuite.addSimulationAndRealData(simulation, real_data)  
-    # setting fitting minimizer
-    fitSuite.setMinimizer( MinimizerFactory.createMinimizer("Minuit2","Migrad") ) 
-    # setting fitting parameters
-    fitSuite.addFitParameter("*FormFactorCylinder/height", 4.*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
-    fitSuite.addFitParameter("*FormFactorCylinder/radius", 6.*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
-    fitSuite.addFitParameter("*FormFactorPrism3/height", 4.*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
-    fitSuite.addFitParameter("*FormFactorPrism3/half_side", 6*nanometer, 0.01*nanometer, AttLimits.lowerLimited(0.01) )
-    # run fit
-    fitSuite.runFit()
-    # print fit results
-    fitSuite.printResults()
-\end{lstlisting}
 
 \begin{lstlisting}[caption={Output of fit using Python script~\ref{script_exfit1}},language=bash,basicstyle=\small\lstfontfamily,% style=commandline,
   label=output_exfit1,captionpos=b,escapeinside={@}{@}, numbers=
diff --git a/Doc/UserManual/SimulationExamples.tex b/Doc/UserManual/SimulationExamples.tex
index 3f873951527172f9f3998effb514612774a65519..c5ade8dec3f9ff65704db19da15d94d5007c6ca7 100644
--- a/Doc/UserManual/SimulationExamples.tex
+++ b/Doc/UserManual/SimulationExamples.tex
@@ -1,5 +1,5 @@
 \newpage
-\chapter{Simulation}  \SecLabel{Simulation}
+\chapter{Simulation examples}  \SecLabel{Simulation}
 
 \section{General methodology}
 A simulation of GISAXS using \BornAgain\ consists of following steps:
@@ -364,53 +364,6 @@ is associated with the output intensity in arbitrary units. }
 \label{fig:output_ex1}
 \end{figure}
 
-\newpage
-\begin{lstlisting}[caption={Python script of example 1},
-  label=script_ex1,captionpos=b,escapeinside={@}{@} ,language=python,style=eclipse, numbers= none,frame = leftline ,
-      framerule = 2mm ,
-      rulecolor = \color{lightgrey},
-      breaklines = true]
-import sys, os, numpy 
-
-sys.path.append(os.path.abspath(os.path.join(os.path.split(__file__)[0],'..', '..', '..', 'lib')))
-
-from libBornAgainCore import * 
-
-def RunSimulation():
-    #  defining materials 
-    mAmbience = MaterialManager.getHomogeneousMaterial("Air", 0.0, 0.0 ) 
-    mSubstrate = MaterialManager.getHomogeneousMaterial("Substrate",
-    6e-6, 2e-8) 
-    mParticle = MaterialManager.getHomogeneousMaterial("Particle", 6e-4, 2e-8 )
-    # collection of particles 
-    cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer) 
-    cylinder = Particle(mParticle, cylinder_ff) 
-    prism_ff = FormFactorPrism3(5*nanometer, 5*nanometer) 
-    prism = Particle(mParticle, prism_ff) 
-    particle_decoration = ParticleDecoration()  
-    particle_decoration.addParticle(cylinder, 0.0, 0.5)  
-    particle_decoration.addParticle(prism, 0.0, 0.5)  
-    interference = InterferenceFunctionNone()  
-    particle_decoration.addInterferenceFunction(interference)  
-    # air layer with particles and substrate form multi layer 
-    air_layer = Layer(mAmbience)  
-    air_layer.setDecoration(particle_decoration)
-    substrate_layer = Layer(mSubstrate, 0) 
-    multi_layer = MultiLayer()  
-    multi_layer.addLayer(air_layer) 
-    multi_layer.addLayer(substrate_layer) 
-
-    # build and run simulation  
-    simulation = Simulation()  
-    simulation.setDetectorParameters(100,-1.0*degree, 1.0*degree, 
-                                    100, 0.0*degree, 2.0*degree, True) 
-    simulation.setBeamParameters(1.0*angstrom, 0.2*degree, 0.0*degree) 
-    simulation.setSample(multi_layer) 
-    simulation.runSimulation()  
-
-    # retrieving intensity data
-     return GetOutputData(simulation)
-\end{lstlisting}
 
 % \newpage
 % \subsection{Hello, minted}
diff --git a/Doc/UserManual/UserManual.pdf b/Doc/UserManual/UserManual.pdf
index 2016a5dddeb80ae768c2adf3eaede37fbe8ae60c..9aa6542b119d284e96b757509b8914f02b8e4c4f 100644
Binary files a/Doc/UserManual/UserManual.pdf and b/Doc/UserManual/UserManual.pdf differ
diff --git a/Doc/UserManual/UserManual.tex b/Doc/UserManual/UserManual.tex
index df4f185246834854ecf94b0b736f3c9b5993b3ad..3bd6810b165ea02323d67c93216b54463f4785ae 100644
--- a/Doc/UserManual/UserManual.tex
+++ b/Doc/UserManual/UserManual.tex
@@ -180,10 +180,14 @@ Forschungszentrum J\"ulich GmbH
 \input{Introduction}
 \input{QuickStart}
 \input{Installation}
-\input{SoftwareArchitecture}
-\input{SoftwareDesignOverview}
 \input{SimulationExamples}
 \input{FittingExamples}
+\input{SoftwareArchitecture}
+\input{SoftwareDesignOverview}
+\appendix
+\input{AppendixListings}
+\input{AppendixPhysics}
+
 
 %List of notations\\  Bugs\\ License agreement\\ Directory layout \\ FAQ \\ Future development.