diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLaticeSumOfRotated.py b/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLaticeSumOfRotated.py
new file mode 100644
index 0000000000000000000000000000000000000000..d6fdaa9edd9d830b4e8d8443dbe2e6e285b517f7
--- /dev/null
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLaticeSumOfRotated.py
@@ -0,0 +1,88 @@
+# 2D lattice with different disorder (IsGISAXS example #6), sum of rotated lattices
+import numpy
+import matplotlib
+import pylab
+from bornagain import *
+
+phi_min, phi_max = 0.0, 2.0
+alpha_min, alpha_max = 0.0, 2.0
+
+
+def get_sample(xi_value):
+    """
+    Build and return the sample representing 2D lattice with different disorder
+    rotated lattice
+    """
+    m_ambience = HomogeneousMaterial("Air", 0.0, 0.0)
+    m_substrate = HomogeneousMaterial("Substrate", 6e-6, 2e-8)
+    m_particle = HomogeneousMaterial("Particle", 6e-4, 2e-8)
+
+    air_layer = Layer(m_ambience)
+    substrate_layer = Layer(m_substrate)
+
+    p_interference_function = InterferenceFunction2DLattice.createSquare(25.0*nanometer, xi_value)
+    pdf = FTDistribution2DCauchy(300.0*nanometer/2.0/numpy.pi, 100.0*nanometer/2.0/numpy.pi)
+    p_interference_function.setProbabilityDistribution(pdf)
+
+    particle_layout = ParticleLayout()
+    ff_cyl = FormFactorCylinder(3.0*nanometer, 3.0*nanometer)
+    position = kvector_t(0.0, 0.0, 0.0)
+    cylinder = Particle(m_particle, ff_cyl.clone())
+    particle_info = ParticleInfo(cylinder, position, 1.0)
+    particle_layout.addParticleInfo(particle_info)
+    particle_layout.addInterferenceFunction(p_interference_function)
+
+    air_layer.addLayout(particle_layout)
+
+    multi_layer = MultiLayer()
+    multi_layer.addLayer(air_layer)
+    multi_layer.addLayer(substrate_layer)
+    return multi_layer
+
+
+def get_simulation():
+    """
+    Create and return GISAXS simulation with beam and detector defined
+    """
+    simulation = Simulation()
+    simulation.setDetectorParameters(100, phi_min*degree, phi_max*degree, 100, alpha_min*degree, alpha_max*degree)
+    simulation.setBeamParameters(1.0*angstrom, 0.2*degree, 0.0*degree)
+    return simulation
+
+
+def run_simulation():
+    """
+    Run several simulations, sum up intensities from different rotated lattices and plot results
+    """
+
+    simulation = get_simulation()
+
+    OutputData_total = simulation.getIntensityData()
+    nbins = 3
+    xi_min = 0.0*degree
+    xi_max = 240.0*degree
+    # xi= StochasticSampledParameter(StochasticDoubleGate(xi_min, xi_max), nbins, xi_min, xi_max)
+    total_weight = 0.0
+    xi_distr = DistributionGate(xi_min, xi_max)
+    xi_samples = xi_distr.generateValueList(nbins, 0.0)
+    for i in range(len(xi_samples)):
+        xi_value = xi_samples[i]
+        probability = xi_distr.probabilityDensity(xi_value)
+        total_weight += probability
+        p_sample = get_sample(xi_value)
+        simulation.setSample(p_sample)
+        simulation.runSimulation()
+
+        single_output = simulation.getIntensityData()
+        single_output.scaleAll(probability)
+        OutputData_total += single_output
+    OutputData_total.scaleAll(1.0/total_weight)
+
+    result = OutputData_total.getArray() + 1  # for log scale
+    pylab.imshow(numpy.rot90(result, 1), norm=matplotlib.colors.LogNorm(), extent=[0.0, 2.0, 0, 2.0])
+    pylab.show()
+
+
+if __name__ == '__main__':
+    run_simulation()
+
diff --git a/dev-tools/release/utils/prepare_release.py b/dev-tools/release/utils/prepare_release.py
index 7d0fc0b7e84b0d2f152a991f7b32b38886e6302b..f603399bd0ca2da7e05fbe955b7e10d2a15e5d7f 100644
--- a/dev-tools/release/utils/prepare_release.py
+++ b/dev-tools/release/utils/prepare_release.py
@@ -61,6 +61,7 @@ def update_upload_dir():
     print "\nUpdating directory for upload ..."
     run_command("mv %s/BornAgain*.tar.gz %s/old" % (get_upload_dir(), get_upload_dir()))
     run_command("mv %s/BornAgain*-win32.exe %s/old" % (get_upload_dir(), get_upload_dir()))
+    run_command("mv %s/BornAgain-*-macosx64-*.dmg %s/old" % (get_upload_dir(), get_upload_dir()))
     run_command("mv %s/*Manual-*.pdf %s/old" % (get_upload_dir(), get_upload_dir()))
     run_command("cp %s/BornAgain-%s.tar.gz %s" % (get_build_dir(), get_version(), get_upload_dir()))
     run_command("cp %s/CHANGELOG %s" % (get_source_dir(), get_upload_dir()))