diff --git a/include/spline/exact_cubic_vel_acc_cons.h b/include/spline/exact_cubic_vel_acc_cons.h
index aa825f33bdb6381b3bf9912e7d6241e7380032d7..37859ddac286f6b2f47cf8fd28ba3a14741543ae 100644
--- a/include/spline/exact_cubic_vel_acc_cons.h
+++ b/include/spline/exact_cubic_vel_acc_cons.h
@@ -68,8 +68,8 @@ struct cubic_zero_vel : public exact_cubic<Time, Numeric, Dim, Safe, Point, T_Po
         point_t init_acc;
         point_t end_vel;
         point_t end_acc;
-        point_t init_normal;
-        point_t end_normal;
+        point_t init_normal; //TODO
+        point_t end_normal; //TODO
     };
 
 	/* Constructors - destructors */
@@ -84,7 +84,7 @@ struct cubic_zero_vel : public exact_cubic<Time, Numeric, Dim, Safe, Point, T_Po
 	///\brief Destructor
     ~cubic_zero_vel(){}
 
-    private:
+    /*private:
     MatrixX setVelConstraintsAndComputeB(const spline_constraints& constraints,
                                          const Eigen::Ref<MatrixX> x,
                                          Eigen::Ref<MatrixX> h1, Eigen::Ref<MatrixX> h2) const
@@ -102,6 +102,41 @@ struct cubic_zero_vel : public exact_cubic<Time, Numeric, Dim, Safe, Point, T_Po
         MatrixX h1inv = h1.inverse();
         b = h1inv * (h2 *x + cons); //h1 * b = h2 * x => b = (h1)^-1 * h2 * x
         return b;
+    }*/
+
+    private:
+    template<typename In>
+    void compute_one_spline(In wayPointsBegin, In wayPointsNext, spline_constraints& constraints, t_spline_t& subSplines)
+    {
+        const point_t& a0 = wayPointsBegin->second, a1 = wayPointsNext->second;
+        const point_t& b0 = constraints.init_vel , c0 = constraints.init_acc;
+        const num_t& init_t = wayPointsBegin->first, end_t = - wayPointsNext->first;
+        const num_t dt = end_t - init_t, dt_2 = dt * dt, dt_3 = dt_2 * dt;
+        const point_t d0 = (a1 - a0 - b0 * dt - c0 * dt_2) / dt_3;
+        subSplines.push_back(create_cubic<Time,Numeric,Dim,Safe,Point,T_Point>
+                             (a0,b0,c0,d0,init_t, end_t));
+        constraints.init_vel = subSplines.back().derivate(end_t, 1);
+        constraints.init_acc = subSplines.back().derivate(end_t, 2);
+    }
+
+    template<typename In>
+    void compute_end_spline(In wayPointsBegin, In wayPointsNext, spline_constraints& constraints, t_spline_t& subSplines)
+    {
+        const point_t& a0 = wayPointsBegin->second, a1 = wayPointsNext->second;
+        const point_t& b0 = constraints.init_vel, b1 = constraints.end_vel,
+                       c0 = constraints.init_acc, c1 = constraints.end_acc;
+        const num_t& init_t = wayPointsBegin->first, end_t = - wayPointsNext->first;
+        const num_t dt = end_t - init_t, dt_2 = dt * dt, dt_3 = dt_2 * dt;
+        //solving a system of four linear eq with 4 unknows: d0, e0
+        const num_t alpha_0 = a1 - a0 + b0 *dt + c0 * dt_2;
+        const num_t alpha_1 = b1 - b0 + b0 *dt + c0 * dt_2;
+
+        /*subSplines.push_back(create_cubic<Time,Numeric,Dim,Safe,Point,T_Point>
+                             (a0,b0,c0,d0,e0, init_t, end_t));
+        constraints.init_vel = subSplines.back().derivate(end_t, 1);
+        constraints.init_acc = subSplines.back().derivate(end_t, 2);*/
+
+        //solving
     }
 
     template<typename In>
@@ -112,9 +147,20 @@ struct cubic_zero_vel : public exact_cubic<Time, Numeric, Dim, Safe, Point, T_Po
         {
             throw; // TODO
         }
-        t_spline_t subSplines; subSplines.reserve(size);
+        t_spline_t subSplines; subSplines.reserve(size-1);
+        spline_constraints cons = constraints;
 
-        // refer to the paper to understand all this.
+        In it(wayPointsBegin), next(wayPointsBegin), end(wayPointsEnd-1);
+        ++next;
+        for(std::size_t i(0); next != end; ++next, ++it, ++i)
+        {
+            compute_one_spline<In>(it, next, cons, subSplines);
+        }
+        compute_end_spline<In>(it, next,cons, subSplines);
+        return subSplines;
+        // then solving last step
+
+        /*// refer to the paper to understand all this.
         MatrixX h1 = MatrixX::Zero(size, size);
         MatrixX h2 = MatrixX::Zero(size, size);
         MatrixX h3 = MatrixX::Zero(size, size);
@@ -173,7 +219,7 @@ struct cubic_zero_vel : public exact_cubic<Time, Numeric, Dim, Safe, Point, T_Po
         }
         //subSplines.push_back(
         //        create_cubic<Time,Numeric,Dim,Safe,Point,T_Point>(a.row(size-1), b.row(size-1), c.row(size-1), d.row(size-1), (*it).first, (*it).first));
-        return subSplines;
+        return subSplines;*/
     }