diff --git a/App/src/TestMesoCrystal1.cpp b/App/src/TestMesoCrystal1.cpp
index 91218d31f6e251e4c6c6f675579abdfece923614..cb8dee64c73a06ac180040075122e0fb3de00ec9 100644
--- a/App/src/TestMesoCrystal1.cpp
+++ b/App/src/TestMesoCrystal1.cpp
@@ -47,7 +47,6 @@ void TestMesoCrystal1::execute()
     simulation->runSimulation();
     simulation->normalize();
 
-    /*
     OutputData<double> *data = simulation->getIntensityData();
 
     TCanvas *c1 = DrawHelper::createAndRegisterCanvas("sim_meso_crystal",
@@ -69,7 +68,6 @@ void TestMesoCrystal1::execute()
 
     OutputDataIOFactory::writeIntensityData(*data,"test_mesocrystal1.txt");
     delete data;
-    */
 
     delete simulation;
     delete reference;
diff --git a/Core/FormFactors/src/FormFactorCrystal.cpp b/Core/FormFactors/src/FormFactorCrystal.cpp
index 63df3f83a8378762e822d1078f906fa037e2bc6a..f3fc484413f0029541aa7ba253105dee9b677c03 100644
--- a/Core/FormFactors/src/FormFactorCrystal.cpp
+++ b/Core/FormFactors/src/FormFactorCrystal.cpp
@@ -23,6 +23,8 @@ FormFactorCrystal::FormFactorCrystal(
 , m_wavevector_scattering_factor(wavevector_scattering_factor)
 , mp_ambient_material(p_material)
 , m_max_rec_length(0.0)
+, mP_transform(0)
+, mP_inverse_transform(0)
 {
     setName("FormFactorCrystal");
     mp_lattice_basis = p_crystal.createBasis();
diff --git a/Core/PythonAPI/src/PythonModule.cpp b/Core/PythonAPI/src/PythonModule.cpp
index 2a51f8fc11d3a17e47f24080793ba887aba5daa5..0a727595928494a0260be19c78802c3e97777611 100644
--- a/Core/PythonAPI/src/PythonModule.cpp
+++ b/Core/PythonAPI/src/PythonModule.cpp
@@ -114,6 +114,7 @@ BOOST_PYTHON_MODULE(libBornAgainCore){
     register_Beam_class();
     register_Bin1D_class();
     register_Bin1DCVector_class();
+    register_ITransform3D_class();
     register_ICloneable_class();
     register_ISample_class();
     register_ICompositeSample_class();
@@ -144,7 +145,6 @@ BOOST_PYTHON_MODULE(libBornAgainCore){
     register_FormFactorSphereGaussianRadius_class();
     register_kvector_t_class();
     register_cvector_t_class();
-    register_ITransform3D_class();
     register_RotateY_3D_class();
     register_RotateZ_3D_class();
     register_IMaterial_class();
diff --git a/Core/Samples/inc/Crystal.h b/Core/Samples/inc/Crystal.h
index 57d080b750668728101c7a9fe2dc0b4493ce52ef..81a9a7ed3be33f5a376a4e5bd29e26a85908fa57 100644
--- a/Core/Samples/inc/Crystal.h
+++ b/Core/Samples/inc/Crystal.h
@@ -44,7 +44,7 @@ public:
         const IFormFactor& meso_crystal_form_factor,
         const IMaterial *p_ambient_material,
         complex_t wavevector_scattering_factor,
-        const Geometry::ITransform3D& transform) const;
+        const Geometry::ITransform3D *transform = 0) const;
 
     Lattice getLattice() const { return m_lattice; }
     LatticeBasis *createBasis() const { return mp_lattice_basis->clone(); }
diff --git a/Core/Samples/inc/IClusteredParticles.h b/Core/Samples/inc/IClusteredParticles.h
index 827815f4873864145da16dc711fcb5fc9db8d78b..137bf6b634ce55328df56c3196c6843720d761e4 100644
--- a/Core/Samples/inc/IClusteredParticles.h
+++ b/Core/Samples/inc/IClusteredParticles.h
@@ -60,7 +60,7 @@ public:
            const IFormFactor& meso_crystal_form_factor,
            const IMaterial *p_ambient_material,
            complex_t wavevector_scattering_factor,
-           const Geometry::ITransform3D& transform) const
+           const Geometry::ITransform3D *transform = 0) const
     {
         (void)meso_crystal_form_factor;
         (void)p_ambient_material;
diff --git a/Core/Samples/src/Crystal.cpp b/Core/Samples/src/Crystal.cpp
index 69380704aad1efbd1186417d299275889e16e8c6..bcce8cc773ca9be8a80fa8361e65748eba2aca88 100644
--- a/Core/Samples/src/Crystal.cpp
+++ b/Core/Samples/src/Crystal.cpp
@@ -53,14 +53,14 @@ IFormFactor* Crystal::createTotalFormFactor(
         const IFormFactor& meso_crystal_form_factor,
         const IMaterial *p_ambient_material,
         complex_t wavevector_scattering_factor,
-        const Geometry::ITransform3D& P_transform) const
+        const Geometry::ITransform3D *P_transform) const
 {
     FormFactorCrystal *p_ff_crystal =
         new FormFactorCrystal(*this, meso_crystal_form_factor,
                 p_ambient_material, wavevector_scattering_factor);
-//    if (P_transform.get()) {
-    p_ff_crystal->setTransformation(P_transform);
-//    }
+    if (P_transform) {
+        p_ff_crystal->setTransformation(*P_transform);
+    }
     if (m_dw_factor>0.0) {
         return new FormFactorDecoratorDebyeWaller(p_ff_crystal, m_dw_factor);
     }
diff --git a/Core/Samples/src/MesoCrystal.cpp b/Core/Samples/src/MesoCrystal.cpp
index 870b7581d030f1a18eb8584714878e7cd87a7f90..412457e6bdf3c856ce972b8f7946b6e6a868fdd3 100644
--- a/Core/Samples/src/MesoCrystal.cpp
+++ b/Core/Samples/src/MesoCrystal.cpp
@@ -72,7 +72,7 @@ IFormFactor* MesoCrystal::createFormFactor(
 {
     return mp_particle_structure->createTotalFormFactor(
             *mp_meso_form_factor, mp_ambient_material,
-                wavevector_scattering_factor, *mP_transform.get());
+                wavevector_scattering_factor, mP_transform.get());
 }
 
 void MesoCrystal::setSimpleFormFactor(IFormFactor* p_form_factor)
diff --git a/dev-tools/log/perf_history.txt b/dev-tools/log/perf_history.txt
index 0edb6a5f2bc0b288d790e50b2b19dccd8f7b12c0..48251733844ee7538f39255dacab01e52fb3744e 100644
--- a/dev-tools/log/perf_history.txt
+++ b/dev-tools/log/perf_history.txt
@@ -288,3 +288,7 @@
 # after removing "alpha_f", "phi_f"
 2013-11-25 15:42:38 | jcnsopc73  | macosx64, 2800 MHz      | 21.978      | 22.9885     | 1.47059     | 740741      | 
 2013-11-25 15:42:46 | jcnsopc73  | macosx64, 2800 MHz      | 22.2222     | 22.7273     | 1.41844     | 800000      | 
+
+# after getting rid of shared_ptr in ITransformation3D
+2013-11-26 17:20:01 | jcnsopc73  | macosx64, 2800 MHz      | 23.8095     | 23.8095     | 1.48148     | 800000      | 
+2013-11-26 17:20:51 | jcnsopc73  | macosx64, 2800 MHz      | 23.5294     | 23.5294     | 1.48148     | 769231      |