diff --git a/include/eigenpy/quaternion.hpp b/include/eigenpy/quaternion.hpp
index c0d23745959d50c182e55263ba94e33209b07a66..84723e2fb0883c0d0245f7ab189c575e503fdd58 100644
--- a/include/eigenpy/quaternion.hpp
+++ b/include/eigenpy/quaternion.hpp
@@ -234,8 +234,9 @@ namespace eigenpy
            "Returns the quaternion which transforms a into b through a rotation.",
            bp::return_value_policy<bp::manage_new_object>())
       .staticmethod("FromTwoVectors")
-      .def("Identity",&Quaternion::Identity,
-           "Returns a quaternion representing an identity rotation.")
+      .def("Identity",&Identity,
+           "Returns a quaternion representing an identity rotation.",
+           bp::return_value_policy<bp::manage_new_object>())
       .staticmethod("Identity")
       ;
     }
@@ -254,6 +255,12 @@ namespace eigenpy
     static Quaternion & assign(Quaternion & self, const OtherQuat & quat)
     { return self = quat; }
 
+    static Quaternion* Identity()
+    {
+      Quaternion* q(new Quaternion); q->setIdentity();
+      return q;
+    }
+    
     static Quaternion* FromTwoVectors(const Vector3& u, const Vector3& v)
     {
       Quaternion* q(new Quaternion); q->setFromTwoVectors(u,v);