diff --git a/include/hpp/bezier-com-traj/common_solve_methods.hh b/include/hpp/bezier-com-traj/common_solve_methods.hh
index 7d6bf248b96910559651dbb7bcb936e6b6dc641b..6f073e8a7a8c93edb39201162c9576a3c1bdd5f0 100644
--- a/include/hpp/bezier-com-traj/common_solve_methods.hh
+++ b/include/hpp/bezier-com-traj/common_solve_methods.hh
@@ -24,7 +24,7 @@ namespace bezier_com_traj {
  * @return a vector of waypoint representing the discretization of the curve
  */
 BEZIER_COM_TRAJ_DLLAPI std::vector<waypoint6_t> ComputeDiscretizedWaypoints(
-    const std::vector<waypoint6_t>& wps, const std::vector<spline::Bern<double> >& bernstein, int numSteps);
+    const std::vector<waypoint6_t>& wps, const std::vector<curves::Bern<double> >& bernstein, int numSteps);
 
 /**
  * @brief compute6dControlPointInequalities Given linear and angular control waypoints,
diff --git a/include/hpp/bezier-com-traj/data.hh b/include/hpp/bezier-com-traj/data.hh
index 12b1363151fcec1895937e160ecc13ebe15fc03a..72f2cafbd470401c5bfb7edfba2e3ea0c8f26938 100644
--- a/include/hpp/bezier-com-traj/data.hh
+++ b/include/hpp/bezier-com-traj/data.hh
@@ -11,7 +11,7 @@
 #include <hpp/bezier-com-traj/definitions.hh>
 #include <hpp/bezier-com-traj/utils.hh>
 #include <hpp/bezier-com-traj/solver/solver-abstract.hpp>
-#include <hpp/spline/bezier_curve.h>
+#include <curves/bezier_curve.h>
 #include <hpp/centroidal-dynamics/centroidal_dynamics.hh>
 #include <Eigen/Dense>
 
@@ -117,8 +117,8 @@ typedef solvers::ResultData ResultData;
 struct BEZIER_COM_TRAJ_DLLAPI ResultDataCOMTraj : public ResultData {
   ResultDataCOMTraj()
       : ResultData(),
-        c_of_t_(bezier_t::zero()),
-        dL_of_t_(bezier_t::zero()),
+        c_of_t_(bezier_t::zero(3)),
+        dL_of_t_(bezier_t::zero(3)),
         dc1_(point_t::Zero()),
         ddc1_(point_t::Zero()) {}
   ~ResultDataCOMTraj() {}
diff --git a/include/hpp/bezier-com-traj/definitions.hh b/include/hpp/bezier-com-traj/definitions.hh
index 4d68b1da4211d8afaf81b95653751cf64b09dc5c..37a0bab15e6d91f95ce7a15a2df30165d3034f71 100644
--- a/include/hpp/bezier-com-traj/definitions.hh
+++ b/include/hpp/bezier-com-traj/definitions.hh
@@ -7,7 +7,7 @@
 #define BEZIER_COM_TRAJ_DEFINITIONS_H
 
 #include <hpp/centroidal-dynamics/centroidal_dynamics.hh>
-#include <hpp/spline/bezier_curve.h>
+#include <curves/bezier_curve.h>
 #include <Eigen/Dense>
 
 namespace bezier_com_traj {
@@ -51,9 +51,9 @@ typedef std::pair<matrix3_t, point3_t> waypoint3_t;
 typedef std::pair<Matrix39, point3_t> waypoint9_t;
 struct waypoint_t;  // forward declaration
 
-typedef spline::bezier_curve<double, double, 3, true, point_t> bezier_t;
-typedef spline::bezier_curve<double, double, 3, true, waypoint_t> bezier_wp_t;
-typedef spline::bezier_curve<double, double, 6, true, point6_t> bezier6_t;
+typedef curves::bezier_curve<double, double, true, point_t> bezier_t;
+typedef curves::bezier_curve<double, double, true, waypoint_t> bezier_wp_t;
+typedef curves::bezier_curve<double, double, true, point6_t> bezier6_t;
 
 typedef std::vector<std::pair<double, int> > T_time;
 typedef T_time::const_iterator CIT_time;
diff --git a/include/hpp/bezier-com-traj/utils.hh b/include/hpp/bezier-com-traj/utils.hh
index aaf39f490a5566276192d714d6c5486b7468da67..9c20d04791d208407baf141cfb64713748627b7d 100644
--- a/include/hpp/bezier-com-traj/utils.hh
+++ b/include/hpp/bezier-com-traj/utils.hh
@@ -50,7 +50,7 @@ struct waypoint_t {
  * @param degree required degree
  * @return the bernstein polynoms
  */
