diff --git a/App/src/TestMultiLayerRoughness.cpp b/App/src/TestMultiLayerRoughness.cpp
index 9d8fabba5b04deaad696aa56580f927ca7160eb0..32c6aa218fe0d41b32a88808e0f5780e2123c6ee 100644
--- a/App/src/TestMultiLayerRoughness.cpp
+++ b/App/src/TestMultiLayerRoughness.cpp
@@ -31,7 +31,7 @@ void TestMultiLayerRoughness::execute()
     ISample *sample = SampleFactory::createSample("MultilayerOffspecTestcase1a");
 
     std::cout << *sample << std::endl;
-    sample->print_structure();
+    sample->printSampleTree();
 
     int npoints=100;
     double alphaMax = 2.0;
diff --git a/Core/PythonAPI/src/Crystal.pypp.cpp b/Core/PythonAPI/src/Crystal.pypp.cpp
index 51c6018aa6f32f812c158a790ecac20bdd9af4ea..d1a34c04872d481bbbaa6ec543ca167d603f78c4 100644
--- a/Core/PythonAPI/src/Crystal.pypp.cpp
+++ b/Core/PythonAPI/src/Crystal.pypp.cpp
@@ -97,6 +97,18 @@ struct Crystal_wrapper : Crystal, bp::wrapper< Crystal > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -267,6 +279,17 @@ void register_Crystal_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&Crystal_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( Crystal_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            Crystal_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&Crystal_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorBox.pypp.cpp b/Core/PythonAPI/src/FormFactorBox.pypp.cpp
index f501250e5ed0f61c3296672a908be25c5428387d..3928f9bd9d38364dce75fe333766362c68786776 100644
--- a/Core/PythonAPI/src/FormFactorBox.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorBox.pypp.cpp
@@ -205,6 +205,18 @@ struct FormFactorBox_wrapper : FormFactorBox, bp::wrapper< FormFactorBox > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -449,6 +461,17 @@ void register_FormFactorBox_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorBox_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorBox_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorBox_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorBox_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorCone.pypp.cpp b/Core/PythonAPI/src/FormFactorCone.pypp.cpp
index 919c4006e1111bc7768a25fa6b1e27dd1146d46b..dea77269e975ebbe841852e489e15dd752ecb025 100644
--- a/Core/PythonAPI/src/FormFactorCone.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorCone.pypp.cpp
@@ -193,6 +193,18 @@ struct FormFactorCone_wrapper : FormFactorCone, bp::wrapper< FormFactorCone > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -416,6 +428,17 @@ void register_FormFactorCone_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorCone_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorCone_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorCone_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorCone_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorCrystal.pypp.cpp b/Core/PythonAPI/src/FormFactorCrystal.pypp.cpp
index d053585eb17e1e6d53c6313ddeaea65f316f863b..f4956ed3ec4668b672c803a3d108e96e57c0f286 100644
--- a/Core/PythonAPI/src/FormFactorCrystal.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorCrystal.pypp.cpp
@@ -198,6 +198,18 @@ struct FormFactorCrystal_wrapper : FormFactorCrystal, bp::wrapper< FormFactorCry
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -433,6 +445,17 @@ void register_FormFactorCrystal_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorCrystal_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorCrystal_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorCrystal_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorCrystal_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorCylinder.pypp.cpp b/Core/PythonAPI/src/FormFactorCylinder.pypp.cpp
index f1ce4e5aaf2706041e61b576b07247901179eaf7..8e6f648fb3f65bf5bb8502c554c44d4b8ece3c08 100644
--- a/Core/PythonAPI/src/FormFactorCylinder.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorCylinder.pypp.cpp
@@ -229,6 +229,18 @@ struct FormFactorCylinder_wrapper : FormFactorCylinder, bp::wrapper< FormFactorC
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -488,6 +500,17 @@ void register_FormFactorCylinder_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorCylinder_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorCylinder_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorCylinder_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorCylinder_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorDecoratorDebyeWaller.pypp.cpp b/Core/PythonAPI/src/FormFactorDecoratorDebyeWaller.pypp.cpp
index fd5509dd602e16182dc40a1bc8fde5c75eac4586..b7d22d1b008955fff615cc70a634b8d99ff38c9b 100644
--- a/Core/PythonAPI/src/FormFactorDecoratorDebyeWaller.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorDecoratorDebyeWaller.pypp.cpp
@@ -193,6 +193,18 @@ struct FormFactorDecoratorDebyeWaller_wrapper : FormFactorDecoratorDebyeWaller,
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -416,6 +428,17 @@ void register_FormFactorDecoratorDebyeWaller_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorDecoratorDebyeWaller_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorDecoratorDebyeWaller_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorDecoratorDebyeWaller_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorDecoratorDebyeWaller_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorEllipsoid.pypp.cpp b/Core/PythonAPI/src/FormFactorEllipsoid.pypp.cpp
index 0a9ca5ce10141af950369b9918a1725a96955d33..cab513c398be3a7f0e0322ccaa4ce4e4ea02d100 100644
--- a/Core/PythonAPI/src/FormFactorEllipsoid.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorEllipsoid.pypp.cpp
@@ -205,6 +205,18 @@ struct FormFactorEllipsoid_wrapper : FormFactorEllipsoid, bp::wrapper< FormFacto
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -449,6 +461,17 @@ void register_FormFactorEllipsoid_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorEllipsoid_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorEllipsoid_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorEllipsoid_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorEllipsoid_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorFullSphere.pypp.cpp b/Core/PythonAPI/src/FormFactorFullSphere.pypp.cpp
index 3815bf9636828ca056e7db45e61e6894e104cad4..3849c05432af743970fbe2db9a8a797dac9f13e1 100644
--- a/Core/PythonAPI/src/FormFactorFullSphere.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorFullSphere.pypp.cpp
@@ -217,6 +217,18 @@ struct FormFactorFullSphere_wrapper : FormFactorFullSphere, bp::wrapper< FormFac
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -464,6 +476,17 @@ void register_FormFactorFullSphere_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorFullSphere_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorFullSphere_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorFullSphere_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorFullSphere_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorFullSpheroid.pypp.cpp b/Core/PythonAPI/src/FormFactorFullSpheroid.pypp.cpp
index 1e8532d1e79965298716ef14397f6f3262d23bae..f11419246f908f007a610e1bd24189fd3c58f528 100644
--- a/Core/PythonAPI/src/FormFactorFullSpheroid.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorFullSpheroid.pypp.cpp
@@ -193,6 +193,18 @@ struct FormFactorFullSpheroid_wrapper : FormFactorFullSpheroid, bp::wrapper< For
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -416,6 +428,17 @@ void register_FormFactorFullSpheroid_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorFullSpheroid_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorFullSpheroid_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorFullSpheroid_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorFullSpheroid_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorGauss.pypp.cpp b/Core/PythonAPI/src/FormFactorGauss.pypp.cpp
index 1e69362b33ffe470c569a2af060cc3827a6e05b7..bd0aff53361131ea02bba8f45a614612c3ff4fd4 100644
--- a/Core/PythonAPI/src/FormFactorGauss.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorGauss.pypp.cpp
@@ -212,6 +212,18 @@ struct FormFactorGauss_wrapper : FormFactorGauss, bp::wrapper< FormFactorGauss >
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -448,6 +460,17 @@ void register_FormFactorGauss_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorGauss_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorGauss_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorGauss_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorGauss_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorHemiSpheroid.pypp.cpp b/Core/PythonAPI/src/FormFactorHemiSpheroid.pypp.cpp
index 3a6afdf30319b55abbc76003b543576a89948bfa..1a300af87c57d5d832a1b2b723e8548daf4099ba 100644
--- a/Core/PythonAPI/src/FormFactorHemiSpheroid.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorHemiSpheroid.pypp.cpp
@@ -193,6 +193,18 @@ struct FormFactorHemiSpheroid_wrapper : FormFactorHemiSpheroid, bp::wrapper< For
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -416,6 +428,17 @@ void register_FormFactorHemiSpheroid_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorHemiSpheroid_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorHemiSpheroid_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorHemiSpheroid_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorHemiSpheroid_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorLorentz.pypp.cpp b/Core/PythonAPI/src/FormFactorLorentz.pypp.cpp
index 0f2cc8e1c7f0d2f8bcf49d732d7f6bc06ce70069..4b41e00edca20e7caa2fb92cc6d95296a2b494c7 100644
--- a/Core/PythonAPI/src/FormFactorLorentz.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorLorentz.pypp.cpp
@@ -212,6 +212,18 @@ struct FormFactorLorentz_wrapper : FormFactorLorentz, bp::wrapper< FormFactorLor
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -448,6 +460,17 @@ void register_FormFactorLorentz_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorLorentz_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorLorentz_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorLorentz_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorLorentz_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorParallelepiped.pypp.cpp b/Core/PythonAPI/src/FormFactorParallelepiped.pypp.cpp
index f276ca868f631e013593e834a933082852aa4937..c639836f9cbadc71aed20d6db63343365cb45d1c 100644
--- a/Core/PythonAPI/src/FormFactorParallelepiped.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorParallelepiped.pypp.cpp
@@ -205,6 +205,18 @@ struct FormFactorParallelepiped_wrapper : FormFactorParallelepiped, bp::wrapper<
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -440,6 +452,17 @@ void register_FormFactorParallelepiped_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorParallelepiped_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorParallelepiped_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorParallelepiped_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorParallelepiped_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorPrism3.pypp.cpp b/Core/PythonAPI/src/FormFactorPrism3.pypp.cpp
index 607d57b5899160a6562d41f2dfda0c9324d1c50e..7344a006a550e713af3795888c6ef0ab692df703 100644
--- a/Core/PythonAPI/src/FormFactorPrism3.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorPrism3.pypp.cpp
@@ -241,6 +241,18 @@ struct FormFactorPrism3_wrapper : FormFactorPrism3, bp::wrapper< FormFactorPrism
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -511,6 +523,17 @@ void register_FormFactorPrism3_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorPrism3_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorPrism3_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorPrism3_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorPrism3_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorPrism6.pypp.cpp b/Core/PythonAPI/src/FormFactorPrism6.pypp.cpp
index c3a6cecfe0ef852924d25fec425212773e2b9a70..6958a94f6fc14c22113602acbb1119ef103cb4b3 100644
--- a/Core/PythonAPI/src/FormFactorPrism6.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorPrism6.pypp.cpp
@@ -205,6 +205,18 @@ struct FormFactorPrism6_wrapper : FormFactorPrism6, bp::wrapper< FormFactorPrism
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -440,6 +452,17 @@ void register_FormFactorPrism6_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorPrism6_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorPrism6_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorPrism6_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorPrism6_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorPyramid.pypp.cpp b/Core/PythonAPI/src/FormFactorPyramid.pypp.cpp
index 01dbdcc07a91a81e0d160bf335dbb5549a56e5b1..db82e8d663c2afc6e668ce94f5ea67552ae52b1c 100644
--- a/Core/PythonAPI/src/FormFactorPyramid.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorPyramid.pypp.cpp
@@ -265,6 +265,18 @@ struct FormFactorPyramid_wrapper : FormFactorPyramid, bp::wrapper< FormFactorPyr
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -558,6 +570,17 @@ void register_FormFactorPyramid_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorPyramid_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorPyramid_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorPyramid_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorPyramid_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorSphere.pypp.cpp b/Core/PythonAPI/src/FormFactorSphere.pypp.cpp
index e2bce4183cdafc48ed1ce57530086204e876c44e..b2b8893a00b96f316859555fff3a056a7c9f4b65 100644
--- a/Core/PythonAPI/src/FormFactorSphere.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorSphere.pypp.cpp
@@ -193,6 +193,18 @@ struct FormFactorSphere_wrapper : FormFactorSphere, bp::wrapper< FormFactorSpher
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -416,6 +428,17 @@ void register_FormFactorSphere_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorSphere_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorSphere_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorSphere_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorSphere_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp b/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp
index 773a20fc76d52208fe47ff6166569f8d66f77832..e3edc65106a17f047434b6f87edb19879a8398c7 100644
--- a/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp
+++ b/Core/PythonAPI/src/FormFactorSphereGaussianRadius.pypp.cpp
@@ -205,6 +205,18 @@ struct FormFactorSphereGaussianRadius_wrapper : FormFactorSphereGaussianRadius,
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -440,6 +452,17 @@ void register_FormFactorSphereGaussianRadius_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&FormFactorSphereGaussianRadius_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( FormFactorSphereGaussianRadius_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            FormFactorSphereGaussianRadius_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&FormFactorSphereGaussianRadius_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/IClusteredParticles.pypp.cpp b/Core/PythonAPI/src/IClusteredParticles.pypp.cpp
index a2715931f226c85e4b81059363be577954042a3e..9d37ca5aea8ca06b4c7f6e70f2b63578d47862a8 100644
--- a/Core/PythonAPI/src/IClusteredParticles.pypp.cpp
+++ b/Core/PythonAPI/src/IClusteredParticles.pypp.cpp
@@ -102,6 +102,18 @@ struct IClusteredParticles_wrapper : IClusteredParticles, bp::wrapper< IClustere
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -243,6 +255,17 @@ void register_IClusteredParticles_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&IClusteredParticles_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( IClusteredParticles_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            IClusteredParticles_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&IClusteredParticles_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/ICompositeSample.pypp.cpp b/Core/PythonAPI/src/ICompositeSample.pypp.cpp
index deac34055c21c329225603688cfc94d96a04227f..1883f653f63b349baa2be8437f4f18588e05f209 100644
--- a/Core/PythonAPI/src/ICompositeSample.pypp.cpp
+++ b/Core/PythonAPI/src/ICompositeSample.pypp.cpp
@@ -90,6 +90,18 @@ struct ICompositeSample_wrapper : ICompositeSample, bp::wrapper< ICompositeSampl
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -219,6 +231,17 @@ void register_ICompositeSample_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&ICompositeSample_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( ICompositeSample_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            ICompositeSample_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&ICompositeSample_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/IDecoration.pypp.cpp b/Core/PythonAPI/src/IDecoration.pypp.cpp
index 3e9fab2b8644cf67bc14670fd20dedbc9b4094a0..989b8f6475becffe67b02cd957d6ac4cc198fb4c 100644
--- a/Core/PythonAPI/src/IDecoration.pypp.cpp
+++ b/Core/PythonAPI/src/IDecoration.pypp.cpp
@@ -120,6 +120,18 @@ struct IDecoration_wrapper : IDecoration, bp::wrapper< IDecoration > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -326,6 +338,17 @@ void register_IDecoration_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&IDecoration_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( IDecoration_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            IDecoration_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&IDecoration_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/IFormFactor.pypp.cpp b/Core/PythonAPI/src/IFormFactor.pypp.cpp
index fa9ce0b759a8c7592b54f18aaa0cb1c1335c502d..47eb2f5e9677080390dd7461980ae652c7b67550 100644
--- a/Core/PythonAPI/src/IFormFactor.pypp.cpp
+++ b/Core/PythonAPI/src/IFormFactor.pypp.cpp
@@ -179,6 +179,18 @@ struct IFormFactor_wrapper : IFormFactor, bp::wrapper< IFormFactor > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -398,6 +410,17 @@ void register_IFormFactor_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&IFormFactor_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( IFormFactor_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            IFormFactor_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&IFormFactor_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp b/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp
index 755886dd432f27cdde2545e02f4cfaa7daa35008..fc3c5fce9ad3ab1c3717436434395be8c33822d4 100644
--- a/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp
+++ b/Core/PythonAPI/src/IFormFactorBorn.pypp.cpp
@@ -191,6 +191,18 @@ struct IFormFactorBorn_wrapper : IFormFactorBorn, bp::wrapper< IFormFactorBorn >
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -422,6 +434,17 @@ void register_IFormFactorBorn_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&IFormFactorBorn_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( IFormFactorBorn_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            IFormFactorBorn_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&IFormFactorBorn_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp b/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp
index b4a69b7776edfb903ed3ff173c5b6891b54922e4..29b0fd2305d7847208f4118f3b7a86a6f4bad961 100644
--- a/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp
+++ b/Core/PythonAPI/src/IFormFactorDecorator.pypp.cpp
@@ -172,6 +172,18 @@ struct IFormFactorDecorator_wrapper : IFormFactorDecorator, bp::wrapper< IFormFa
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -391,6 +403,17 @@ void register_IFormFactorDecorator_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&IFormFactorDecorator_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( IFormFactorDecorator_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            IFormFactorDecorator_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&IFormFactorDecorator_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp b/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp
index 2220599749c4f34bd6248c73f3b1213b5aee8aa3..629e437f138d8cbf5aa6dfe3161a65006c2ba55d 100644
--- a/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp
+++ b/Core/PythonAPI/src/IInterferenceFunction.pypp.cpp
@@ -119,6 +119,18 @@ struct IInterferenceFunction_wrapper : IInterferenceFunction, bp::wrapper< IInte
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -281,6 +293,17 @@ void register_IInterferenceFunction_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&IInterferenceFunction_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( IInterferenceFunction_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            IInterferenceFunction_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&IInterferenceFunction_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/ISample.pypp.cpp b/Core/PythonAPI/src/ISample.pypp.cpp
index f0e710456ee326798cd8bad938371fbf6ac9209c..d6893b23933d57512a1db7d2b9583656b33c7007 100644
--- a/Core/PythonAPI/src/ISample.pypp.cpp
+++ b/Core/PythonAPI/src/ISample.pypp.cpp
@@ -66,6 +66,18 @@ struct ISample_wrapper : ISample, bp::wrapper< ISample > {
         return ISample::getCompositeSample( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual bool areParametersChanged(  ) {
         if( bp::override func_areParametersChanged = this->get_override( "areParametersChanged" ) )
             return func_areParametersChanged(  );
@@ -232,13 +244,15 @@ void register_ISample_class(){
                 , bp::return_value_policy< bp::reference_existing_object >() );
         
         }
-        { //::ISample::print_structure
+        { //::ISample::printSampleTree
         
-            typedef void ( ::ISample::*print_structure_function_type )(  ) ;
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( ISample_wrapper::*default_printSampleTree_function_type )(  ) ;
             
             ISample_exposer.def( 
-                "print_structure"
-                , print_structure_function_type( &::ISample::print_structure ) );
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&ISample_wrapper::default_printSampleTree) );
         
         }
         { //::IParameterized::areParametersChanged
diff --git a/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp b/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp
index 870408275912d99122c355eff6cfbe68e62ccfb2..6db34fb10b29bbb053547674be4b8188bc59f68b 100644
--- a/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp
+++ b/Core/PythonAPI/src/InterferenceFunction1DParaCrystal.pypp.cpp
@@ -133,6 +133,18 @@ struct InterferenceFunction1DParaCrystal_wrapper : InterferenceFunction1DParaCry
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -319,6 +331,17 @@ void register_InterferenceFunction1DParaCrystal_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&InterferenceFunction1DParaCrystal_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( InterferenceFunction1DParaCrystal_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            InterferenceFunction1DParaCrystal_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&InterferenceFunction1DParaCrystal_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp b/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp
index 0c93a4ff106a3895a0f8a0d4c034589f6d5f94fc..bb22c253926c675f269f7f8320d4ddc4cf095c40 100644
--- a/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp
+++ b/Core/PythonAPI/src/InterferenceFunction2DLattice.pypp.cpp
@@ -133,6 +133,18 @@ struct InterferenceFunction2DLattice_wrapper : InterferenceFunction2DLattice, bp
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -309,6 +321,17 @@ void register_InterferenceFunction2DLattice_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&InterferenceFunction2DLattice_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( InterferenceFunction2DLattice_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            InterferenceFunction2DLattice_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&InterferenceFunction2DLattice_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp b/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp
index cbcc2011468d5e86ec54c04e3e95da86d3bd0999..00e15bd8f140e84b2444589480eeb16a37908e66 100644
--- a/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp
+++ b/Core/PythonAPI/src/InterferenceFunction2DParaCrystal.pypp.cpp
@@ -133,6 +133,18 @@ struct InterferenceFunction2DParaCrystal_wrapper : InterferenceFunction2DParaCry
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -351,6 +363,17 @@ void register_InterferenceFunction2DParaCrystal_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&InterferenceFunction2DParaCrystal_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( InterferenceFunction2DParaCrystal_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            InterferenceFunction2DParaCrystal_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&InterferenceFunction2DParaCrystal_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp b/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp
index b3e384add2ade4f268807cab8b046df706246d4a..eca6fc43a2ffc4c6635a1e1673c2fc9d31925da6 100644
--- a/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp
+++ b/Core/PythonAPI/src/InterferenceFunctionNone.pypp.cpp
@@ -133,6 +133,18 @@ struct InterferenceFunctionNone_wrapper : InterferenceFunctionNone, bp::wrapper<
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -299,6 +311,17 @@ void register_InterferenceFunctionNone_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&InterferenceFunctionNone_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( InterferenceFunctionNone_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            InterferenceFunctionNone_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&InterferenceFunctionNone_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/LatticeBasis.pypp.cpp b/Core/PythonAPI/src/LatticeBasis.pypp.cpp
index fb688ed575856611908d97177878594ded4aa55c..26f897e179ccc1e2746d864c90414dd47125c35f 100644
--- a/Core/PythonAPI/src/LatticeBasis.pypp.cpp
+++ b/Core/PythonAPI/src/LatticeBasis.pypp.cpp
@@ -121,6 +121,18 @@ struct LatticeBasis_wrapper : LatticeBasis, bp::wrapper< LatticeBasis > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -296,6 +308,17 @@ void register_LatticeBasis_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&LatticeBasis_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( LatticeBasis_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            LatticeBasis_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&LatticeBasis_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/Layer.pypp.cpp b/Core/PythonAPI/src/Layer.pypp.cpp
index ab10dc15397f7d5908eb6d65c044b2f49675f715..f2cd2401c726d338489c96e6cadd9d8f14b51a9e 100644
--- a/Core/PythonAPI/src/Layer.pypp.cpp
+++ b/Core/PythonAPI/src/Layer.pypp.cpp
@@ -226,6 +226,18 @@ struct Layer_wrapper : Layer, bp::wrapper< Layer > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -465,6 +477,17 @@ void register_Layer_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&Layer_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( Layer_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            Layer_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&Layer_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/LayerInterface.pypp.cpp b/Core/PythonAPI/src/LayerInterface.pypp.cpp
index e798f090083c032b06f2a818ef39237398685c57..25f053310503aaf469781830e11767cfed1a1247 100644
--- a/Core/PythonAPI/src/LayerInterface.pypp.cpp
+++ b/Core/PythonAPI/src/LayerInterface.pypp.cpp
@@ -78,6 +78,18 @@ struct LayerInterface_wrapper : LayerInterface, bp::wrapper< LayerInterface > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -237,6 +249,17 @@ void register_LayerInterface_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&LayerInterface_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( LayerInterface_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            LayerInterface_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&LayerInterface_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/LayerRoughness.pypp.cpp b/Core/PythonAPI/src/LayerRoughness.pypp.cpp
index 96f299af1aef788a37a94be69beac3bfe2fbe069..b0d3ae5398c45f503a7782267ad8e4aa215a1efe 100644
--- a/Core/PythonAPI/src/LayerRoughness.pypp.cpp
+++ b/Core/PythonAPI/src/LayerRoughness.pypp.cpp
@@ -116,6 +116,18 @@ struct LayerRoughness_wrapper : LayerRoughness, bp::wrapper< LayerRoughness > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -337,6 +349,17 @@ void register_LayerRoughness_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&LayerRoughness_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( LayerRoughness_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            LayerRoughness_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&LayerRoughness_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/MesoCrystal.pypp.cpp b/Core/PythonAPI/src/MesoCrystal.pypp.cpp
index bb98f62c6dbfc86dfb975e0a87fc26d793e39aa1..90ce3058e8d5694f2c7fd6cba24a88fe3103a252 100644
--- a/Core/PythonAPI/src/MesoCrystal.pypp.cpp
+++ b/Core/PythonAPI/src/MesoCrystal.pypp.cpp
@@ -109,6 +109,18 @@ struct MesoCrystal_wrapper : MesoCrystal, bp::wrapper< MesoCrystal > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -262,6 +274,17 @@ void register_MesoCrystal_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&MesoCrystal_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( MesoCrystal_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            MesoCrystal_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&MesoCrystal_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/MultiLayer.pypp.cpp b/Core/PythonAPI/src/MultiLayer.pypp.cpp
index 952e7ef6edf4e0cf450b630af996cb4d07e83a61..fee8dfe46f9ed436554a866a4c0c4beac1521801 100644
--- a/Core/PythonAPI/src/MultiLayer.pypp.cpp
+++ b/Core/PythonAPI/src/MultiLayer.pypp.cpp
@@ -97,6 +97,18 @@ struct MultiLayer_wrapper : MultiLayer, bp::wrapper< MultiLayer > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -378,6 +390,17 @@ void register_MultiLayer_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&MultiLayer_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( MultiLayer_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            MultiLayer_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&MultiLayer_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/Particle.pypp.cpp b/Core/PythonAPI/src/Particle.pypp.cpp
index 0862c04e8d5b9b4c02a6a48bbbf77ccad7d0fa97..8c6157673d1fc9b089dce21301a02869861e5d47 100644
--- a/Core/PythonAPI/src/Particle.pypp.cpp
+++ b/Core/PythonAPI/src/Particle.pypp.cpp
@@ -183,6 +183,18 @@ struct Particle_wrapper : Particle, bp::wrapper< Particle > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -396,6 +408,17 @@ void register_Particle_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&Particle_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( Particle_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            Particle_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&Particle_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/ParticleCoreShell.pypp.cpp b/Core/PythonAPI/src/ParticleCoreShell.pypp.cpp
index cb29797283e495f116959f17658550f8410fb87f..f3b09b8f3d9583ed1bf81bea1f4bb586ca204bf4 100644
--- a/Core/PythonAPI/src/ParticleCoreShell.pypp.cpp
+++ b/Core/PythonAPI/src/ParticleCoreShell.pypp.cpp
@@ -109,6 +109,18 @@ struct ParticleCoreShell_wrapper : ParticleCoreShell, bp::wrapper< ParticleCoreS
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -262,6 +274,17 @@ void register_ParticleCoreShell_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&ParticleCoreShell_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( ParticleCoreShell_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            ParticleCoreShell_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&ParticleCoreShell_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/ParticleDecoration.pypp.cpp b/Core/PythonAPI/src/ParticleDecoration.pypp.cpp
index 8760f2b84a7779458155d5bee7a1733bcdf28239..e1c5df69ab66d6bfc2f47258bf81be5a1b387c10 100644
--- a/Core/PythonAPI/src/ParticleDecoration.pypp.cpp
+++ b/Core/PythonAPI/src/ParticleDecoration.pypp.cpp
@@ -157,6 +157,18 @@ struct ParticleDecoration_wrapper : ParticleDecoration, bp::wrapper< ParticleDec
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -397,6 +409,17 @@ void register_ParticleDecoration_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&ParticleDecoration_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( ParticleDecoration_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            ParticleDecoration_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&ParticleDecoration_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/ParticleInfo.pypp.cpp b/Core/PythonAPI/src/ParticleInfo.pypp.cpp
index 8abca7748194fbfb60739876042c36a7a9768dce..a725911d6f6e7f30be3d59ffaba3c27eedffef3e 100644
--- a/Core/PythonAPI/src/ParticleInfo.pypp.cpp
+++ b/Core/PythonAPI/src/ParticleInfo.pypp.cpp
@@ -97,6 +97,18 @@ struct ParticleInfo_wrapper : ParticleInfo, bp::wrapper< ParticleInfo > {
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -276,6 +288,17 @@ void register_ParticleInfo_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&ParticleInfo_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( ParticleInfo_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            ParticleInfo_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&ParticleInfo_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/PythonAPI/src/PositionParticleInfo.pypp.cpp b/Core/PythonAPI/src/PositionParticleInfo.pypp.cpp
index 55d6ffaab413be8c78dedf2a28a83d18af1f6747..8707bc22e49955f90f12368dbd4fb5162a48f27b 100644
--- a/Core/PythonAPI/src/PositionParticleInfo.pypp.cpp
+++ b/Core/PythonAPI/src/PositionParticleInfo.pypp.cpp
@@ -97,6 +97,18 @@ struct PositionParticleInfo_wrapper : PositionParticleInfo, bp::wrapper< Positio
         IParameterized::printParameters( );
     }
 
+    virtual void printSampleTree(  ) {
+        if( bp::override func_printSampleTree = this->get_override( "printSampleTree" ) )
+            func_printSampleTree(  );
+        else
+            this->ISample::printSampleTree(  );
+    }
+    
+    
+    void default_printSampleTree(  ) {
+        ISample::printSampleTree( );
+    }
+
     virtual void registerParameter( ::std::string const & name, double * parpointer ) {
         namespace bpl = boost::python;
         if( bpl::override func_registerParameter = this->get_override( "registerParameter" ) ){
@@ -257,6 +269,17 @@ void register_PositionParticleInfo_class(){
                 , printParameters_function_type(&::IParameterized::printParameters)
                 , default_printParameters_function_type(&PositionParticleInfo_wrapper::default_printParameters) );
         
+        }
+        { //::ISample::printSampleTree
+        
+            typedef void ( ::ISample::*printSampleTree_function_type )(  ) ;
+            typedef void ( PositionParticleInfo_wrapper::*default_printSampleTree_function_type )(  ) ;
+            
+            PositionParticleInfo_exposer.def( 
+                "printSampleTree"
+                , printSampleTree_function_type(&::ISample::printSampleTree)
+                , default_printSampleTree_function_type(&PositionParticleInfo_wrapper::default_printSampleTree) );
+        
         }
         { //::IParameterized::registerParameter
         
diff --git a/Core/Samples/inc/ISample.h b/Core/Samples/inc/ISample.h
index 946a7c7909048f92afe2680ed8717004b7b3cdf5..a2117bafc7975d38b3430d3531317b41b067c6e3 100644
--- a/Core/Samples/inc/ISample.h
+++ b/Core/Samples/inc/ISample.h
@@ -51,7 +51,7 @@ public:
         ParameterPool *external_pool,
         int copy_number=-1) const;
 
-    void print_structure();
+    virtual void printSampleTree();
 
     friend std::ostream& operator<<(std::ostream& ostr, const ISample& m)
     { m.print(ostr); return ostr; }
diff --git a/Core/Samples/inc/ISampleVisitor.h b/Core/Samples/inc/ISampleVisitor.h
index 46e2999df6dae4d27e907e5aab3da2ca2bde90b4..e37c6c598fdc430a4845390913f1dbd45563bd11 100644
--- a/Core/Samples/inc/ISampleVisitor.h
+++ b/Core/Samples/inc/ISampleVisitor.h
@@ -38,6 +38,8 @@ class FormFactorCylinder;
 class FormFactorPrism3;
 class InterferenceFunction1DParaCrystal;
 class InterferenceFunction2DParaCrystal;
+class LayerRoughness;
+
 
 //! Interface to visit a sample tree and perform operations on its nodes
 
@@ -108,6 +110,12 @@ public:
                 "ISampleVisitor::visit(InterferenceFunction2DParaCrystal  *)");
     }
 
+    virtual void visit(const LayerRoughness  *) {
+        throw NotImplementedException(
+                "ISampleVisitor::visit(LayerRoughness *)");
+    }
+
+
     virtual bool goForward(){ return true; }
     virtual bool goBack(){ return true; }
 };
diff --git a/Core/Samples/src/ISample.cpp b/Core/Samples/src/ISample.cpp
index 5a6e21b56aa4cb32365bfa77ddf3e98f7f3cb25a..71910444ff1f1d700f9882fc815b1d94d17913c2 100644
--- a/Core/Samples/src/ISample.cpp
+++ b/Core/Samples/src/ISample.cpp
@@ -18,6 +18,7 @@
 #include "ICompositeSample.h"
 #include "ICompositeIterator.h"
 #include "Utils.h"
+#include "SamplePrintVisitor.h"
 
 ISample *ISample::clone() const
 {
@@ -71,28 +72,10 @@ std::string ISample::addParametersToExternalPool(
     return new_path;
 }
 
-void ISample::print_structure()
+void ISample::printSampleTree()
 {
-    std::cout << getName() << " " << this << std::endl;
-    std::cout << "ISample::print_structure is broken\n";
-/*
-    if(getCompositeSample()) {
-        ICompositeIterator it = getCompositeSample()->createIterator();
-        it.first();
-        while(!it.is_done())
-        {
-            ISample *smp = it.get_current();
-            if(smp) {
-                int nlevel = (int)it.get_level();
-                for(int i=0; i<nlevel; i++) std::cout << "... ";
-                std::cout << (*smp) << std::endl;
-            } else {
-                std::cout << "NULL" << std::endl;
-            }
-            it.next();
-        }
-    }
-*/
+    SamplePrintVisitor visitor;
+    this->accept(&visitor);
 }
 
 bool ISample::containsMagneticMaterial() const
diff --git a/Core/Samples/src/LayerRoughness.cpp b/Core/Samples/src/LayerRoughness.cpp
index 40acccc5eaf55d1b0734d8d2b3905690d12a02ab..e2ce6cf4224d1dc5ae7631249b365d6269ebd653 100644
--- a/Core/Samples/src/LayerRoughness.cpp
+++ b/Core/Samples/src/LayerRoughness.cpp
@@ -23,7 +23,7 @@ LayerRoughness::LayerRoughness()
 , m_hurstParameter(0)
 , m_latteralCorrLength(0)
 {
-    setName("Roughness");
+    setName("LayerRoughness");
     init_parameters();
 }
 
@@ -32,7 +32,7 @@ LayerRoughness::LayerRoughness(double sigma, double hurstParameter, double latte
 , m_hurstParameter(hurstParameter)
 , m_latteralCorrLength(latteralCorrLength)
 {
-    setName("roughness");
+    setName("LayerRoughness");
     init_parameters();
 }
 
diff --git a/Core/Tools/inc/SampleMaterialVisitor.h b/Core/Tools/inc/SampleMaterialVisitor.h
index 098dd5dac698098bec413f565f7af892d4de0690..59cfe9f7e774aa803bf3d094d83d4abe12ec20b1 100644
--- a/Core/Tools/inc/SampleMaterialVisitor.h
+++ b/Core/Tools/inc/SampleMaterialVisitor.h
@@ -48,6 +48,8 @@ public:
     void visit(const InterferenceFunction1DParaCrystal  *);
     void visit(const InterferenceFunction2DParaCrystal  *);
 
+    void visit(const LayerRoughness  *);
+
     std::vector<const IMaterial *> getMaterials() const {
         return m_materials;
     }
diff --git a/Core/Tools/inc/SamplePrintVisitor.h b/Core/Tools/inc/SamplePrintVisitor.h
index 8814cb4dbce01362559d564cf0fcd83686b76109..7dda73f257ceaacadc574a4ef7e5081f7aa12a57 100644
--- a/Core/Tools/inc/SamplePrintVisitor.h
+++ b/Core/Tools/inc/SamplePrintVisitor.h
@@ -23,6 +23,7 @@ public:
     void visit(const LatticeBasis *sample);
     void visit(const IFormFactor *sample);
 
+
     void visit(const FormFactorFullSphere *sample);
     void visit(const FormFactorPyramid *sample);
     void visit(const FormFactorCylinder *sample);
@@ -32,6 +33,8 @@ public:
     void visit(const InterferenceFunction1DParaCrystal  *);
     void visit(const InterferenceFunction2DParaCrystal  *);
 
+    void visit(const LayerRoughness *sample);
+
     bool goForward();
     bool goBack();
 private:
diff --git a/Core/Tools/src/SampleMaterialVisitor.cpp b/Core/Tools/src/SampleMaterialVisitor.cpp
index 9d294c68953d04e22a903622c34d1cb2ca854a68..7a6992b36a4e764a4435ad789993ae0bcc43b09b 100644
--- a/Core/Tools/src/SampleMaterialVisitor.cpp
+++ b/Core/Tools/src/SampleMaterialVisitor.cpp
@@ -197,6 +197,12 @@ void SampleMaterialVisitor::visit(const InterferenceFunction2DParaCrystal*)
             "visit(InterferenceFunction2DParaCrystal *)");
 }
 
+void SampleMaterialVisitor::visit(const LayerRoughness*)
+{
+    throw NotImplementedException("SampleMaterialVisitor::"
+            "visit(LayerRoughness *)");
+}
+
 void SampleMaterialVisitor::addMaterial(const IMaterial* p_material)
 {
     if (p_material && std::find(m_materials.begin(), m_materials.end(),
diff --git a/Core/Tools/src/SamplePrintVisitor.cpp b/Core/Tools/src/SamplePrintVisitor.cpp
index d1b1a415bdff8413d3f1a73599154e0c401ee8f5..a4e93a54996a96654d8b810da8fcac40a3b0b71c 100644
--- a/Core/Tools/src/SamplePrintVisitor.cpp
+++ b/Core/Tools/src/SamplePrintVisitor.cpp
@@ -25,7 +25,7 @@ void SamplePrintVisitor::visit(const MultiLayer *sample)
 {
     assert(sample);
     std::cout << "----------------------------------------------" << std::endl;
-    std::cout << get_indent() << "PrintVisitor_MultiLayer " << sample->getName()
+    std::cout << get_indent() << "MultiLayer " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 
@@ -46,47 +46,33 @@ void SamplePrintVisitor::visit(const MultiLayer *sample)
 void SamplePrintVisitor::visit(const Layer *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_Layer " << sample->getName()
+    std::cout << get_indent() << "Layer " << sample->getName()
               << " " << (sample->getMaterial() ? sample->getMaterial()->getName() : "0_MATERIAL")
               << " " << sample->getRefractiveIndex()
               << " " << (*sample->getParameterPool())
               << std::endl;
-}
-
-
-/*
-void SamplePrintVisitor::visit(const LayerDecorator *sample)
-{
-    assert(sample);
-    std::cout << get_indent() << "PrintVisitor_LayerDecorator " << sample->getName()
-              << " " << (*sample->getParameterPool())
-              << std::endl;
-
-    goForward();
-
-    const Layer *layer = sample->getDecoratedLayer();
-    layer->accept(this);
 
     const IDecoration *decoration = sample->getDecoration();
-    decoration->accept(this);
-
-    goBack();
+    if(decoration) decoration->accept(this);
 }
-*/
+
 
 void SamplePrintVisitor::visit(const LayerInterface *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_LayerInterface " << sample->getName()
+    std::cout << get_indent() << "LayerInterface " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
+    const IRoughness *roughness = sample->getRoughness();
+    if(roughness) roughness->accept(this);
+
 }
 
 
 void SamplePrintVisitor::visit(const ParticleDecoration *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_ParticleDecoration " << sample->getName()
+    std::cout << get_indent() << "ParticleDecoration " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 
@@ -107,7 +93,7 @@ void SamplePrintVisitor::visit(const ParticleDecoration *sample)
 void SamplePrintVisitor::visit(const ParticleInfo *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_ParticleInfo " << sample->getName()
+    std::cout << get_indent() << "ParticleInfo " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 
@@ -122,7 +108,7 @@ void SamplePrintVisitor::visit(const ParticleInfo *sample)
 void SamplePrintVisitor::visit(const Particle *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_Particle " << sample->getName()
+    std::cout << get_indent() << "Particle " << sample->getName()
               << " Index:" << sample->getRefractiveIndex()
               << std::endl;
 
@@ -137,7 +123,7 @@ void SamplePrintVisitor::visit(const Particle *sample)
 void SamplePrintVisitor::visit(const ParticleCoreShell* sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_ParticleCoreShell " <<
+    std::cout << get_indent() << "ParticleCoreShell " <<
             sample->getName() << std::endl;
 
     goForward();
@@ -157,7 +143,7 @@ void SamplePrintVisitor::visit(const ParticleCoreShell* sample)
 void SamplePrintVisitor::visit(const MesoCrystal* sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_MesoCrystal " <<
+    std::cout << get_indent() << "MesoCrystal " <<
             sample->getName() << std::endl;
 
     goForward();
@@ -175,7 +161,7 @@ void SamplePrintVisitor::visit(const MesoCrystal* sample)
 void SamplePrintVisitor::visit(const Crystal* sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_Crystal " <<
+    std::cout << get_indent() << "Crystal " <<
             sample->getName() << std::endl;
 
     goForward();
@@ -189,7 +175,7 @@ void SamplePrintVisitor::visit(const Crystal* sample)
 void SamplePrintVisitor::visit(const LatticeBasis* sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_LatticeBasis " <<
+    std::cout << get_indent() << "LatticeBasis " <<
             sample->getName() << std::endl;
 
     goForward();
@@ -207,7 +193,7 @@ void SamplePrintVisitor::visit(const LatticeBasis* sample)
 void SamplePrintVisitor::visit(const IFormFactor *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_IFormFactor " << sample->getName()
+    std::cout << get_indent() << "IFormFactor " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 
@@ -217,7 +203,7 @@ void SamplePrintVisitor::visit(const IFormFactor *sample)
 void SamplePrintVisitor::visit(const FormFactorFullSphere *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_FormFactorFullSphere " << sample->getName()
+    std::cout << get_indent() << "FormFactorFullSphere " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
@@ -226,7 +212,7 @@ void SamplePrintVisitor::visit(const FormFactorFullSphere *sample)
 void SamplePrintVisitor::visit(const FormFactorCylinder *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_FormFactorCylinder " << sample->getName()
+    std::cout << get_indent() << "FormFactorCylinder " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
@@ -235,7 +221,7 @@ void SamplePrintVisitor::visit(const FormFactorCylinder *sample)
 void SamplePrintVisitor::visit(const FormFactorPyramid *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_FormFactorPyramid " << sample->getName()
+    std::cout << get_indent() << "FormFactorPyramid " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
@@ -244,7 +230,7 @@ void SamplePrintVisitor::visit(const FormFactorPyramid *sample)
 void SamplePrintVisitor::visit(const FormFactorPrism3 *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_FormFactorPrism3 " << sample->getName()
+    std::cout << get_indent() << "FormFactorPrism3 " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
@@ -253,7 +239,7 @@ void SamplePrintVisitor::visit(const FormFactorPrism3 *sample)
 void SamplePrintVisitor::visit(const IInterferenceFunction *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_IInterferenceFunction " << sample->getName()
+    std::cout << get_indent() << "IInterferenceFunction " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
@@ -262,7 +248,7 @@ void SamplePrintVisitor::visit(const IInterferenceFunction *sample)
 void SamplePrintVisitor::visit(const InterferenceFunction1DParaCrystal *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_InterferenceFunction1DParaCrystal" << sample->getName()
+    std::cout << get_indent() << "InterferenceFunction1DParaCrystal " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
@@ -270,10 +256,18 @@ void SamplePrintVisitor::visit(const InterferenceFunction1DParaCrystal *sample)
 void SamplePrintVisitor::visit(const InterferenceFunction2DParaCrystal *sample)
 {
     assert(sample);
-    std::cout << get_indent() << "PrintVisitor_InterferenceFunction2DParaCrystal" << sample->getName()
+    std::cout << get_indent() << "InterferenceFunction2DParaCrystal " << sample->getName()
               << " " << (*sample->getParameterPool())
               << std::endl;
 }
 
 
+void SamplePrintVisitor::visit(const LayerRoughness *sample)
+{
+    assert(sample);
+    std::cout << get_indent() << "LayerRoughness " << sample->getName()
+              << " " << (*sample->getParameterPool())
+              << std::endl;
+}
+
 
diff --git a/Doc/UserManual/Fitting.tex b/Doc/UserManual/Fitting.tex
index 2c13c694104b87661268bc89c992ed486b6776b1..a01ffbbf4552af71c1eae2efe4a279625140747c 100644
--- a/Doc/UserManual/Fitting.tex
+++ b/Doc/UserManual/Fitting.tex
@@ -160,7 +160,8 @@ fit_suite.setMinimizer(minimizer)
 
 where \Code{<Minimizer
 name>} and \Code{<algorithm>} can be chosen from the first and
-second column of Table~\ref{table:fit_minimizers} respectively. 
+second column of Table~\ref{table:fit_minimizers} respectively. The list of algorithms
+can also be obtained using \Code{MinimizerFactory.printCatalogue()} command.
 
 
 \begin{table}[h]
diff --git a/Doc/UserManual/UserManual.pdf b/Doc/UserManual/UserManual.pdf
index edee993ceeeaa3b1bdbd0a6573530bc1979dc83d..6811f1cdb46a1dcccb2f6fb2cd49b14bbb8e1a00 100644
Binary files a/Doc/UserManual/UserManual.pdf and b/Doc/UserManual/UserManual.pdf differ
diff --git a/Examples/python/fitting/ex001_SampleParametersIntro/SampleParametersIntro.py b/Examples/python/fitting/ex001_SampleParametersIntro/SampleParametersIntro.py
index 96b9bad3e75cae5c711119672446afd66007049f..0d9780bc90930d983291d27e144252b1de8511cd 100644
--- a/Examples/python/fitting/ex001_SampleParametersIntro/SampleParametersIntro.py
+++ b/Examples/python/fitting/ex001_SampleParametersIntro/SampleParametersIntro.py
@@ -57,6 +57,7 @@ def run_simulations():
     sample = get_sample()
     print "The sample contains following parameters ('name':value)"
     sample.printParameters()
+    sample.printSampleTree()
 
     simulation = get_simulation()
 
diff --git a/Examples/python/fitting/ex002_FitCylindersAndPrisms/FitCylindersPrisms.py b/Examples/python/fitting/ex002_FitCylindersAndPrisms/FitCylindersPrisms.py
index f3a14f856d327abc53193adda0d5e848722fe49c..585d8540c4c97ed7fb0f21f3bb7093cf1d308c85 100644
--- a/Examples/python/fitting/ex002_FitCylindersAndPrisms/FitCylindersPrisms.py
+++ b/Examples/python/fitting/ex002_FitCylindersAndPrisms/FitCylindersPrisms.py
@@ -135,10 +135,10 @@ def run_fitting():
     fitSuite = FitSuite()
     fitSuite.addSimulationAndRealData(simulation, real_data)#, chiModule)
 
-    MinimizerFactory.print_catalogue()
+    MinimizerFactory.printCatalogue()
 
     # setting fitting minimizer
-    fitSuite.setMinimizer(MinimizerFactory.createMinimizer("Minuit2","Migrad")) #: Minuit2, Migrad
+    #fitSuite.setMinimizer(MinimizerFactory.createMinimizer("Minuit2","Migrad")) #: Minuit2, Migrad
     #fitSuite.setMinimizer(MinimizerFactory.createMinimizer ("Minuit2","Simplex"))
     #fitSuite.setMinimizer(MinimizerFactory.createMinimizer("Minuit2","Combined"))
     #fitSuite.setMinimizer(MinimizerFactory.createMinimizer ("Minuit2","Scan"))
diff --git a/dev-tools/python-bindings/MakePyCore.py b/dev-tools/python-bindings/MakePyCore.py
index 96a1c36075b7d008e73b61dd531b7e1dc555e0fb..f20b8133e3421192a2f13ab84a74cdebe35e866c 100644
--- a/dev-tools/python-bindings/MakePyCore.py
+++ b/dev-tools/python-bindings/MakePyCore.py
@@ -125,8 +125,10 @@ def ManualClassTunings(mb):
     shared_ptrs = mb.decls( lambda decl: decl.name.startswith( 'shared_ptr<' ) )
     shared_ptrs.disable_warnings( messages.W1040 )
     # ISample
-    cl = mb.class_('ISample') # given class is only to teach pyplusplus to templates, but we do not need class itself to be visible in python, excluding it...
+    cl = mb.class_('ISample') 
     cl.member_function("accept").include();
+    cl.member_function("printSampleTree").include();
+    
     # ICompositeSample
     cl = mb.class_('ICompositeSample')
     cl.member_functions().exclude()
@@ -156,7 +158,7 @@ def ManualClassTunings(mb):
     cl.member_functions().exclude()
     cl.member_function("addParticle").include()
     #
-    cl = mb.class_('RealParameterWrapper') # given class is only to teach pyplusplus to templates, but we do not need class itself to be visible in python, excluding it...
+    cl = mb.class_('RealParameterWrapper') 
     cl.member_functions().exclude()
     cl.member_function("setValue").include()
     cl.member_function("getValue").include()