diff --git a/include/hpp/manipulation/container.hh b/include/hpp/manipulation/container.hh
index d9d8b5f0d8882285b4524b93497e9670fc0e177c..a68751a725934c625fd4bf4c666a5ebb23ddad14 100644
--- a/include/hpp/manipulation/container.hh
+++ b/include/hpp/manipulation/container.hh
@@ -71,6 +71,16 @@ namespace hpp {
           return os;
         }
 
+        /// Print object in a stream
+        std::ostream& printPointer (std::ostream& os) const
+        {
+          for (typename ElementMap_t::const_iterator it = map_.begin ();
+              it != map_.end (); ++it) {
+            os << it->first << " : " << *(it->second) << std::endl;
+          }
+          return os;
+        }
+
       protected:
         /// Constructor
         Container () : map_ ()
diff --git a/include/hpp/manipulation/device.hh b/include/hpp/manipulation/device.hh
index 3617237146d653c4820dbab1b735a40baa14c20c..e1848911f6e4c447551f71ac8fadb2611f4e2ce7 100644
--- a/include/hpp/manipulation/device.hh
+++ b/include/hpp/manipulation/device.hh
@@ -52,17 +52,7 @@ namespace hpp {
         }
 
         /// Print object in a stream
-        virtual std::ostream& print (std::ostream& os) const
-        {
-          Parent_t::print (os);
-          // print handles
-          os << "Handles:" << std::endl;
-          Container <HandlePtr_t>::print (os);
-          // print grippers
-          os << "Grippers:" << std::endl;
-          Container <model::GripperPtr_t>::print (os);
-          return os;
-        }
+        virtual std::ostream& print (std::ostream& os) const;
 
         /// \name Accessors to container elements
         /// Contained elements are of type model::Gripper, Handle and
diff --git a/src/device.cc b/src/device.cc
index 9d7372765cd79b0e347f3efb49c6d0aadb63e45b..392d89f3d194cde8fc185205498edd17c208d1e9 100644
--- a/src/device.cc
+++ b/src/device.cc
@@ -17,7 +17,9 @@
 // hpp-manipulation. If not, see
 // <http://www.gnu.org/licenses/>.
 
+#include <hpp/model/gripper.hh>
 #include <hpp/manipulation/device.hh>
+#include <hpp/manipulation/handle.hh>
 
 #include <hpp/model/joint.hh>
 
@@ -49,5 +51,17 @@ namespace hpp {
           }
           jointCache_.clear ();
         }
+    std::ostream& Device::print (std::ostream& os) const
+    {
+      Parent_t::print (os);
+      // print handles
+      os << "Handles:" << std::endl;
+      Container <HandlePtr_t>::printPointer (os);
+      // print grippers
+      os << "Grippers:" << std::endl;
+      Container <model::GripperPtr_t>::printPointer (os);
+      return os;
+    }
+
   } // namespace manipulation
 } // namespace hpp