diff --git a/Solver/linearSystem.cpp b/Solver/linearSystem.cpp
index edc45772d0b021b02478299de9208a502e84d804..76ca787e911ee0c05b6173fa3cda836f77671489 100644
--- a/Solver/linearSystem.cpp
+++ b/Solver/linearSystem.cpp
@@ -8,11 +8,18 @@
 
 template<>
 void linearSystem<double>::registerBindings(binding *b){
-  classBinding *cb = b->addClass<linearSystem<double> >("linearSystemDouble");
-  cb->setDescription("An abstraction of a linear system Ax = b.");
   methodBinding *cm;
+  classBinding *cb = b->addClass<linearSystemBase>("linearSystemBase");
+  cb->setDescription("Base class for linear systems");
+  cm = cb->addMethod("setParameter", &linearSystemBase::setParameter);
+  cm->setDescription("set linearSystem parameters");
+  cm->setArgNames("key","value",NULL);
+  
+  cb = b->addClass<linearSystem<double> >("linearSystemDouble");
+  cb->setDescription("An abstraction of a linear system Ax = b.");
   cm = cb->addMethod("systemSolve", &linearSystem<double>::systemSolve);
   cm->setDescription("compute x = A^{-1}b");
+  cb->setParentClass<linearSystemBase>();
   
 #ifdef HAVE_TAUCS
   cb = b->addClass<linearSystemCSRTaucs<double> >("linearSystemCSRTaucs");
@@ -39,6 +46,7 @@ void linearSystem<double>::registerBindings(binding *b){
   cb->setDescription("An abstraction of a linear system Ax = b.");
   cm = cb->addMethod("systemSolve", &linearSystem<fullMatrix<double> >::systemSolve);
   cm->setDescription("compute x = A^{-1}b");
+  cb->setParentClass<linearSystemBase>();
 #ifdef HAVE_PETSC
   linearSystemPETScRegisterBindings (b);
 #endif