diff --git a/FunctionSpace/LocalFunctionSpace.h b/FunctionSpace/LocalFunctionSpace.h
index b73efff20eb88052ecc755913dfd39b963a25b6d..852362d999a073f41e714b6c1a3750f2b3fef5ce 100644
--- a/FunctionSpace/LocalFunctionSpace.h
+++ b/FunctionSpace/LocalFunctionSpace.h
@@ -13,16 +13,12 @@
    with an Element.
  */
 
-#include "Jacobian.h"
-
 class LocalFunctionSpace{
  protected:
   bool      scalar;
   int       size;
   int       type;
 
-  Jacobian* jac;
-
  public:
   //! Deletes this LocalFunctionSpace
   //!
diff --git a/FunctionSpace/LocalFunctionSpace0Form.cpp b/FunctionSpace/LocalFunctionSpace0Form.cpp
index 2751c0bbbd9c078777d63d131d21ea42d61bd251..45bc101dc7c5deb63b9440454b23077e7111c5dc 100644
--- a/FunctionSpace/LocalFunctionSpace0Form.cpp
+++ b/FunctionSpace/LocalFunctionSpace0Form.cpp
@@ -1,16 +1,39 @@
 #include "LocalFunctionSpace0Form.h"
-
+#include "BasisScalar.h"
+#include "fullMatrix.h"
+#include "Exception.h"
 
 LocalFunctionSpace0Form::LocalFunctionSpace0Form(const Basis& basis, 
 						 const Element& elem){
+  if(!basis.isScalar())
+    throw Exception("Can't Create a Scalar Function Space with a Vectorial Basis"); 
+
+  const BasisScalar& b = static_cast<const BasisScalar&>(basis); 
+
+  this->size  = b.getSize(); 
+  this->type  = b.getType();  
+  this->basis = &(b.getBasis());
+
+  jac = &(elem.getJacobian());
 }
 
 
 LocalFunctionSpace0Form::~LocalFunctionSpace0Form(void){
+  // LocalFunctionSpace0From is *NOT* responsible 
+  // for deleting 'basis' 
+  // It's the Basis job 
 }
 
 
 double LocalFunctionSpace0Form::interpolate(const fullVector<double>& coef, 
 					    double x, double y, double z) const{
+  double res = 0;
+
+  for(int i = 0; i < size; i++){
+    fullVector<double> uv = jac->invMap(x, y);
+
+    res += (*basis)[i].at(uv(0), uv(1), 0.0);
+  }
 
+  return res;
 }
diff --git a/FunctionSpace/LocalFunctionSpace0Form.h b/FunctionSpace/LocalFunctionSpace0Form.h
index ade9ad4f48272cdcd0b8a427667d7af4a00d9a93..ed135760e84925cec75fe6c1af1b912907ab64de 100644
--- a/FunctionSpace/LocalFunctionSpace0Form.h
+++ b/FunctionSpace/LocalFunctionSpace0Form.h
@@ -1,6 +1,13 @@
 #ifndef _LOCALFUNCTIONSPACE0FORM_H_
 #define _LOCALFUNCTIONSPACE0FORM_H_
 
+#include <vector>
+#include "Polynomial.h"
+#include "Basis.h"
+#include "Element.h"
+#include "Jacobian.h"
+#include "LocalFunctionSpaceScalar.h"
+
 /**
    @class LocalFunctionSpace0Form
    @brief 0 Form Local Function Spaces
@@ -8,16 +15,11 @@
    A Local Function Space build on a @em 0 @em Form
  */
 
-#include <vector>
-#include "Polynomial.h"
-#include "Basis.h"
-#include "Element.h"
-#include "LocalFunctionSpaceScalar.h"
-
 class LocalFunctionSpace0Form: public LocalFunctionSpaceScalar{
  private:
   const std::vector<Polynomial>* basis;
-  
+  Jacobian* jac;  
+
  public:
   //! Instantiate a new LocalFunctionSpace0Form
   //! @param basis The Basis used to build 
diff --git a/FunctionSpace/LocalFunctionSpace1Form.cpp b/FunctionSpace/LocalFunctionSpace1Form.cpp
index 538e22304c105c37f00a5737cb5264e5b6fcb6ca..0dcd28c4c8b9181b4147a9b495827c7bbe418de5 100644
--- a/FunctionSpace/LocalFunctionSpace1Form.cpp
+++ b/FunctionSpace/LocalFunctionSpace1Form.cpp
@@ -1,12 +1,29 @@
 #include "LocalFunctionSpace1Form.h"
-
+#include "BasisVector.h"
+#include "fullMatrix.h"
+#include "Exception.h"
 
 LocalFunctionSpace1Form::LocalFunctionSpace1Form(const Basis& basis, 
 						 const Element& elem){
+  
+  if(basis.isScalar()) 
+    throw Exception("Can't Create a Vector Function Space with a Scalar Basis"); 
+  
+  const BasisVector& b = static_cast<const BasisVector&>(basis); 
+
+  this->size  = b.getSize(); 
+  this->type  = b.getType();  
+  this->basis = &(b.getBasis());
+
+  jac    = &(elem.getJacobian());
+  orient = &(elem.getAllOrientations());
 }
 
 
 LocalFunctionSpace1Form::~LocalFunctionSpace1Form(void){
+  // LocalFunctionSpace1From is *NOT* responsible 
+  // for deleting 'basis' 
+  // It's the Basis job 
 }
 
 
@@ -14,4 +31,14 @@ fullVector<double> LocalFunctionSpace1Form::
 interpolate(const fullVector<double>& coef, 
 	    double x, double y, double z) const{
 
+  //double res = 0;
+  
+  for(int i = 0; i < size; i++){
+    //fullVector<double> uv = jac->invMap(x, y);
+
+    //res += (*basis)[i].at(uv(0), uv(1), 0.0);
+  }
+
+  //return res;
+
 }
diff --git a/FunctionSpace/LocalFunctionSpace1Form.h b/FunctionSpace/LocalFunctionSpace1Form.h
index df6a3a388bf80239c2f45ec17d694cfc7331d46c..be85d87a4088a61698cca23677e84f57d6072b6c 100644
--- a/FunctionSpace/LocalFunctionSpace1Form.h
+++ b/FunctionSpace/LocalFunctionSpace1Form.h
@@ -12,12 +12,15 @@
 #include "Polynomial.h"
 #include "Basis.h"
 #include "Element.h"
+#include "Jacobian.h"
 #include "LocalFunctionSpaceVector.h"
 
 class LocalFunctionSpace1Form: public LocalFunctionSpaceVector{
  private:
   const std::vector<std::vector<Polynomial> >* basis;
-  
+  Jacobian* jac;
+  const std::vector<int>* orient;
+
  public:
   //! Instantiate a new LocalFunctionSpace1Form
   //! @param basis The Basis used to build 
diff --git a/FunctionSpace/LocalFunctionSpaceScalar.h b/FunctionSpace/LocalFunctionSpaceScalar.h
index 4b707fac83ddcb9ad6ff47f9da21de6cdbc30cc0..991e1c11343481105f93b39b491418aafa87a137 100644
--- a/FunctionSpace/LocalFunctionSpaceScalar.h
+++ b/FunctionSpace/LocalFunctionSpaceScalar.h
@@ -1,6 +1,8 @@
 #ifndef _LOCALFUNCTIONSPACESCALAR_H_
 #define _LOCALFUNCTIONSPACESCALAR_H_
 
+#include <vector>
+#include "Polynomial.h"
 #include "LocalFunctionSpace.h"
 
 /**