diff --git a/Solver/linearSystem.cpp b/Solver/linearSystem.cpp
index 76ca787e911ee0c05b6173fa3cda836f77671489..cc3be3107b87de6b69382ddeefcd982366a9c37b 100644
--- a/Solver/linearSystem.cpp
+++ b/Solver/linearSystem.cpp
@@ -6,8 +6,7 @@
 
 #include "Bindings.h"
 
-template<>
-void linearSystem<double>::registerBindings(binding *b){
+void linearSystemBase::registerBindings(binding *b){
   methodBinding *cm;
   classBinding *cb = b->addClass<linearSystemBase>("linearSystemBase");
   cb->setDescription("Base class for linear systems");
diff --git a/Solver/linearSystem.h b/Solver/linearSystem.h
index f120581da0b3f00fe3ebfd5367b92bc3b27db9a9..e5fc07f87678a2890aa59c4da2cfa6b9b0b1e2a4 100644
--- a/Solver/linearSystem.h
+++ b/Solver/linearSystem.h
@@ -23,6 +23,7 @@ class linearSystemBase {
   virtual int systemSolve() = 0;
   void setParameter (std::string key, std::string value);
   virtual void insertInSparsityPattern(int _row, int _col){};
+  static void registerBindings (binding*);
 };
 
 template <class scalar>
@@ -35,7 +36,6 @@ class linearSystem : public linearSystemBase {
   virtual void addToRightHandSide(int _row, const scalar &val) = 0;
   virtual void getFromRightHandSide(int _row, scalar &val) const = 0;
   virtual void getFromSolution(int _row, scalar &val) const = 0;
-  static void registerBindings (binding*);
   virtual double normInfRightHandSide() const = 0;
 };