diff --git a/Src/Adaptive/FVariadicParticleContainer.hpp b/Src/Adaptive/FVariadicParticleContainer.hpp
index 85cfd214b9010c074866d130044493ca3e894a82..95b28ff9cd17b2922c06726a5428e34483750d25 100644
--- a/Src/Adaptive/FVariadicParticleContainer.hpp
+++ b/Src/Adaptive/FVariadicParticleContainer.hpp
@@ -132,18 +132,20 @@ public:
             position, args...);
     }
 
-    template<typename Position, typename... Args, std::size_t... Is, std::size_t... Js, typename... Ts>
-    void push_impl(inria::index_sequence<Is...>,
-                   inria::index_sequence<Js...>,
-                   const Position& position,
-                   Args... args) {
-        using vt = typename FBase::value_type;
-        constexpr auto Dim = Particle::position_t::Dim;
-        constexpr int missing_offset = Dim + sizeof...(args);
-
-        this->push_back(std::get<Is>(position)..., args...,
-                        std::tuple_element_t<missing_offset + Js, vt>{}...);
-    }
+  template<typename Position, typename... Args, std::size_t... Is,
+	   std::size_t... Js, typename... Ts >
+  void push_impl(inria::index_sequence<Is...>,
+		 inria::index_sequence<Js...>,
+		 const Position& position,
+		 Args... args)
+  {
+    using vt = typename FBase::value_type;
+    constexpr auto Dim = Particle::position_t::Dim;
+    constexpr int missing_offset = Dim + sizeof...(args);
+
+    this->push_back(std::get<Is>(position)..., args...,
+		    std::tuple_element_t<missing_offset + Js, vt>{}...);
+  }
 
     /**
      * \brief Get size to send the container
diff --git a/Src/Utils/variadic_container.hpp b/Src/Utils/variadic_container.hpp
index d680f65f2760132474e089c506413901e8d4c764..9561848e343d8c093e80e8dff3e31ecde6b14181 100644
--- a/Src/Utils/variadic_container.hpp
+++ b/Src/Utils/variadic_container.hpp
@@ -8,6 +8,7 @@
 #include <stdexcept>
 #include <tuple>
 #include <type_traits>
+#include <utility>
 
 #include "FOstreamTuple.hpp"
 
@@ -191,7 +192,7 @@ public:
         this->assign(first, last);
     }
 
-    variadic_vector_impl(const variadic_vector_impl& other) {
+    variadic_vector_impl( variadic_vector_impl& other) {
         this->assign(other.begin(), other.end());
     }
 
@@ -924,7 +925,7 @@ private:
      */
     template <typename... Values>
     iterator insert_impl(
-        const_iterator pos,
+        iterator pos,
         size_type count,
         Values&&... values)
     {
@@ -956,7 +957,7 @@ public:
      * \return An iterator pointing to the inserted element
      */
     template <typename ValueTuple>
-    iterator insert(const_iterator pos, ValueTuple&& values) {
+    iterator insert(iterator pos, ValueTuple&& values) {
         static_assert(std::tuple_size<std::decay_t<ValueTuple>>::value == sizeof...(Indices),
                       "Given tuple does not have the right size");
         return insert_impl(pos, 1, std::get<Indices>(std::forward<ValueTuple>(values))...);
@@ -973,7 +974,7 @@ public:
      * \return An iterator pointing to the first inserted element
      */
     template <typename ValueTuple>
-    iterator insert(const_iterator pos, size_type count, ValueTuple&& values) {
+    iterator insert(iterator pos, size_type count, ValueTuple&& values) {
         static_assert(std::tuple_size<std::decay_t<ValueTuple>>::value == sizeof...(Indices),
                       "Given tuple does not have the right size");
         return insert_impl(pos, count, std::get<Indices>(std::forward<ValueTuple>(values))...);
@@ -1036,7 +1037,7 @@ public:
     template<class TupleIterator,
              typename std::enable_if<is_tuple_get_like<TupleIterator>::value, char>::type = 0
              >
-    iterator insert(const_iterator pos, TupleIterator first, TupleIterator last) {
+    iterator insert(iterator pos, TupleIterator first, TupleIterator last) {
         size_type pos_idx = pos - this->begin();
         size_type count = last - first;
 
@@ -1074,7 +1075,7 @@ public:
     template<class ValueIterator,
              typename std::enable_if<! is_tuple_get_like<ValueIterator>::value, char>::type = 0
              >
-    iterator insert(const_iterator pos, ValueIterator first, ValueIterator last) {
+    iterator insert(iterator pos, ValueIterator first, ValueIterator last) {
         auto ret_offset = pos - this->cbegin();
         while(first != last) {
             insert(pos, *first);
@@ -1183,7 +1184,7 @@ public:
      *
      * \param values Values to insert into the sub-arrays
      */
-    void push_back(const Types&... values) {
+    void push_back(Types const&... values) {
         this->insert_impl(this->end(), 1, values...);
     }
 
@@ -1291,25 +1292,26 @@ public:
 
 
 template<typename... Types, std::size_t... Indices>
-class variadic_vector_iterator<std::tuple<Types...>, inria::index_sequence<Indices...>>
+class variadic_vector_iterator<std::tuple<Types...>, inria::index_sequence<Indices...> >
     : public std::tuple<Types*...> {
 
-    using base_t = std::tuple<Types*...>;
-    using value_tuple = std::tuple<typename std::remove_const<Types>::type...>;
+    using base_t            = std::tuple<Types*...>;
+    using value_tuple       = std::tuple<typename std::remove_const<Types>::type...>;
     using const_value_tuple = std::tuple<const Types...>;
 
 public:
-    using difference_type = std::ptrdiff_t;
-    using value_type = std::tuple<Types...>;
-    using reference = std::tuple<Types&...>;
-    using pointer = void;
+    using difference_type   = std::ptrdiff_t;
+    using value_type        = std::tuple<Types...>;
+    using reference         = std::tuple<Types&...>;
+    using pointer           = void;
     using iterator_category = std::random_access_iterator_tag;
-
-    using pointer_tuple = std::tuple<Types*...>;
+   using base_seq = inria::index_sequence<Indices...> ;
+    using pointer_tuple     = std::tuple<Types*...>;
 
 
     using typename base_t::tuple;
     variadic_vector_iterator(base_t tup_in) : base_t(tup_in){}
+  variadic_vector_iterator(base_t tup_in, base_seq t) : base_t(tup_in){}
     /*
      */
     //    variadic_vector_iterator(base_t tup_in):(tup_in){}