diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp
index 3b2617342aa51335ffba6df3fdcad1d92f4d5ba1..1f16e39ba2f4983f8a10c5d7f72f7b41ee578c2d 100644
--- a/Geo/GModel.cpp
+++ b/Geo/GModel.cpp
@@ -1380,12 +1380,17 @@ void GModel::save(std::string fileName){
 
 #ifdef HAVE_LUA
 #include "Bindings.h"
+static GModel *myConstructorPtr(){
+  return new GModel;
+}
 void GModel::registerBindings(binding *b){
   classBinding *cb = b->addClass<GModel>("GModel");
   methodBinding *cm;
   cm = cb->addMethod("mesh",&GModel::mesh);
   cm = cb->addMethod("load",&GModel::load);
   cm = cb->addMethod("save",&GModel::save);
-  cb->setConstructor(constructorPtr<GModel>);
+  //  cb->setConstructor(constructorPtr<GModel>);
+  // FIXME AGAIN !!!!!!!! JF
+  cb->setConstructor(myConstructorPtr);
 }
 #endif
diff --git a/Numeric/fullMatrix.cpp b/Numeric/fullMatrix.cpp
index d15f985431994d3bd03d7ae9dfb8f8ce01e2393e..25c4bc3af1ddad40f67f8fedcb0364ded84c7f63 100644
--- a/Numeric/fullMatrix.cpp
+++ b/Numeric/fullMatrix.cpp
@@ -292,6 +292,12 @@ bool fullMatrix<double>::svd(fullMatrix<double> &V, fullVector<double> &S)
 #endif
 
 #include "Bindings.h"
+
+// I DID FIX IT FOR NOW ... SHOULD BE BETTER -- JF
+static fullMatrix<double> *myConstructorPtr(int a0, int a1){
+  return new fullMatrix<double>(a0,a1);
+}
+
 template<>
 void fullMatrix<double>::registerBindings(binding *b){
   classBinding *cb = b->addClass<fullMatrix<double> >("fullMatrix");
@@ -302,5 +308,6 @@ void fullMatrix<double>::registerBindings(binding *b){
   cb->addMethod("set",&fullMatrix<double>::set);
   cb->addMethod("gemm",&fullMatrix<double>::gemm);
   // FIXME DOES NOT COMPILE ON MAC
-  cb->setConstructor(constructorPtr<fullMatrix<double>,int,int>);
+  cb->setConstructor(myConstructorPtr);
+  //  cb->setConstructor(constructorPtr<fullMatrix<double>,int,int>);
 }
diff --git a/Solver/dgConservationLaw.cpp b/Solver/dgConservationLaw.cpp
index fce315c2a3bb54fee79db05a086491a81e71b453..d66c9dfe824e4f1d6f52d249eaf2b4f689444b96 100644
--- a/Solver/dgConservationLaw.cpp
+++ b/Solver/dgConservationLaw.cpp
@@ -71,8 +71,6 @@ void dgConservationLaw::registerBindings(binding *b){
   cb->addMethod("newOutsideValueBoundary",&dgConservationLaw::newOutsideValueBoundary);
 }
 
-
-
 void dgBoundaryCondition::registerBindings(binding *b){
   classBinding *cb = b->addClass<dgBoundaryCondition>("dgBoundaryCondition");
 }
diff --git a/Solver/dgConservationLawAdvection.cpp b/Solver/dgConservationLawAdvection.cpp
index a8b02efa194eee511ade39d087a60ab745004027..adedf3a207233249ab3272e0fba10dc83b365d9c 100644
--- a/Solver/dgConservationLawAdvection.cpp
+++ b/Solver/dgConservationLawAdvection.cpp
@@ -95,8 +95,13 @@ dgConservationLawAdvection::dgConservationLawAdvection(std::string vFunctionName
 
 #include "Bindings.h"
 
+static dgConservationLawAdvection *myConstructorPtr(std::string a,std::string b){
+  return new dgConservationLawAdvection(a,b);
+}
+
 void dgConservationLawAdvectionRegisterBindings (binding *b){
   classBinding *cb = b->addClass<dgConservationLawAdvection>("dgConservationLawAdvection");
-  cb->setConstructor(constructorPtr<dgConservationLawAdvection,std::string,std::string>);
+  //  cb->setConstructor(constructorPtr<dgConservationLawAdvection,std::string,std::string>);
+  cb->setConstructor(myConstructorPtr);
   cb->setParentClass<dgConservationLaw>();
 }
diff --git a/Solver/dgConservationLawPerfectGas.cpp b/Solver/dgConservationLawPerfectGas.cpp
index 5a21432eea53711356582724ff11e1b57aaf9ef0..756a397c54986c9c38359dca76e0d91718774f06 100644
--- a/Solver/dgConservationLawPerfectGas.cpp
+++ b/Solver/dgConservationLawPerfectGas.cpp
@@ -312,10 +312,15 @@ class dgBoundaryConditionPerfectGasLaw2dFreeStream : public dgBoundaryCondition
 
 #include "Bindings.h"
 
+static dgPerfectGasLaw2d *myConstructorPtr(){
+  return new dgPerfectGasLaw2d ;
+}
+
 void dgPerfectGasLaw2dRegisterBindings (binding *b){
   classBinding *cb = b->addClass<dgPerfectGasLaw2d>("dgPerfectGasLaw2d");
   methodBinding *cm;
   cb->addMethod("newWallBoundary",&dgPerfectGasLaw2d::newWallBoundary);
-  cb->setConstructor(constructorPtr<dgPerfectGasLaw2d>);
+  //  cb->setConstructor(constructorPtr<dgPerfectGasLaw2d>);
+  cb->setConstructor(myConstructorPtr);
   cb->setParentClass<dgConservationLaw>();
 }
diff --git a/Solver/dgConservationLawShallowWater2d.cpp b/Solver/dgConservationLawShallowWater2d.cpp
index de798d27b071ebb489974f9c1352e721a174dbc3..aefa83bed37821a86c87c238ef24aa7a18014f0c 100644
--- a/Solver/dgConservationLawShallowWater2d.cpp
+++ b/Solver/dgConservationLawShallowWater2d.cpp
@@ -141,10 +141,14 @@ dgBoundaryCondition *dgConservationLawShallowWater2d::newBoundaryWall(){
 }
 
 #include "Bindings.h"
+static dgConservationLawShallowWater2d *myConstructorPtr(){
+  return new dgConservationLawShallowWater2d;
+}
 void dgConservationLawShallowWater2dRegisterBindings (binding *b){
   classBinding *cb = b->addClass<dgConservationLawShallowWater2d>("dgConservationLawShallowWater2d");
   methodBinding *cm;
   cb->addMethod("newBoundaryWall",&dgConservationLawShallowWater2d::newBoundaryWall);
-  cb->setConstructor(constructorPtr<dgConservationLawShallowWater2d>);
+  //  cb->setConstructor(constructorPtr<dgConservationLawShallowWater2d>);
+  cb->setConstructor(myConstructorPtr);
   cb->setParentClass<dgConservationLaw>();
 }
diff --git a/Solver/dgConservationLawWaveEquation.cpp b/Solver/dgConservationLawWaveEquation.cpp
index 583b79c7e0c818c5d4a877c3ebbe35de48b4d97e..cf9e894a32af21a514095669c25a0db3877f800d 100644
--- a/Solver/dgConservationLawWaveEquation.cpp
+++ b/Solver/dgConservationLawWaveEquation.cpp
@@ -136,10 +136,14 @@ dgBoundaryCondition *dgConservationLawWaveEquation::newBoundaryWall()const{
 }
 
 #include "Bindings.h"
+static dgConservationLawWaveEquation *myConstructorPtr(int d){
+  return new dgConservationLawWaveEquation (d);
+}
 void dgConservationLawWaveEquationRegisterBindings(binding *b){
   classBinding *cb = b->addClass<dgConservationLawWaveEquation> ("dgConservationLawWaveEquation");
   methodBinding *cm;
   cb->addMethod("newBoundaryWall",&dgConservationLawWaveEquation::newBoundaryWall);
-  cb->setConstructor(constructorPtr<dgConservationLawWaveEquation,int>);
+  //  cb->setConstructor(constructorPtr<dgConservationLawWaveEquation,int>);
+  cb->setConstructor(myConstructorPtr);
   cb->setParentClass<dgConservationLaw>();
 }
diff --git a/Solver/dgSlopeLimiter.cpp b/Solver/dgSlopeLimiter.cpp
index 379172738ef20b4ff834609078e2cd922922a6c3..b0b11effaf54420a6b140ffedc875c0de31f7b7c 100644
--- a/Solver/dgSlopeLimiter.cpp
+++ b/Solver/dgSlopeLimiter.cpp
@@ -5,8 +5,8 @@
 
 //----------------------------------------------------------------------------------   
 bool dgSlopeLimiter::apply ( dgDofContainer &solution,   
-    std::vector<dgGroupOfElements*> &eGroups,   
-    std::vector<dgGroupOfFaces*> &fGroups) 
+			     std::vector<dgGroupOfElements*> &eGroups,   
+			     std::vector<dgGroupOfFaces*> &fGroups) 
 {    
 
   //WARNING FOR ONLY 1 GROUP OF FACES    
diff --git a/Solver/dgSystemOfEquations.cpp b/Solver/dgSystemOfEquations.cpp
index df6070965a80fa91c27cde15c6943a0e21960f49..60983b9eace4c3467baa332ce9e7e710e93e2687 100644
--- a/Solver/dgSystemOfEquations.cpp
+++ b/Solver/dgSystemOfEquations.cpp
@@ -38,14 +38,19 @@ void dgSystemOfEquations::setConservationLaw (dgConservationLaw *law){
 }
 
 #include "Bindings.h"
+
+static dgSystemOfEquations *myConstructorPtr(GModel* gm){
+  return new dgSystemOfEquations(gm);
+}
+
 void dgSystemOfEquations::registerBindings(binding *b){
   classBinding *cb = b->addClass<dgSystemOfEquations>("dgSystemOfEquations");
   cb->setDescription("a class to rule them all :-) -- bad description, this class will be removed anyway");
-  cb->setConstructor(constructorPtr<dgSystemOfEquations,GModel*>);
+  cb->setConstructor(myConstructorPtr);
   methodBinding *cm;
   cm = cb->addMethod("setConservationLaw",&dgSystemOfEquations::setConservationLaw);
   cm->setArgNames("law",NULL);
-  cm->setDescription("set the conservation law this system solve");
+  cm->setDescription("set the conservation law this system solves");
   cm = cb->addMethod("setup",&dgSystemOfEquations::setup);
   cm->setDescription("allocate and init internal stuff, call this function after setOrder and setLaw and before anything else on this instance");
   cm = cb->addMethod("exportSolution",&dgSystemOfEquations::exportSolution);
diff --git a/Solver/function.cpp b/Solver/function.cpp
index 209fddc2a26c02632d15a9d965478d334a920f09..3a1189d9ab761419e23010ee671be0e19bc34569 100644
--- a/Solver/function.cpp
+++ b/Solver/function.cpp
@@ -147,11 +147,15 @@ void function::registerDefaultFunctions()
   function::add("XYZ", new functionXYZ);
 }
 
+static functionConstant *myConstructorPtr(fullMatrix<double>*m){
+  return new functionConstant(m);
+}
 void function::registerBindings(binding *b){
   classBinding *cb = b->addClass<function>("function");
   cb->addMethod("getName",&function::getName);
   cb = b->addClass<functionConstant>("functionConstant");
-  cb->setConstructor(constructorPtr<functionConstant,fullMatrix<double>*>);
+  cb->setConstructor(myConstructorPtr);
+  //  cb->setConstructor(constructorPtr<functionConstant,fullMatrix<double>*>);
   cb->setParentClass<function>();
 }