diff --git a/src/multibody/geometry.hpp b/src/multibody/geometry.hpp
index dbcd221e2ffb1aa66a189bef4775c73c91107d2c..2cf909fd0e9f58bb1b0a9272f68f690def9d340b 100644
--- a/src/multibody/geometry.hpp
+++ b/src/multibody/geometry.hpp
@@ -244,35 +244,11 @@ namespace se3
     /// Outer objects can be seen as geometry objects that may often be
     /// obstacles to the Inner objects of given joint
     std::map < JointIndex, GeomIndexList >  outerObjects;
-
-    GeometryData(const GeometryModel & modelGeom)
-        : model_geom(modelGeom)
-        , oMg(model_geom.ngeoms)
-        , activeCollisionPairs(modelGeom.collisionPairs.size(), true)
-        , distanceRequest (true, 0, 0, fcl::GST_INDEP)
-        , distance_results(modelGeom.collisionPairs.size())
-        , collisionRequest (1, false, false, 1, false, true, fcl::GST_INDEP)
-        , collision_results(modelGeom.collisionPairs.size())
-        , radius()
-        , collisionPairIndex(-1)
-        , innerObjects()
-        , outerObjects()
-    {
-      collisionObjects.reserve(modelGeom.geometryObjects.size());
-      BOOST_FOREACH( const GeometryObject & geom, modelGeom.geometryObjects)
-        { collisionObjects.push_back
-            (fcl::CollisionObject(geom.collision_geometry)); }
-      fillInnerOuterObjectMaps();
-    }
-#else
-    GeometryData(const GeometryModel & modelGeom)
-    : model_geom(modelGeom)
-    , oMg(model_geom.ngeoms)
-    {}
 #endif // WITH_HPP_FCL   
 
-
+    GeometryData(const GeometryModel & modelGeom);
     ~GeometryData() {};
+
 #ifdef WITH_HPP_FCL
 
     /// Fill both innerObjects and outerObjects maps, from vectors collisionObjects and 
diff --git a/src/multibody/geometry.hxx b/src/multibody/geometry.hxx
index 7c87b432a2b79218c1c12f17e5bd7159fe88c30f..c9ec703a481761dc6c8215cc1aa789b1f2fa0ba6 100644
--- a/src/multibody/geometry.hxx
+++ b/src/multibody/geometry.hxx
@@ -31,6 +31,30 @@
 
 namespace se3
 {
+  inline GeometryData::GeometryData(const GeometryModel & modelGeom)
+    : model_geom(modelGeom)
+    , oMg(model_geom.ngeoms)
+
+#ifdef WITH_HPP_FCL   
+    , activeCollisionPairs(modelGeom.collisionPairs.size(), true)
+    , distanceRequest (true, 0, 0, fcl::GST_INDEP)
+    , distance_results(modelGeom.collisionPairs.size())
+    , collisionRequest (1, false, false, 1, false, true, fcl::GST_INDEP)
+    , collision_results(modelGeom.collisionPairs.size())
+    , radius()
+    , collisionPairIndex(-1)
+    , innerObjects()
+    , outerObjects()
+  {
+    collisionObjects.reserve(modelGeom.geometryObjects.size());
+    BOOST_FOREACH( const GeometryObject & geom, modelGeom.geometryObjects)
+      { collisionObjects.push_back
+          (fcl::CollisionObject(geom.collision_geometry)); }
+    fillInnerOuterObjectMaps();
+  }
+#else
+  {}
+#endif // WITH_HPP_FCL   
 
   inline GeomIndex GeometryModel::addGeometryObject(const GeometryObject& object)
   {