diff --git a/FunctionSpace/LineNedelecBasis.cpp b/FunctionSpace/LineNedelecBasis.cpp
index 7f3d9fd8aa770bea510dba554ce735ff526019a6..1cab63473b13ccccd096a21a273be8297e3bc47a 100644
--- a/FunctionSpace/LineNedelecBasis.cpp
+++ b/FunctionSpace/LineNedelecBasis.cpp
@@ -10,8 +10,8 @@ LineNedelecBasis::LineNedelecBasis(void){
   nRefSpace = refSpace->getNPermutation();
 
   // Set Basis Type //
-  order = 1;
-  
+  order = 0;
+
   type = 1;
   dim  = 1;
 
@@ -38,7 +38,7 @@ LineNedelecBasis::LineNedelecBasis(void){
   for(unsigned int s = 0; s < nRefSpace; s++)
     basis[s] = new vector<Polynomial>*[nFunction];
 
-  // Nedelec // 
+  // Nedelec //
   basis[0][0] = new vector<Polynomial>(first);
   basis[1][0] = new vector<Polynomial>(second);
 }
diff --git a/FunctionSpace/QuadEdgeBasis.cpp b/FunctionSpace/QuadEdgeBasis.cpp
index 463e960fc1bb6bf39129b2eef7b026e017d61edd..66b689b007a69d01fc520dc64dba63231ab10592 100644
--- a/FunctionSpace/QuadEdgeBasis.cpp
+++ b/FunctionSpace/QuadEdgeBasis.cpp
@@ -6,14 +6,14 @@ using namespace std;
 QuadEdgeBasis::QuadEdgeBasis(int order){
   // Set Basis Type //
   this->order = order;
-  
+
   type = 1;
   dim  = 2;
 
   nVertex = 0;
   nEdge   = 4 * (order + 1);
-  nFace   = 0;
-  nCell   = 2 * (order + 1) * order;
+  nFace   = 2 * (order + 1) * order;
+  nCell   = 0;
 
   nEdgeClosure = 2;
   nFaceClosure = 0;
@@ -41,86 +41,86 @@ QuadEdgeBasis::QuadEdgeBasis(int order){
   Legendre::legendre(legendre, order);
 
   // Vertices definig Edges & Permutations //
-  const int edgeV[2][4][2] = 
+  const int edgeV[2][4][2] =
     {
       { {0, 1}, {1, 2}, {2, 3}, {3, 0} },
       { {1, 0}, {2, 1}, {3, 2}, {0, 3} }
-    }; 
+    };
 
   // Basis //
   node = new vector<vector<Polynomial>*>(nVertex);
   edge = new vector<vector<vector<Polynomial>*>*>(2);
   face = new vector<vector<vector<Polynomial>*>*>(0);
   cell = new vector<vector<Polynomial>*>(nCell);
-  
+
   (*edge)[0] = new vector<vector<Polynomial>*>(nEdge);
   (*edge)[1] = new vector<vector<Polynomial>*>(nEdge);
 
 
-  // Lagrange // 
-  lagrange[0] = 
+  // Lagrange //
+  lagrange[0] =
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) *
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0));
 
-  lagrange[1] = 
+  lagrange[1] =
     (Polynomial(1, 1, 0, 0)) *
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0));
 
-  lagrange[2] = 
+  lagrange[2] =
     (Polynomial(1, 1, 0, 0)) *
     (Polynomial(1, 0, 1, 0));
 
-  lagrange[3] = 
+  lagrange[3] =
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) *
     (Polynomial(1, 0, 1, 0));
 
   // Lagrange Sum //
   for(int e = 0; e < 4; e++)
-    lagrangeSum[e] = 
-      lagrange[edgeV[0][e][0]] + 
+    lagrangeSum[e] =
+      lagrange[edgeV[0][e][0]] +
       lagrange[edgeV[0][e][1]];
-    
+
   // Lifting //
-  lifting[0] = 
+  lifting[0] =
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0));
 
-  lifting[1] = 
+  lifting[1] =
     (Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0));
 
