diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a1903f6a44a55dd9ec2d15587859f8a73307a63e..0b49df81fff96334cbb314e43939053e66b169c3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -45,6 +45,7 @@ ENDMACRO(ADD_TARGET_CFLAGS)
 
 SET(${PROJECT_NAME}_MULTIBODY_SOURCES
   multibody/model.cpp
+  multibody/parser/sample-models.cpp
   )
 
 SET(${PROJECT_NAME}_SOURCES
diff --git a/src/multibody/parser/sample-models.cpp b/src/multibody/parser/sample-models.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..68fbd6788eedd79f91455cb653f33187b4783960
--- /dev/null
+++ b/src/multibody/parser/sample-models.cpp
@@ -0,0 +1,141 @@
+//
+// Copyright (c) 2015 CNRS
+// Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
+//
+// This file is part of Pinocchio
+// Pinocchio is free software: you can redistribute it
+// and/or modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation, either version
+// 3 of the License, or (at your option) any later version.
+//
+// Pinocchio is distributed in the hope that it will be
+// useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Lesser Public License for more details. You should have
+// received a copy of the GNU Lesser General Public License along with
+// Pinocchio If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include "pinocchio/multibody/parser/sample-models.hpp"
+
+namespace se3
+{
+  namespace buildModels
+  {
+
+    void humanoid2d(Model& model)
+    {
+      model.addBody(model.getBodyId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(),
+                    "ff1_joint", "ff1_body");
+      model.addBody(model.getBodyId("ff1_body"),JointModelRY(),SE3::Identity(),Inertia::Random(),
+                    "root_joint", "root_body");
+
+      model.addBody(model.getBodyId("root_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
+                    "lleg1_joint", "lleg1_body");
+      model.addBody(model.getBodyId("lleg1_body"),JointModelRY(),SE3::Random(),Inertia::Random(),
+                    "lleg2_joint", "lleg2_body");
+
+      model.addBody(model.getBodyId("root_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
+                    "rleg1_joint", "rleg1_body");
+      model.addBody(model.getBodyId("rleg1_body"),JointModelRY(),SE3::Random(),Inertia::Random(),
+                    "rleg2_joint", "rleg2_body");
+
+      model.addBody(model.getBodyId("root_body"),JointModelRY(),SE3::Random(),Inertia::Random(),
+                    "torso1_joint", "torso1_body");
+      model.addBody(model.getBodyId("torso1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
+                    "chest_joint", "chest_body");
+
+      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm1_joint", "rarm1_body");
+      model.addBody(model.getBodyId("rarm1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
+                    "rarm2_joint", "rarm2_body");
+
+      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm1_joint", "larm1_body");
+      model.addBody(model.getBodyId("larm1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
+                    "larm2_joint", "larm2_body");
+    }
+
+    void humanoidSimple(Model& model, bool usingFF)
+    {
+      if(! usingFF )
+      {
+        model.addBody(model.getBodyId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(),
+                      "ff1_joint", "ff1_body");
+        model.addBody(model.getBodyId("ff1_body"),JointModelRY(),SE3::Identity(),Inertia::Random(),
+                      "ff2_joint", "ff2_body");
+        model.addBody(model.getBodyId("ff2_body"),JointModelRZ(),SE3::Identity(),Inertia::Random(),
+                      "ff3_joint", "ff3_body");
+        model.addBody(model.getBodyId("ff3_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
+                      "ff4_joint", "ff4_body");
+        model.addBody(model.getBodyId("ff4_body"),JointModelRY(),SE3::Identity(),Inertia::Random(),
+                      "ff5_joint", "ff5_body");
+        model.addBody(model.getBodyId("ff5_body"),JointModelRX(),SE3::Identity(),Inertia::Random(),
+                      "root_joint", "root_body");
+      }
+      else
+      {
+        model.addBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),
+                      Inertia::Random(),"root_joint", "root_body");
+      }
+
+      model.addBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "lleg1_joint", "lleg1_body");
+      model.addBody(model.getBodyId("lleg1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "lleg2_joint", "lleg2_body");
+      model.addBody(model.getBodyId("lleg2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "lleg3_joint", "lleg3_body");
+      model.addBody(model.getBodyId("lleg3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "lleg4_joint", "lleg4_body");
+      model.addBody(model.getBodyId("lleg4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "lleg5_joint", "lleg5_body");
+      model.addBody(model.getBodyId("lleg5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "lleg6_joint", "lleg6_body");
+
+      model.addBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rleg1_joint", "rleg1_body");
+      model.addBody(model.getBodyId("rleg1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rleg2_joint", "rleg2_body");
+      model.addBody(model.getBodyId("rleg2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rleg3_joint", "rleg3_body");
+      model.addBody(model.getBodyId("rleg3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rleg4_joint", "rleg4_body");
+      model.addBody(model.getBodyId("rleg4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rleg5_joint", "rleg5_body");
+      model.addBody(model.getBodyId("rleg5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rleg6_joint", "rleg6_body");
+
+      model.addBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "torso1_joint", "torso1_body");
+      model.addBody(model.getBodyId("torso1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "chest_joint", "chest_body");
+
+      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm1_joint", "rarm1_body");
+      model.addBody(model.getBodyId("rarm1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm2_joint", "rarm2_body");
+      model.addBody(model.getBodyId("rarm2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm3_joint", "rarm3_body");
+      model.addBody(model.getBodyId("rarm3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm4_joint", "rarm4_body");
+      model.addBody(model.getBodyId("rarm4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm5_joint", "rarm5_body");
+      model.addBody(model.getBodyId("rarm5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "rarm6_joint", "rarm6_body");
+
+      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm1_joint", "larm1_body");
+      model.addBody(model.getBodyId("larm1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm2_joint", "larm2_body");
+      model.addBody(model.getBodyId("larm2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm3_joint", "larm3_body");
+      model.addBody(model.getBodyId("larm3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm4_joint", "larm4_body");
+      model.addBody(model.getBodyId("larm4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm5_joint", "larm5_body");
+      model.addBody(model.getBodyId("larm5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
+                    "larm6_joint", "larm6_body");
+    }
+
+  } // namespace buildModels
+} // namespace se3
diff --git a/src/multibody/parser/sample-models.hpp b/src/multibody/parser/sample-models.hpp
index 29429fd1153109b8984d5564c0e92974218a0445..e618bc16f482fbd78227afa46efde4f5fd6d0cfa 100644
--- a/src/multibody/parser/sample-models.hpp
+++ b/src/multibody/parser/sample-models.hpp
@@ -16,8 +16,8 @@
 // Pinocchio If not, see
 // <http://www.gnu.org/licenses/>.
 
-#ifndef __se3_sample_models_hpp__ 
-#define __se3_sample_models_hpp__ 
+#ifndef __se3_sample_models_hpp__
+#define __se3_sample_models_hpp__
 
 #include "pinocchio/multibody/model.hpp"
 
@@ -26,121 +26,11 @@ namespace se3
   namespace buildModels
   {
 
-    void humanoid2d( Model& model)
-    {
-      model.addBody(model.getBodyId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(),
-                    "ff1_joint", "ff1_body");
-      model.addBody(model.getBodyId("ff1_body"),JointModelRY(),SE3::Identity(),Inertia::Random(),
-                    "root_joint", "root_body");
+    void humanoid2d(Model& model);
 
-      model.addBody(model.getBodyId("root_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
-                    "lleg1_joint", "lleg1_body");
-      model.addBody(model.getBodyId("lleg1_body"),JointModelRY(),SE3::Random(),Inertia::Random(),
-                    "lleg2_joint", "lleg2_body");
-
-      model.addBody(model.getBodyId("root_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
-                    "rleg1_joint", "rleg1_body");
-      model.addBody(model.getBodyId("rleg1_body"),JointModelRY(),SE3::Random(),Inertia::Random(),
-                    "rleg2_joint", "rleg2_body");
-
-      model.addBody(model.getBodyId("root_body"),JointModelRY(),SE3::Random(),Inertia::Random(),
-                    "torso1_joint", "torso1_body");
-      model.addBody(model.getBodyId("torso1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
-                    "chest_joint", "chest_body");
-
-      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm1_joint", "rarm1_body");
-      model.addBody(model.getBodyId("rarm1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
-                    "rarm2_joint", "rarm2_body");
-
-      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm1_joint", "larm1_body");
-      model.addBody(model.getBodyId("larm1_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
-                    "larm2_joint", "larm2_body");
-    }
-
-    void humanoidSimple( Model& model, bool usingFF = true)
-    {
-      if(! usingFF )
-      {
-        model.addBody(model.getBodyId("universe"),JointModelRX(),SE3::Identity(),Inertia::Random(),
-                      "ff1_joint", "ff1_body");
-        model.addBody(model.getBodyId("ff1_body"),JointModelRY(),SE3::Identity(),Inertia::Random(),
-                      "ff2_joint", "ff2_body");
-        model.addBody(model.getBodyId("ff2_body"),JointModelRZ(),SE3::Identity(),Inertia::Random(),
-                      "ff3_joint", "ff3_body");
-        model.addBody(model.getBodyId("ff3_body"),JointModelRZ(),SE3::Random(),Inertia::Random(),
-                      "ff4_joint", "ff4_body");
-        model.addBody(model.getBodyId("ff4_body"),JointModelRY(),SE3::Identity(),Inertia::Random(),
-                      "ff5_joint", "ff5_body");
-        model.addBody(model.getBodyId("ff5_body"),JointModelRX(),SE3::Identity(),Inertia::Random(),
-                      "root_joint", "root_body");
-      }
-      else
-      {
-        model.addBody(model.getBodyId("universe"),JointModelFreeFlyer(),SE3::Identity(),
-                      Inertia::Random(),"root_joint", "root_body");
-      }
-
-      model.addBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "lleg1_joint", "lleg1_body");
-      model.addBody(model.getBodyId("lleg1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "lleg2_joint", "lleg2_body");
-      model.addBody(model.getBodyId("lleg2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "lleg3_joint", "lleg3_body");
-      model.addBody(model.getBodyId("lleg3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "lleg4_joint", "lleg4_body");
-      model.addBody(model.getBodyId("lleg4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "lleg5_joint", "lleg5_body");
-      model.addBody(model.getBodyId("lleg5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "lleg6_joint", "lleg6_body");
-
-      model.addBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rleg1_joint", "rleg1_body");
-      model.addBody(model.getBodyId("rleg1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rleg2_joint", "rleg2_body");
-      model.addBody(model.getBodyId("rleg2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rleg3_joint", "rleg3_body");
-      model.addBody(model.getBodyId("rleg3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rleg4_joint", "rleg4_body");
-      model.addBody(model.getBodyId("rleg4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rleg5_joint", "rleg5_body");
-      model.addBody(model.getBodyId("rleg5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rleg6_joint", "rleg6_body");
-
-      model.addBody(model.getBodyId("root_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "torso1_joint", "torso1_body");
-      model.addBody(model.getBodyId("torso1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "chest_joint", "chest_body");
-
-      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm1_joint", "rarm1_body");
-      model.addBody(model.getBodyId("rarm1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm2_joint", "rarm2_body");
-      model.addBody(model.getBodyId("rarm2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm3_joint", "rarm3_body");
-      model.addBody(model.getBodyId("rarm3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm4_joint", "rarm4_body");
-      model.addBody(model.getBodyId("rarm4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm5_joint", "rarm5_body");
-      model.addBody(model.getBodyId("rarm5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "rarm6_joint", "rarm6_body");
-
-      model.addBody(model.getBodyId("chest_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm1_joint", "larm1_body");
-      model.addBody(model.getBodyId("larm1_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm2_joint", "larm2_body");
-      model.addBody(model.getBodyId("larm2_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm3_joint", "larm3_body");
-      model.addBody(model.getBodyId("larm3_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm4_joint", "larm4_body");
-      model.addBody(model.getBodyId("larm4_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm5_joint", "larm5_body");
-      model.addBody(model.getBodyId("larm5_body"),JointModelRX(),SE3::Random(),Inertia::Random(),
-                    "larm6_joint", "larm6_body");
-    }
+    void humanoidSimple(Model& model, bool usingFF = true);
 
   } // namespace buildModels
-} // namespace se3 
+} // namespace se3
 
-#endif // ifndef __se3_sample_models_hpp__ 
+#endif // ifndef __se3_sample_models_hpp__