-BEZIER_COM_TRAJ_DLLAPI std::vector<spline::Bern<double> > ComputeBersteinPolynoms(const unsigned int degree);
+BEZIER_COM_TRAJ_DLLAPI std::vector<curves::Bern<double> > ComputeBersteinPolynoms(const unsigned int degree);
 
 /**
  * @brief given the constraints of the problem, and a set of waypoints, return
diff --git a/src/common_solve_methods.cpp b/src/common_solve_methods.cpp
index 27e54c8e45ab2ca900cfec9e9cc32166d1c02d26..4ea7f7a59d13cc7667f5f36f1e6b69c2c5918871 100644
--- a/src/common_solve_methods.cpp
+++ b/src/common_solve_methods.cpp
@@ -6,7 +6,7 @@
 
 namespace bezier_com_traj {
 std::vector<waypoint6_t> ComputeDiscretizedWaypoints(const std::vector<waypoint6_t>& wps,
-                                                     const std::vector<spline::Bern<double> >& berns, int numSteps) {
+                                                     const std::vector<curves::Bern<double> >& berns, int numSteps) {
   double dt = 1. / double(numSteps);
   std::vector<waypoint6_t> res;
   for (int i = 0; i < numSteps + 1; ++i) {
diff --git a/src/computeCOMTraj.cpp b/src/computeCOMTraj.cpp
index 1a0da0d3a8c2fff0be6743fa898affe2d69aff0e..da5036f3ec785b8ba4017ba6d1b0036166e90b0e 100644
--- a/src/computeCOMTraj.cpp
+++ b/src/computeCOMTraj.cpp
@@ -25,7 +25,7 @@ bezier_wp_t::t_point_t computeDiscretizedWwaypoints(const ProblemData& pData, do
   bezier_wp_t::t_point_t wps = computeWwaypoints(pData, T);
   bezier_wp_t::t_point_t res;
   const int DIM_VAR = (int)dimVar(pData);
-  std::vector<spline::Bern<double> > berns = ComputeBersteinPolynoms((int)wps.size() - 1);
+  std::vector<curves::Bern<double> > berns = ComputeBersteinPolynoms((int)wps.size() - 1);
   double t, b;
   for (CIT_time cit = timeArray.begin(); cit != timeArray.end(); ++cit) {
     waypoint_t w = initwp(6, DIM_VAR);
@@ -277,7 +277,7 @@ ResultDataCOMTraj genTraj(ResultData resQp, const ProblemData& pData, const doub
     res.c_of_t_ = computeBezierCurve<bezier_t, point_t>(pData.constraints_.flag_, T, pis, res.x);
     computeFinalVelocity(res);
     computeFinalAcceleration(res);
-    res.dL_of_t_ = bezier_t::zero(T);
+    res.dL_of_t_ = bezier_t::zero(3,T);
   }
   return res;
 }
diff --git a/src/solve_0_step.cpp b/src/solve_0_step.cpp
index c4afa0f0cd79267108cc9daabe33ed2481c4e55f..423667eec6e520fd3bb482084aebf254ea0b62a2 100644
--- a/src/solve_0_step.cpp
+++ b/src/solve_0_step.cpp
@@ -121,7 +121,7 @@ std::vector<waypoint6_t> ComputeAllWaypoints(point_t_tC p0, point_t_tC dc0, poin
   wps.push_back(w3(p0, p1, g, p0X, p1X, gX, alpha));
   wps.push_back(w4(p0, p1, g, p0X, p1X, gX, alpha));
   if (numSteps > 0) {
-    std::vector<spline::Bern<double> > berns = ComputeBersteinPolynoms(4);
+    std::vector<curves::Bern<double> > berns = ComputeBersteinPolynoms(4);
     wps = ComputeDiscretizedWaypoints(wps, berns, numSteps);
   }
   return wps;
@@ -137,7 +137,7 @@ std::vector<waypoint6_t> ComputeAllWaypointsAngularMomentum(point_t_tC l0, const
   wps.push_back(u3(l0, alpha));
   wps.push_back(u4(l0, alpha));
   if (numSteps > 0) {
-    std::vector<spline::Bern<double> > berns = ComputeBersteinPolynoms(4);
+    std::vector<curves::Bern<double> > berns = ComputeBersteinPolynoms(4);
     wps = ComputeDiscretizedWaypoints(wps, berns, numSteps);
   }
   return wps;
@@ -207,7 +207,7 @@ void computedL_of_T(const ProblemData& pData, const std::vector<double>& Ts, Res
     wps.push_back(Vector3::Zero());
     res.dL_of_t_ = bezier_t(wps.begin(), wps.end(), Ts[0], 1. / Ts[0]);
   } else
-    res.dL_of_t_ = bezier_t::zero(Ts[0]);
+    res.dL_of_t_ = bezier_t::zero(3,Ts[0]);
 }
 
 // no angular momentum for now
diff --git a/src/utils.cpp b/src/utils.cpp
index 75f4e662f4fd9adfcba1a145ff94a3026cd7e034..ce7abfeeb2e2d55b70f3b269d52659f134c7e19d 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -64,9 +64,9 @@ Matrix3 skew(point_t_tC x) {
   return res;
 }
 
-std::vector<spline::Bern<double> > ComputeBersteinPolynoms(const unsigned int degree) {
-  std::vector<spline::Bern<double> > res;
-  for (unsigned int i = 0; i <= (unsigned int)degree; ++i) res.push_back(spline::Bern<double>(degree, i));
+std::vector<curves::Bern<double> > ComputeBersteinPolynoms(const unsigned int degree) {
+  std::vector<curves::Bern<double> > res;
+  for (unsigned int i = 0; i <= (unsigned int)degree; ++i) res.push_back(curves::Bern<double>(degree, i));
   return res;
 }
 
diff --git a/tests/test-bezier-symbolic.cpp b/tests/test-bezier-symbolic.cpp
index d06373f8e7ab8547a4735d93f01fb87948a9831e..88beaa9948c935283f0022fce3b32612294b46f5 100644
--- a/tests/test-bezier-symbolic.cpp
+++ b/tests/test-bezier-symbolic.cpp
@@ -23,7 +23,7 @@
 #include <hpp/bezier-com-traj/data.hh>
 #include <hpp/centroidal-dynamics/centroidal_dynamics.hh>
 #include "test_helper.hh"
-#include <hpp/spline/bezier_curve.h>
+#include <curves/bezier_curve.h>
 
 using namespace bezier_com_traj;
 const double T = 1.5;