-  lifting[2] = 
+  lifting[2] =
     (Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 1, 0));
 
-  lifting[3] = 
+  lifting[3] =
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 1, 0));
 
   // Lifting Sub //
   for(int e = 0; e < 4; e++){
-    liftingSub[0][e] = 
-      lifting[edgeV[0][e][0]] - 
+    liftingSub[0][e] =
+      lifting[edgeV[0][e][0]] -
       lifting[edgeV[0][e][1]];
 
-    liftingSub[1][e] = 
-      lifting[edgeV[1][e][0]] - 
+    liftingSub[1][e] =
+      lifting[edgeV[1][e][0]] -
       lifting[edgeV[1][e][1]];
   }
 
 
-  // Edge Based (Nedelec) // 
+  // Edge Based (Nedelec) //
   Polynomial oneHalf(0.5, 0, 0, 0);
 
   for(int c = 0; c < 2; c++){
     for(int e = 0; e < 4; e++){
-      (*(*edge)[c])[e] = 
+      (*(*edge)[c])[e] =
 	new vector<Polynomial>(liftingSub[c][e].gradient());
-    
+
       (*(*edge)[c])[e]->at(0).mul(lagrangeSum[e]);
       (*(*edge)[c])[e]->at(1).mul(lagrangeSum[e]);
       (*(*edge)[c])[e]->at(2).mul(lagrangeSum[e]);
-  
+
       (*(*edge)[c])[e]->at(0).mul(oneHalf);
       (*(*edge)[c])[e]->at(1).mul(oneHalf);
       (*(*edge)[c])[e]->at(2).mul(oneHalf);
@@ -131,19 +131,19 @@ QuadEdgeBasis::QuadEdgeBasis(int order){
   // Edge Based (High Order) //
   for(int c = 0; c < 2; c++){
     unsigned int i = 0;
-    
+
     for(int l = 1; l < orderPlus; l++){
       for(int e = 0; e < 4; e++){
-	(*(*edge)[c])[i + 4] = 
-	  new vector<Polynomial>((intLegendre[l].compose(liftingSub[c][e]) * 
+	(*(*edge)[c])[i + 4] =
+	  new vector<Polynomial>((intLegendre[l].compose(liftingSub[c][e]) *
 				  lagrangeSum[e]).gradient());
-	
+
 	i++;
       }
     }
   }
 
-  
+
   // Cell Based (Preliminary) //
   Polynomial px   = Polynomial(2, 1, 0, 0);
   Polynomial py   = Polynomial(2, 0, 1, 0);
@@ -164,13 +164,13 @@ QuadEdgeBasis::QuadEdgeBasis(int order){
   // Cell Based (Type 1) //
   for(int l1 = 1; l1 < orderPlus; l1++){
     for(int l2 = 1; l2 < orderPlus; l2++){
-      (*cell)[i] = 
+      (*cell)[i] =
 	new vector<Polynomial>((iLegendreX[l1] * iLegendreY[l2]).gradient());
 
       i++;
     }
   }
-  
+
   // Cell Based (Type 2) //
   for(int l1 = 1; l1 < orderPlus; l1++){
     for(int l2 = 1; l2 < orderPlus; l2++){
@@ -208,10 +208,10 @@ QuadEdgeBasis::QuadEdgeBasis(int order){
   // (x, y) = Zaglmayr Ref Quad
   // (u, v) = Gmsh     Ref Quad
 
-  Polynomial  mapX(Polynomial(0.5, 1, 0, 0) + 
+  Polynomial  mapX(Polynomial(0.5, 1, 0, 0) +
 		   Polynomial(0.5, 0, 0, 0));
 
-  Polynomial  mapY(Polynomial(0.5, 0, 1, 0) + 
+  Polynomial  mapY(Polynomial(0.5, 0, 1, 0) +
 		   Polynomial(0.5, 0, 0, 0));
 
   for(int i = 0; i < nEdgeClosure; i++){
@@ -242,7 +242,7 @@ QuadEdgeBasis::~QuadEdgeBasis(void){
   // Vertex Based //
   for(int i = 0; i < nVertex; i++)
     delete (*node)[i];
-  
+
   delete node;
 
 
@@ -250,10 +250,10 @@ QuadEdgeBasis::~QuadEdgeBasis(void){
   for(int c = 0; c < 2; c++){
     for(int i = 0; i < nEdge; i++)
       delete (*(*edge)[c])[i];
-    
+
     delete (*edge)[c];
   }
-  
+
   delete edge;
 
 
diff --git a/FunctionSpace/QuadNodeBasis.cpp b/FunctionSpace/QuadNodeBasis.cpp
index 253d8f049edf76d25da638ae0b23972c9f27da6a..2acd7dc20236b90e905a7f410853be03d5249648 100644
--- a/FunctionSpace/QuadNodeBasis.cpp
+++ b/FunctionSpace/QuadNodeBasis.cpp
@@ -12,8 +12,8 @@ QuadNodeBasis::QuadNodeBasis(int order){
 
   nVertex = 4;
   nEdge   = 4 * (order - 1);
-  nFace   = 0;
-  nCell   =     (order - 1) * (order - 1);
+  nFace   =     (order - 1) * (order - 1);
+  nCell   = 0;
 
   nEdgeClosure = 2;
   nFaceClosure = 0;
@@ -27,13 +27,13 @@ QuadNodeBasis::QuadNodeBasis(int order){
 
   // Legendre Polynomial //
   Legendre::integrated(legendre, order);
-  
+
   // Vertices definig Edges & Permutations //
-  const int edgeV[2][4][2] = 
+  const int edgeV[2][4][2] =
     {
       { {0, 1}, {1, 2}, {2, 3}, {3, 0} },
       { {1, 0}, {2, 1}, {3, 2}, {0, 3} }
-    }; 
+    };
 
   // Basis //
   node = new vector<Polynomial*>(nVertex);
@@ -46,48 +46,48 @@ QuadNodeBasis::QuadNodeBasis(int order){
 
 
   // Lifting //
-  lifting[0] = 
+  lifting[0] =
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0));
 
-  lifting[1] = 
+  lifting[1] =
     (Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0));
 
-  lifting[2] = 
+  lifting[2] =
     (Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 1, 0));
 
-  lifting[3] = 
+  lifting[3] =
     (Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) +
     (Polynomial(1, 0, 1, 0));
 
   // Lifting Sub //
   for(int e = 0; e < 4; e++){
-    liftingSub[0][e] = 
-      lifting[edgeV[0][e][0]] - 
+    liftingSub[0][e] =
+      lifting[edgeV[0][e][0]] -
       lifting[edgeV[0][e][1]];
-    
-    liftingSub[1][e] = 
-      lifting[edgeV[1][e][0]] - 
+
+    liftingSub[1][e] =
+      lifting[edgeV[1][e][0]] -
       lifting[edgeV[1][e][1]];
   }
 
 
-  // Vertex Based (Lagrange) // 
-  (*node)[0] = 
+  // Vertex Based (Lagrange) //
+  (*node)[0] =
     new Polynomial((Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) *
 		   (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)));
 
-  (*node)[1] = 
+  (*node)[1] =
     new Polynomial((Polynomial(1, 1, 0, 0)) *
 		   (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)));
 
-  (*node)[2] = 
+  (*node)[2] =
     new Polynomial((Polynomial(1, 1, 0, 0)) *
 		   (Polynomial(1, 0, 1, 0)));
 
-  (*node)[3] = 
+  (*node)[3] =
     new Polynomial((Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) *
 		   (Polynomial(1, 0, 1, 0)));
 
@@ -98,8 +98,8 @@ QuadNodeBasis::QuadNodeBasis(int order){
 
     for(int l = 1; l < order; l++){
       for(int e = 0; e < 4; e++){
-	(*(*edge)[c])[i] = 
-	  new Polynomial(legendre[l].compose(liftingSub[c][e]) * 
+	(*(*edge)[c])[i] =
+	  new Polynomial(legendre[l].compose(liftingSub[c][e]) *
 			 (*(*node)[edgeV[c][e][0]] + *(*node)[edgeV[c][e][1]]));
 
 	i++;
@@ -119,7 +119,7 @@ QuadNodeBasis::QuadNodeBasis(int order){
 
   for(int l1 = 1; l1 < order; l1++){
     for(int l2 = 1; l2 < order; l2++){
-      (*cell)[i] = 
+      (*cell)[i] =
 	new Polynomial(legendre[l1].compose(px) * legendre[l2].compose(py));
 
       i++;
@@ -134,10 +134,10 @@ QuadNodeBasis::QuadNodeBasis(int order){
   // (x, y) = Zaglmayr Ref Quad
   // (u, v) = Gmsh     Ref Quad
 
-  Polynomial  mapX(Polynomial(0.5, 1, 0, 0) + 
+  Polynomial  mapX(Polynomial(0.5, 1, 0, 0) +
 		   Polynomial(0.5, 0, 0, 0));
 
-  Polynomial  mapY(Polynomial(0.5, 0, 1, 0) + 
+  Polynomial  mapY(Polynomial(0.5, 0, 1, 0) +
 		   Polynomial(0.5, 0, 0, 0));
 
   for(int i = 0; i < nVertex; i++)
@@ -149,7 +149,7 @@ QuadNodeBasis::QuadNodeBasis(int order){
 
   for(int i = 0; i < nCell; i++)
     *(*cell)[i] = (*cell)[i]->compose(mapX, mapY);
-  
+
 
   // Free Temporary Sapce //
   delete[] legendre;
@@ -159,7 +159,7 @@ QuadNodeBasis::~QuadNodeBasis(void){
   // Vertex Based //
   for(int i = 0; i < nVertex; i++)
     delete (*node)[i];
-  
+
   delete node;
 
 
@@ -167,10 +167,10 @@ QuadNodeBasis::~QuadNodeBasis(void){
   for(int c = 0; c < 2; c++){
     for(int i = 0; i < nEdge; i++)
       delete (*(*edge)[c])[i];
-    
+
     delete (*edge)[c];
   }
-  
+
   delete edge;
 
 
diff --git a/FunctionSpace/TetNedelecBasis.cpp b/FunctionSpace/TetNedelecBasis.cpp
index f339dc58d907a440e04eda8a9260557d5e1c7a5b..a2cf5ecc30d16f7e6bc00290e5be922b3bb78bd2 100644
--- a/FunctionSpace/TetNedelecBasis.cpp
+++ b/FunctionSpace/TetNedelecBasis.cpp
@@ -12,7 +12,7 @@ TetNedelecBasis::TetNedelecBasis(void){
     edgeV = refSpace->getAllEdge();
 
   // Set Basis Type //
-  this->order = 1;
+  this->order = 0;
 
   type = 1;
   dim  = 3;
diff --git a/FunctionSpace/TriEdgeBasis.cpp b/FunctionSpace/TriEdgeBasis.cpp
index 3ec8a5993a2937790ec0857a4ede7ca328d55971..f9c1fe7704ee626ab1a03fad95f226971e808e83 100644
--- a/FunctionSpace/TriEdgeBasis.cpp
+++ b/FunctionSpace/TriEdgeBasis.cpp
@@ -20,8 +20,8 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){
 
   nVertex   = 0;
   nEdge     = 3 * (order + 1);
-  nFace     = 0;
-  nCell     = ((order - 1) * order + order - 1);
+  nFace     = ((order - 1) * order + order - 1);
+  nCell     = 0;
   nFunction = nVertex + nEdge + nFace + nCell;
 
   // Alloc Some Space //
@@ -97,7 +97,7 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){
     }
   }
 
-  // Cell Based //
+  // Face Based //
 
   // Preliminaries
   const Polynomial p = lagrange[2] * 2 - Polynomial(1, 0, 0, 0);
diff --git a/FunctionSpace/TriNedelecBasis.cpp b/FunctionSpace/TriNedelecBasis.cpp
index 066bd34d8cc4eb6a4aae7ebc0b6a57233ea98bb6..e16146f436b5435acd7e3cefa6ef0254668dc519 100644
--- a/FunctionSpace/TriNedelecBasis.cpp
+++ b/FunctionSpace/TriNedelecBasis.cpp
@@ -12,7 +12,7 @@ TriNedelecBasis::TriNedelecBasis(void){
     edgeV = refSpace->getAllEdge();
 
   // Set Basis Type //
-  order = 1;
+  order = 0;
 
   type = 1;
   dim  = 2;
diff --git a/FunctionSpace/TriNodeBasis.cpp b/FunctionSpace/TriNodeBasis.cpp
index 55d769c73dcd922fcfba48cdc8724073615c68bc..dfad8d928d268956994455bd76eebb0081b4050d 100644
--- a/FunctionSpace/TriNodeBasis.cpp
+++ b/FunctionSpace/TriNodeBasis.cpp
@@ -14,14 +14,14 @@ TriNodeBasis::TriNodeBasis(unsigned int order){
 
   // Set BasisTwo Type //
   this->order = order;
-  
+
   type = 0;
   dim  = 2;
 
   nVertex   = 3;
   nEdge     = 3 * (order - 1);
-  nFace     = 0;
-  nCell     =     (order - 1) * (order - 2) / 2;
+  nFace     =     (order - 1) * (order - 2) / 2;
+  nCell     = 0;
   nFunction = nVertex + nEdge + nFace + nCell;
 
   // Alloc Some Space //
@@ -35,12 +35,12 @@ TriNodeBasis::TriNodeBasis(unsigned int order){
   Legendre::intScaled(intLegendre, order);
 
   // Lagrange Polynomial //
-  const Polynomial lagrange[3] = 
+  const Polynomial lagrange[3] =
     {
-      Polynomial(Polynomial(1, 0, 0, 0) - 
-		 Polynomial(1, 1, 0, 0) - 
+      Polynomial(Polynomial(1, 0, 0, 0) -
+		 Polynomial(1, 1, 0, 0) -
 		 Polynomial(1, 0, 1, 0)),
- 
+
       Polynomial(Polynomial(1, 1, 0, 0)),
 
       Polynomial(Polynomial(1, 0, 1, 0))
@@ -58,39 +58,39 @@ TriNodeBasis::TriNodeBasis(unsigned int order){
     basis[s][1] = new Polynomial(lagrange[1]);
     basis[s][2] = new Polynomial(lagrange[2]);
   }
-  
+
   // Edge Based //
   for(unsigned int s = 0; s < nRefSpace; s++){
     unsigned int i = nVertex;
 
     for(int e = 0; e < 3; e++){
       for(unsigned int l = 1; l < order; l++){
-	basis[s][i] = 
+	basis[s][i] =
 	  new Polynomial(intLegendre[l].compose(lagrange[(*(*edgeV[s])[e])[1]] -
 						lagrange[(*(*edgeV[s])[e])[0]]
-						, 
+						,
 						lagrange[(*(*edgeV[s])[e])[0]] +
 						lagrange[(*(*edgeV[s])[e])[1]]));
 	i++;
       }
     }
   }
-  
-  // Cell Based //
+
+  // Face Based //
   const Polynomial p = (lagrange[2] * 2) - Polynomial(1, 0, 0, 0);
   const int orderMinusTwo = order - 2;
-  
+
   for(unsigned int s = 0; s < nRefSpace; s++){
     unsigned int i = nVertex + nEdge;
-    
+
     for(int l1 = 1; l1 < orderMinus; l1++){
       for(int l2 = 0; l2 + l1 - 1 < orderMinusTwo; l2++){
-	basis[s][i] = 
-	  new Polynomial(intLegendre[l1].compose(lagrange[1] - lagrange[0], 
-						 lagrange[1] + lagrange[0]) 
-			 * 
+	basis[s][i] =
+	  new Polynomial(intLegendre[l1].compose(lagrange[1] - lagrange[0],
+						 lagrange[1] + lagrange[0])
+			 *
 			 legendre[l2].compose(p) * lagrange[2]);
-	
+
 	i++;
       }
     }