diff --git a/src/multibody/fwd.hpp b/src/multibody/fwd.hpp
index 4272cbb0a8f2041d29c67ed78b8691f2523ebb7a..24aa801cd7a43b46c2e5cff4e9087f19612e2b53 100644
--- a/src/multibody/fwd.hpp
+++ b/src/multibody/fwd.hpp
@@ -25,6 +25,13 @@ namespace se3
   typedef Index GeomIndex;
   typedef Index FrameIndex;
   
+  struct Frame;
+  struct Model;
+  struct Data;
+  struct GeometryModel;
+  struct GeometryData;
+  struct JointModel;
+  struct JointData;
 } // namespace se3
 
 #endif // #ifndef __se3_multibody_fwd_hpp__
diff --git a/src/spatial/force.hpp b/src/spatial/force.hpp
index 3e9da5fcabc7c19ce470c49c938658501169d05a..0b7fd37ad9e464a734439e3c993749dbd8dc71ea 100644
--- a/src/spatial/force.hpp
+++ b/src/spatial/force.hpp
@@ -208,8 +208,6 @@ namespace se3
 
   }; // class ForceTpl
 
-  typedef ForceTpl<double,0> Force;
-
 } // namespace se3
 
 #endif // ifndef __se3_force_hpp__
diff --git a/src/spatial/fwd.hpp b/src/spatial/fwd.hpp
index 51d224b0b9a52718aaf166adce6f2a2ba2779326..c3ee85e652266492cc5632fea22863b6a3f0dc18 100644
--- a/src/spatial/fwd.hpp
+++ b/src/spatial/fwd.hpp
@@ -29,6 +29,12 @@ namespace se3
   template<typename _Scalar, int _Options=0> class InertiaTpl;
   template<typename _Scalar, int _Options=0> class Symmetric3Tpl;
 
+  typedef SE3Tpl        <double,0> SE3;
+  typedef MotionTpl     <double,0> Motion;
+  typedef ForceTpl      <double,0> Force;
+  typedef InertiaTpl    <double,0> Inertia;
+  typedef Symmetric3Tpl <double,0> Symmetric3;
+
   template<class C> struct traits {};
 
   #define SPATIAL_TYPEDEF_TEMPLATE(derived)              \
diff --git a/src/spatial/inertia.hpp b/src/spatial/inertia.hpp
index 1d21cbdec26e5b3f1fd7aff006ac5a48a293a7e5..c6fe711b450603d3e2ae2209b03f62eddda10caa 100644
--- a/src/spatial/inertia.hpp
+++ b/src/spatial/inertia.hpp
@@ -341,8 +341,6 @@ namespace se3
     Symmetric3 I;
     
   }; // class InertiaTpl
-
-  typedef InertiaTpl<double,0> Inertia;
     
 } // namespace se3
 
diff --git a/src/spatial/motion.hpp b/src/spatial/motion.hpp
index 999897f06a3d1eb5f2b6a89adea7ffebc3eabe59..a15b3df4200694e34ae94ac258b1b2f5fcc584c9 100644
--- a/src/spatial/motion.hpp
+++ b/src/spatial/motion.hpp
@@ -247,8 +247,6 @@ namespace se3
   template<typename S,int O>
   ForceTpl<S,O> operator^( const MotionTpl<S,O> &m, const ForceTpl<S,O> &f ) { return m.cross(f); }
 
-  typedef MotionTpl<double,0> Motion;
-
 
   ///////////////   BiasZero  ///////////////
   struct BiasZero;
diff --git a/src/spatial/se3.hpp b/src/spatial/se3.hpp
index 162fd87c787a54c3b0d44fae91a3c08fef776a43..116b35ae89224b8010432dc88a615b1d14500472 100644
--- a/src/spatial/se3.hpp
+++ b/src/spatial/se3.hpp
@@ -301,8 +301,6 @@ namespace se3
     
   }; // class SE3Tpl
 
-  typedef SE3Tpl<double,0> SE3;
-
 } // namespace se3
 
 #endif // ifndef __se3_se3_hpp__
diff --git a/src/spatial/symmetric3.hpp b/src/spatial/symmetric3.hpp
index f63f52795f4487bf65d75a2b1621aeb95a57cc9a..7b61ecfb57622d8fca14c634f8dbb79ff0ad891e 100644
--- a/src/spatial/symmetric3.hpp
+++ b/src/spatial/symmetric3.hpp
@@ -337,8 +337,6 @@ namespace se3
     
   };
 
-  typedef Symmetric3Tpl<double,0> Symmetric3;
-
 } // namespace se3
 
 #endif // ifndef __se3__symmetric3_hpp__