diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in
index 6ad3914fd15846e221733eb0289056da7f506139..9ca64de3f434a2e125f080fe33b7d42657e5d5f8 100644
--- a/doc/Doxyfile.extra.in
+++ b/doc/Doxyfile.extra.in
@@ -8,5 +8,3 @@ ALIASES   += Link{1}="\ref \1"
 ALIASES   += Link{2}="\ref \1 \"\2\""
 ALIASES   += LHPP{2}="\Link{hpp::\1::\2,\2}"
 ALIASES   += LPinocchio{1}="\LHPP{pinocchio,\1}"
-
-EXTRA_PACKAGES = {amsmath}
diff --git a/src/problem-solver.cc b/src/problem-solver.cc
index a7f958680bb2711b40509b38b27a8b6e78ec43e9..43e64d85943b59875249ce6aa80b813f2e7c032c 100644
--- a/src/problem-solver.cc
+++ b/src/problem-solver.cc
@@ -250,10 +250,7 @@ namespace hpp {
         if (!robot_->jointAndShapes.has (*it1))
           throw std::runtime_error ("First list of triangles not found.");
         l = robot_->jointAndShapes.get (*it1);
-        for (JointAndShapes_t::const_iterator it(l.begin()); it!=l.end();++it)
-        {
-          objectSurfaces.push_back(*it);
-        }
+        objectSurfaces.insert(objectSurfaces.end(), l.begin(), l.end());
       }
 
       for (StringList_t::const_iterator it2 = surface2.begin ();
@@ -265,10 +262,7 @@ namespace hpp {
         else if (jointAndShapes.has (*it2))
           l = jointAndShapes.get (*it2);
         else throw std::runtime_error ("Second list of triangles not found.");
-        for (JointAndShapes_t::const_iterator it(l.begin()); it!=l.end();++it)
-        {
-          floorSurfaces.push_back(*it);
-        }
+        floorSurfaces.insert(floorSurfaces.end(), l.begin(), l.end());
       }
 
       typedef hpp::constraints::explicit_::ConvexShapeContact Constraint_t;
@@ -311,10 +305,7 @@ namespace hpp {
         if (!robot_->jointAndShapes.has (*it1))
           throw std::runtime_error ("First list of triangles not found.");
         l = robot_->jointAndShapes.get (*it1);
-        for (JointAndShapes_t::const_iterator it(l.begin()); it!=l.end();++it)
-        {
-          objectSurfaces.push_back(*it);
-        }
+        objectSurfaces.insert(objectSurfaces.end(), l.begin(), l.end());
       }
 
       for (StringList_t::const_iterator it2 = surface2.begin ();
@@ -326,10 +317,7 @@ namespace hpp {
         else if (jointAndShapes.has (*it2))
           l = jointAndShapes.get (*it2);
         else throw std::runtime_error ("Second list of triangles not found.");
-        for (JointAndShapes_t::const_iterator it(l.begin()); it!=l.end();++it)
-        {
-          floorSurfaces.push_back(*it);
-        }
+        floorSurfaces.insert(floorSurfaces.end(), l.begin(), l.end());
       }
 
       hpp::constraints::ConvexShapeContactPtr_t cvxShape