diff --git a/src/three_D_tools.h b/src/three_D_tools.h
index eaec7185ce9b8ad68767cbbde204538794a23c48..28a15f29757116ffc1c9bc10f9507df58f9a5452 100644
--- a/src/three_D_tools.h
+++ b/src/three_D_tools.h
@@ -13,32 +13,24 @@
 #include "rotations.h"
 
 /*
- * Most functions in this file are explained in the document:
+ * The functions in this file are related to manipulations of Delta motion magnitudes used in 3D motion.
  *
- *   Joan Sola, "IMU pre-integration", 2015-2017 IRI-CSIC
- *
- * They relate manipulations of Delta motion magnitudes used for IMU pre-integration.
- *
- * The Delta is defined as
- *     Delta = [Dp, Dq, Dv]
+ * The Delta is defined as a simple 3D pose with the rotation expressed in quaternion form,
+ *     Delta = [Dp, Dq]
  * with
  *     Dp : position delta
  *     Dq : quaternion delta
- *     Dv : velocity delta
  *
- * They are listed below:
+ * The functions are listed below:
  *
- *   - identity: I = Delta at the origin, with Dp = [0,0,0]; Dq = [0,0,0,1], Dv = [0,0,0]
- *   - inverse: so that D (+) D.inv = I
- *   - compose: Dc = D1 (+) D2
- *   - between: Db = D2 (-) D1, so that D2 = D1 (+) Db
- *   - composeOverState: x2 = x1 (+) D
- *   - betweenStates: D = x2 (-) x1, so that x2 = x1 (+) D
- *   - lift: got from Delta manifold to tangent space (equivalent to log() in rotations)
- *   - retract: go from tangent space to delta manifold (equivalent to exp() in rotations)
- *   - plus: D2 = D1 (+) retract(d)
- *   - diff: d = lift( D2 (-) D1 )
- *   - body2delta: construct a delta from body magnitudes of linAcc and angVel
+ *   - compose:     Dc = D1 (+) D2
+ *   - identity:    I  = Delta at the origin, with Dp = [0,0,0]; Dq = [0,0,0,1], so that D (+) I = I (+) D = D
+ *   - inverse:     so that D (+) D.inv = D.inv (+) D = I
+ *   - between:     Db = D2 (-) D1 := D1.inv (+) D2, so that D2 = D1 (+) Db
+ *   - lift:        go from Delta manifold to tangent space (equivalent to log() in rotations)
+ *   - retract:     go from tangent space to delta manifold (equivalent to exp() in rotations)
+ *   - plus:        D2 = D1 (+) retract(d)
+ *   - diff:        d  = lift( D2 (-) D1 )
  */
 
 
@@ -80,8 +72,8 @@ inline void inverse(const MatrixBase<D1>& dp, const QuaternionBase<D2>& dq,
     MatrixSizeCheck<3, 1>::check(dp);
     MatrixSizeCheck<3, 1>::check(idp);
 
-    idp = - ( dq.conjugate() * dp );
-    idq =     dq.conjugate();
+    idp = - dq.conjugate() * dp ;
+    idq =   dq.conjugate() ;
 }
 
 template<typename D1, typename D2>
@@ -108,7 +100,7 @@ inline Matrix<typename D::Scalar, 7, 1> inverse(const MatrixBase<D>& d)
     return id;
 }
 
-template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8, typename D6>
+template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8>
 inline void compose(const MatrixBase<D1>& dp1, const QuaternionBase<D2>& dq1,
                     const MatrixBase<D4>& dp2, const QuaternionBase<D5>& dq2,
                     MatrixBase<D7>& sum_p, QuaternionBase<D8>& sum_q )
@@ -180,17 +172,17 @@ inline void compose(const MatrixBase<D1>& d1,
     compose(d1, d2, sum);
 }
 
-template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8, typename D6>
+template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8>
 inline void between(const MatrixBase<D1>& dp1, const QuaternionBase<D2>& dq1,
                     const MatrixBase<D4>& dp2, const QuaternionBase<D5>& dq2,
-                    MatrixBase<D7>& diff_p, QuaternionBase<D8>& diff_q)
+                    MatrixBase<D7>& dp12, QuaternionBase<D8>& dq12)
 {
         MatrixSizeCheck<3, 1>::check(dp1);
         MatrixSizeCheck<3, 1>::check(dp2);
-        MatrixSizeCheck<3, 1>::check(diff_p);
+        MatrixSizeCheck<3, 1>::check(dp12);
 
-        diff_p = dq1.conjugate() * ( dp2 - dp1 );
-        diff_q = dq1.conjugate() *   dq2;
+        dp12 = dq1.conjugate() * ( dp2 - dp1 );
+        dq12 = dq1.conjugate() *   dq2;
 }
 
 template<typename D1, typename D2, typename D3>
