diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp
index 9fa2b50bd81d05ac0a31f4a72bcde8d6163d4e4b..ea38989248cde6e218e375ca66a39d0d5b4b9f56 100644
--- a/FunctionSpace/FunctionSpace.cpp
+++ b/FunctionSpace/FunctionSpace.cpp
@@ -144,23 +144,6 @@ void FunctionSpace::insertDof(Dof& d,
   }
 }
 */
-
-const Basis& FunctionSpace::getBasis(const MElement& element) const{
-  return *(*basis)[0];
-}
-
-const Basis& FunctionSpace::getBasis(size_t i) const{
-  return *(*basis)[0];
-}
-
-GroupOfElement& FunctionSpace::getSupport(void) const{
-  return *goe;
-}
-
-bool FunctionSpace::isScalar(void) const{
-  return scalar;
-}
-
 vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{
   // Const_Cast //
   MElement& element = const_cast<MElement&>(elem);
@@ -179,7 +162,8 @@ vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{
 
   // New Element
   MElementFactory factory;
-  int lowOrderTag = ElementType::getTag(elem.getType(), 1, false);
+  int parentTag   = ElementType::ParentTypeFromTag(elem.getTypeForMSH());
+  int lowOrderTag = ElementType::getTag(parentTag, 1, false);
 
   MElement* permElement = factory.create(lowOrderTag, vertex);
 
@@ -242,14 +226,6 @@ vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{
   return myDof;
 }
 
-const vector<Dof> FunctionSpace::getAllDofs(void) const{
-  return vector<Dof>(dof->begin(), dof->end());
-}
-
-const vector<GroupOfDof*>& FunctionSpace::getAllGroups(void) const{
-  return *group;
-}
-
 const GroupOfDof& FunctionSpace::
 getGoDFromElement(const MElement& element) const{
 
@@ -264,11 +240,3 @@ getGoDFromElement(const MElement& element) const{
   else
     return *(it->second);
 }
-
-size_t FunctionSpace::dofNumber(void) const{
-  return dof->size();
-}
-
-size_t FunctionSpace::groupNumber(void) const{
-  return group->size();
-}
diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h
index 9305cc1fdb620bcd4808fed4685230ce95cbf73c..75f6b3eb7d4ff7a94b45155a4491bf132284da48 100644
--- a/FunctionSpace/FunctionSpace.h
+++ b/FunctionSpace/FunctionSpace.h
@@ -22,7 +22,8 @@
     @interface FunctionSpace
     @brief Common Interface of all Function Spaces
 
-    This is the common interface of all Function Spaces.
+    This is the common interface of
+    all Function Spaces.
 
     A FunctionSpace is defined on a support,
     which is a collection of MElement%s (GroupOfElement).
@@ -67,8 +68,9 @@ class FunctionSpace{
  public:
   virtual ~FunctionSpace(void);
 
-  const Basis& getBasis(const MElement& element) const;
-  const Basis& getBasis(size_t i) const;
+  const std::vector<const Basis*>& getBasis(const MElement& element) const;
+  const Basis&                     getBasis(size_t i) const;
+  size_t                           getNBasis(void) const;
 
   GroupOfElement& getSupport(void) const;
   bool            isScalar(void) const;
@@ -112,12 +114,9 @@ class FunctionSpace{
    Deletes this FunctionSpace
    **
 
-   @fn FunctionSpace::getBasis
-   @param element A MElement
-   @return Returns the Basis associated to the given MElement
-
    @fn FunctionSpace::getSupport
-   @return Returns the support of this FunctionSpace
+   @return Returns the support of this
+   FunctionSpace
    **
 
    @fn FunctionSpace::isScalar
@@ -158,14 +157,16 @@ class FunctionSpace{
 
    @fn FunctionSpace::getGoDFromElement
    @param element An Element of the FunctionSpace Support
-   @return Returns the GroupOfDof%s associated to the given Element
+   @return Returns the GroupOfDof%s associated to
+   the given Element
 
    If the given Element is not in the FunctionSpace Support,
    an Exception is thrown
    **
 
    @fn FunctionSpace::dofNumber
-   @return Returns the number of Dof%s given by FunctionSpace::getAllDofs()
+   @return Returns the number of Dof%s
+   given by FunctionSpace::getAllDofs()
    **
 
    @fn FunctionSpace::groupNumber
@@ -174,4 +175,46 @@ class FunctionSpace{
    **
 */
 
+
+//////////////////////
+// Inline Functions //
+//////////////////////
+
+inline const std::vector<const Basis*>&
+FunctionSpace::getBasis(const MElement& element) const{
+  return *basis;
+}
+
+inline const Basis& FunctionSpace::getBasis(size_t i) const{
+  return *(*basis)[i];
+}
+
+inline size_t FunctionSpace::getNBasis(void) const{
+  return nBasis;
+}
+
+inline GroupOfElement& FunctionSpace::getSupport(void) const{
+  return *goe;
+}
+
+inline bool FunctionSpace::isScalar(void) const{
+  return scalar;
+}
+
+inline size_t FunctionSpace::dofNumber(void) const{
+  return dof->size();
+}
+
+inline size_t FunctionSpace::groupNumber(void) const{
+  return group->size();
+}
+
+inline const std::vector<Dof> FunctionSpace::getAllDofs(void) const{
+  return std::vector<Dof>(dof->begin(), dof->end());
+}
+
+inline const std::vector<GroupOfDof*>& FunctionSpace::getAllGroups(void) const{
+  return *group;
+}
+
 #endif