diff --git a/Common/Bindings.h b/Common/Bindings.h
index 031c3dc40027e0f1d6ef42a50bd19cba07cec82c..ce97aa4f3ffa57f7e18abd5364a39d38b69825f6 100644
--- a/Common/Bindings.h
+++ b/Common/Bindings.h
@@ -1,5 +1,68 @@
-#ifndef _LUNA_SIGNATURE_H_
-#define _LUNA_SIGNATURE_H_
+#ifndef _BINDINGS_H_
+#define _BINDINGS_H_
+
+#ifndef HAVE_LUA //no bindings
+
+class methodBinding{};
+class constructorBinding{};
+template <class objectType, class returnType=void, class arg0Type=void, class arg1Type=void, class arg2Type=void, class arg3Type=void>
+class methodBindingTemplate:public methodBinding {
+  typedef returnType (objectType::*callback)(arg0Type,arg1Type,arg2Type,arg3Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class returnType, class arg0Type, class arg1Type, class arg2Type>
+class methodBindingTemplate<objectType,returnType,arg0Type,arg1Type,arg2Type,void>:public methodBinding {
+  typedef returnType (objectType::*callback)(arg0Type,arg1Type,arg2Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class returnType, class arg0Type, class arg1Type>
+class methodBindingTemplate<objectType,returnType,arg0Type,arg1Type,void,void>:public methodBinding {
+  typedef returnType (objectType::*callback)(arg0Type,arg1Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class returnType, class arg0Type>
+class methodBindingTemplate<objectType,returnType,arg0Type,void,void,void>:public methodBinding {
+  typedef returnType (objectType::*callback)(arg0Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class returnType>
+class methodBindingTemplate<objectType,returnType,void,void,void,void>:public methodBinding {
+  typedef returnType (objectType::*callback)();
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class arg0Type, class arg1Type, class arg2Type>
+class methodBindingTemplate<objectType,void,arg0Type,arg1Type,arg2Type,void>:public methodBinding {
+  typedef void (objectType::*callback)(arg0Type,arg1Type,arg2Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class arg0Type, class arg1Type>
+class methodBindingTemplate<objectType,void,arg0Type,arg1Type,void,void>:public methodBinding {
+  typedef void (objectType::*callback)(arg0Type,arg1Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType, class arg0Type>
+class methodBindingTemplate<objectType,void,arg0Type,void,void,void>:public methodBinding {
+  typedef void (objectType::*callback)(arg0Type);
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template <class objectType>
+class methodBindingTemplate<objectType,void,void,void,void,void>:public methodBinding {
+  typedef void (objectType::*callback)();
+  public:
+  methodBindingTemplate(const std::string luaname,callback f){}
+};
+template<class objectType, class arg0Type=void, class arg1Type=void, class arg2Type=void, class arg3Type=void>
+class constructorBindingTemplate:public constructorBinding {};
+
+#else // HAVE_LUA
 
 extern "C" {
 #include "lua.h"
@@ -8,9 +71,6 @@ extern "C" {
 #include <vector>
 
 
-class binding {
-};
-
 class methodBinding {
   public:
   std::string _luaname;
@@ -25,6 +85,9 @@ class constructorBinding {
   virtual int call (lua_State *L)=0;
 };
 
+
+// this class is largely copied from luna
+// todo : add  reference to luna and check luna  licence
 template <typename T> class classBinding {
   typedef struct { T *pT; bool owned;} userdataType;
 public:
@@ -455,3 +518,4 @@ class constructorBindingTemplate<objectType,void,void,void,void>:public construc
   }
 };
 #endif
+#endif
diff --git a/Solver/dgConservationLaw.h b/Solver/dgConservationLaw.h
index f500f9587847e3ecdc98063a755d2f46812cf581..7e037cd3e1312ce9f8d4bcf2e371438d070b8d0f 100644
--- a/Solver/dgConservationLaw.h
+++ b/Solver/dgConservationLaw.h
@@ -9,10 +9,8 @@
 #include "fullMatrix.h"
 class dataCacheDouble;
 class dataCacheMap;
-#ifdef HAVE_LUA
 class constructorBinding;
 class methodBinding;
-#endif
 
 class dgConservationLaw;
 
@@ -20,12 +18,10 @@ class dgBoundaryCondition {
  public:
   virtual ~dgBoundaryCondition () {}
   virtual dataCacheDouble *newBoundaryTerm(dataCacheMap &cacheMapLeft) const = 0;
-#if defined(HAVE_LUA)
   static const char className[];
   static const char parentClassName[];
   static methodBinding *methods[];
   static constructorBinding *constructorMethod;
-#endif
 };
 
 class dgConservationLaw {
@@ -62,12 +58,10 @@ class dgConservationLaw {
   dgBoundaryCondition *newOutsideValueBoundary(std::string outsideValueFunctionName);
   dgBoundaryCondition *new0FluxBoundary();
 
-  #ifdef HAVE_LUA
   static const char className[];
   static const char parentClassName[];
   static methodBinding *methods[];
   static constructorBinding *constructorMethod;
-  #endif
 };
 
 dgConservationLaw *dgNewPerfectGasLaw2d();
diff --git a/Solver/function.h b/Solver/function.h
index 666c60686eec06bbe48acc35070b695c2b7fa44d..88b6fe5fb64e33d043be662b409f9f5bebcc7eea 100644
--- a/Solver/function.h
+++ b/Solver/function.h
@@ -7,6 +7,8 @@
 #include <fullMatrix.h>
 class dataCacheMap;
 class MElement;
+class methodBinding;
+class constructorBinding;
 
 // those classes manage complex function dependencies and keep their values in cache so that they are not recomputed when it is not necessary. To do this, we use three classes : function, dataCache and dataCacheMap. The workflow is :
 //