@@ -206,20 +198,20 @@ inline void between(const MatrixBase<D1>& d1,
     Map<const Quaternion<typename D1::Scalar> >     dq1    ( & d1(3) );
     Map<const Matrix<typename D2::Scalar, 3, 1> >   dp2    ( & d2(0) );
     Map<const Quaternion<typename D2::Scalar> >     dq2    ( & d2(3) );
-    Map<Matrix<typename D3::Scalar, 3, 1> >         diff_p ( & d2_minus_d1(0) );
-    Map<Quaternion<typename D3::Scalar> >           diff_q ( & d2_minus_d1(3) );
+    Map<Matrix<typename D3::Scalar, 3, 1> >         dp12 ( & d2_minus_d1(0) );
+    Map<Quaternion<typename D3::Scalar> >           dq12 ( & d2_minus_d1(3) );
 
-    between(dp1, dq1, dp2, dq2, diff_p, diff_q);
+    between(dp1, dq1, dp2, dq2, dp12, dq12);
 }
 
 
 template<typename D1, typename D2>
 inline Matrix<typename D1::Scalar, 7, 1> between(const MatrixBase<D1>& d1,
-                                                  const MatrixBase<D2>& d2 )
+                                                 const MatrixBase<D2>& d2 )
 {
-    Matrix<typename D1::Scalar, 7, 1> diff;
-    between(d1, d2, diff);
-    return diff;
+    Matrix<typename D1::Scalar, 7, 1> d12;
+    between(d1, d2, d12);
+    return d12;
 }
 
 template<typename Derived>
@@ -258,7 +250,7 @@ Matrix<typename Derived::Scalar, 7, 1> retract(const MatrixBase<Derived>& d_in)
     return ret;
 }
 
-template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8, typename D6>
+template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8>
 inline void plus(const MatrixBase<D1>& dp1, const QuaternionBase<D2>& dq1,
                  const MatrixBase<D4>& dp2, const MatrixBase<D5>& do2,
                  MatrixBase<D7>& plus_p, QuaternionBase<D8>& plus_q)
@@ -270,25 +262,25 @@ inline void plus(const MatrixBase<D1>& dp1, const QuaternionBase<D2>& dq1,
 template<typename D1, typename D2, typename D3>
 inline void plus(const MatrixBase<D1>& d1,
                  const MatrixBase<D2>& d2,
-                 MatrixBase<D3>& d_pert)
+                 MatrixBase<D3>& d_plus)
 {
     Map<const Matrix<typename D1::Scalar, 3, 1> >   dp1    ( & d1(0) );
     Map<const Quaternion<typename D1::Scalar> >     dq1    ( & d1(3) );
     Map<const Matrix<typename D2::Scalar, 3, 1> >   dp2    ( & d2(0) );
     Map<const Matrix<typename D2::Scalar, 3, 1> >   do2    ( & d2(3) );
-    Map<Matrix<typename D3::Scalar, 3, 1> >         dp_p ( & d_pert(0) );
-    Map<Quaternion<typename D3::Scalar> >           dq_p ( & d_pert(3) );
+    Map<Matrix<typename D3::Scalar, 3, 1> >         dp_p ( & d_plus(0) );
+    Map<Quaternion<typename D3::Scalar> >           dq_p ( & d_plus(3) );
 
     plus(dp1, dq1, dp2, do2, dp_p, dq_p);
 }
 
 template<typename D1, typename D2>
 inline Matrix<typename D1::Scalar, 7, 1> plus(const MatrixBase<D1>& d1,
-                                               const MatrixBase<D2>& d2)
+                                              const MatrixBase<D2>& d2)
 {
-    Matrix<typename D1::Scalar, 7, 1> ret;
-    plus(d1, d2, ret);
-    return ret;
+    Matrix<typename D1::Scalar, 7, 1> d_plus;
+    plus(d1, d2, d_plus);
+    return d_plus;
 }
 
 template<typename D1, typename D2, typename D4, typename D5, typename D7, typename D8>
@@ -362,7 +354,7 @@ inline void diff(const MatrixBase<D1>& d1,
     J_diff_d1 = - Matrix<typename D4::Scalar, 6, 6>::Identity();// d(p2  - p1) / d(p1) = - Identity
     J_diff_d1.block(3,3,3,3) = J_do_dq1;       // d(R1.tr*R2) / d(R1) = - J_l_inv(theta)
 
-    J_diff_d2.setIdentity();                                    // d(R1.tr*R2) / d(R2) =   Identity
+    J_diff_d2.setIdentity(6,6);                                    // d(R1.tr*R2) / d(R2) =   Identity
     J_diff_d2.block(3,3,3,3) = J_do_dq2;      // d(R1.tr*R2) / d(R1) =   J_r_inv(theta)
 }