diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp
index 434fbce0ec29f0ff3e51b8995618c7425f88922d..521aaf36e06fb0d77dcb60fb84e2c102444ecc72 100644
--- a/FunctionSpace/FunctionSpace.cpp
+++ b/FunctionSpace/FunctionSpace.cpp
@@ -10,6 +10,7 @@
 using namespace std;
 
 const size_t FunctionSpace::nGeoType = 9;
+bool FunctionSpace::once = false;
 
 FunctionSpace::FunctionSpace(void){
 }
@@ -20,7 +21,14 @@ FunctionSpace::~FunctionSpace(void){
       delete basis[i];
 }
 
-void FunctionSpace::build(GroupOfElement& goe, string family){
+void FunctionSpace::build(const GroupOfElement& goe, string family){
+  /*
+  if(once)
+    throw Exception("FS Once");
+
+  else
+    once = true;
+  */
   // Save GroupOfElement & Mesh //
   this->goe  = &goe;
   this->mesh = &(goe.getMesh());
diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h
index fc6867d3f58d304cca2d9036fd0ef4911840f294..decf948b1a61769d27f65b140b27b2c5db48d492 100644
--- a/FunctionSpace/FunctionSpace.h
+++ b/FunctionSpace/FunctionSpace.h
@@ -32,11 +32,12 @@ class FunctionSpace{
  protected:
   // Number of possible geomtrical topologies //
   static const size_t nGeoType;
+  static bool once;
 
  protected:
   // Geometry //
   const Mesh*     mesh;
-  GroupOfElement* goe;
+  const GroupOfElement* goe;
 
   // Basis //
   std::vector<const Basis*> basis;
@@ -61,7 +62,7 @@ class FunctionSpace{
   const Basis& getBasis(const MElement& element) const;
   const Basis& getBasis(size_t i) const;
 
-  GroupOfElement& getSupport(void) const;
+  const GroupOfElement& getSupport(void) const;
 
   bool   isScalar(void) const;
   size_t getForm(void)  const;
@@ -78,7 +79,7 @@ class FunctionSpace{
  protected:
   FunctionSpace(void);
 
-  void build(GroupOfElement& goe, std::string family);
+  void build(const GroupOfElement& goe, std::string family);
   void buildDof(void);
 };
 
@@ -148,7 +149,7 @@ inline const Basis& FunctionSpace::getBasis(size_t i) const{
   return *basis[i];
 }
 
-inline GroupOfElement& FunctionSpace::getSupport(void) const{
+inline const GroupOfElement& FunctionSpace::getSupport(void) const{
   return *goe;
 }
 
diff --git a/FunctionSpace/FunctionSpaceScalar.cpp b/FunctionSpace/FunctionSpaceScalar.cpp
index d178ad00730885f9113793879338c012996aa434..77d3d2281ba1df75d0da567a1503c781583d6468 100644
--- a/FunctionSpace/FunctionSpaceScalar.cpp
+++ b/FunctionSpace/FunctionSpaceScalar.cpp
@@ -1,7 +1,8 @@
 #include "Mapper.h"
 #include "FunctionSpaceScalar.h"
 
-FunctionSpaceScalar::FunctionSpaceScalar(GroupOfElement& goe, size_t order){
+FunctionSpaceScalar::FunctionSpaceScalar(const GroupOfElement& goe,
+                                         size_t order){
   this->scalar = true;
   this->form   = 0;
   this->order  = order;
@@ -9,8 +10,8 @@ FunctionSpaceScalar::FunctionSpaceScalar(GroupOfElement& goe, size_t order){
   build(goe, "hierarchical");
 }
 
-FunctionSpaceScalar::FunctionSpaceScalar(GroupOfElement& goe, size_t order,
-                                         std::string family){
+FunctionSpaceScalar::FunctionSpaceScalar(const GroupOfElement& goe,
+                                         size_t order, std::string family){
   this->scalar = true;
   this->form   = 0;
   this->order  = order;
diff --git a/FunctionSpace/FunctionSpaceScalar.h b/FunctionSpace/FunctionSpaceScalar.h
index ee9b12035ae3efe83ca1f6d23c2575bf062263a5..2ddddde0e942c6a7045a312a9afe48bb03662de5 100644
--- a/FunctionSpace/FunctionSpaceScalar.h
+++ b/FunctionSpace/FunctionSpaceScalar.h
@@ -16,8 +16,9 @@
 
 class FunctionSpaceScalar : public FunctionSpace{
  public:
-  FunctionSpaceScalar(GroupOfElement& goe, size_t order);
-  FunctionSpaceScalar(GroupOfElement& goe, size_t order, std::string family);
+  FunctionSpaceScalar(const GroupOfElement& goe, size_t order);
+  FunctionSpaceScalar(const GroupOfElement& goe, size_t order,
+                      std::string family);
 
   virtual ~FunctionSpaceScalar(void);
 
diff --git a/FunctionSpace/FunctionSpaceVector.cpp b/FunctionSpace/FunctionSpaceVector.cpp
index 0c11bbd62ad0864ea6c53154c1bfaaacd14a5f91..1fb78e7d39ec823f194d7308dd9b6b671cd1d71e 100644
--- a/FunctionSpace/FunctionSpaceVector.cpp
+++ b/FunctionSpace/FunctionSpaceVector.cpp
@@ -1,7 +1,8 @@
 #include "Mapper.h"
 #include "FunctionSpaceVector.h"
 
-FunctionSpaceVector::FunctionSpaceVector(GroupOfElement& goe, size_t order){
+FunctionSpaceVector::FunctionSpaceVector(const GroupOfElement& goe,
+                                         size_t order){
   this->scalar = false;
   this->form   = 1;
   this->order  = order;
@@ -9,8 +10,8 @@ FunctionSpaceVector::FunctionSpaceVector(GroupOfElement& goe, size_t order){
   build(goe, "hierarchical");
 }
 
-FunctionSpaceVector::FunctionSpaceVector(GroupOfElement& goe, size_t order,
-                                         std::string family){
+FunctionSpaceVector::FunctionSpaceVector(const GroupOfElement& goe,
+                                         size_t order, std::string family){
   this->scalar = false;
   this->form   = 1;
   this->order  = order;
diff --git a/FunctionSpace/FunctionSpaceVector.h b/FunctionSpace/FunctionSpaceVector.h
index 4914e888c15b67e7ef5ac0a3eb16ec9c7517304e..c20f4f60f8ed6d641fceade38c9dac8f8cdbf75f 100644
--- a/FunctionSpace/FunctionSpaceVector.h
+++ b/FunctionSpace/FunctionSpaceVector.h
@@ -17,8 +17,9 @@
 
 class FunctionSpaceVector : public FunctionSpace{
  public:
-  FunctionSpaceVector(GroupOfElement& goe, size_t order);
-  FunctionSpaceVector(GroupOfElement& goe, size_t order, std::string family);
+  FunctionSpaceVector(const GroupOfElement& goe, size_t order);
+  FunctionSpaceVector(const GroupOfElement& goe, size_t order,
+                      std::string family);
 
   virtual ~FunctionSpaceVector(void);