In common.h, define func_lib for function objects.  In configure.ac, define HAVE_STD_FUNCTION and HAVE_BOOST_FUNCTION.  Include function headers in ndnboost.
diff --git a/ndnboost/mpl/aux_/O1_size_impl.hpp b/ndnboost/mpl/aux_/O1_size_impl.hpp
new file mode 100644
index 0000000..2b2cf08
--- /dev/null
+++ b/ndnboost/mpl/aux_/O1_size_impl.hpp
@@ -0,0 +1,87 @@
+
+#ifndef BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
+#define BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: O1_size_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/O1_size_fwd.hpp>
+#include <ndnboost/mpl/long.hpp>
+#include <ndnboost/mpl/if.hpp>
+#include <ndnboost/mpl/aux_/has_size.hpp>
+#include <ndnboost/mpl/aux_/config/forwarding.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// default implementation - returns 'Sequence::size' if sequence has a 'size'
+// member, and -1 otherwise; conrete sequences might override it by 
+// specializing either the 'O1_size_impl' or the primary 'O1_size' template
+
+#   if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
+    && !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
+
+namespace aux {
+template< typename Sequence > struct O1_size_impl
+    : Sequence::size
+{
+};
+}
+
+template< typename Tag >
+struct O1_size_impl
+{
+    template< typename Sequence > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+        : if_<
+              aux::has_size<Sequence>
+            , aux::O1_size_impl<Sequence>
+            , long_<-1>
+            >::type
+    {
+#else
+    {
+        typedef typename if_<
+              aux::has_size<Sequence>
+            , aux::O1_size_impl<Sequence>
+            , long_<-1>
+            >::type type;
+
+        BOOST_STATIC_CONSTANT(long, value =
+              (if_<
+                  aux::has_size<Sequence>
+                , aux::O1_size_impl<Sequence>
+                , long_<-1>
+                >::type::value)
+            );
+#endif
+    };
+};
+
+#   else // BOOST_MSVC
+
+template< typename Tag >
+struct O1_size_impl
+{
+    template< typename Sequence > struct apply
+        : long_<-1>
+        {
+        };
+};
+
+#   endif
+
+}}
+
+#endif // BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/advance_backward.hpp b/ndnboost/mpl/aux_/advance_backward.hpp
new file mode 100644
index 0000000..123df81
--- /dev/null
+++ b/ndnboost/mpl/aux_/advance_backward.hpp
@@ -0,0 +1,128 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+#define BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: advance_backward.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/prior.hpp>
+#   include <ndnboost/mpl/apply_wrap.hpp>
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if    !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER advance_backward.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/limits/unrolling.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+#   include <ndnboost/mpl/aux_/config/eti.hpp>
+
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+// forward declaration
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_backward;
+
+#   define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/advance_backward.hpp>))
+#   include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<BOOST_MPL_LIMIT_UNROLLING>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - BOOST_MPL_LIMIT_UNROLLING) < 0
+                    ? 0
+                    : N - BOOST_MPL_LIMIT_UNROLLING
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<>
+struct advance_backward< BOOST_PP_FRAME_ITERATION(1) >
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+
+#if i_ > 0
+#   define BOOST_PP_ITERATION_PARAMS_2 \
+    (3,(1, BOOST_PP_FRAME_ITERATION(1), <ndnboost/mpl/aux_/advance_backward.hpp>))
+#   include BOOST_PP_ITERATE()
+#endif
+
+        typedef BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(1)) type;
+    };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+#endif
+};
+
+#undef i_
+
+///// iteration, depth == 2
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+#   define AUX778076_ITER_0 BOOST_PP_CAT(iter,BOOST_PP_DEC(BOOST_PP_FRAME_ITERATION(2)))
+#   define AUX778076_ITER_1 BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(2))
+
+        typedef typename prior<AUX778076_ITER_0>::type AUX778076_ITER_1;
+        
+#   undef AUX778076_ITER_1
+#   undef AUX778076_ITER_0
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/advance_forward.hpp b/ndnboost/mpl/aux_/advance_forward.hpp
new file mode 100644
index 0000000..5561c26
--- /dev/null
+++ b/ndnboost/mpl/aux_/advance_forward.hpp
@@ -0,0 +1,127 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+#define BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: advance_forward.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/next.hpp>
+#   include <ndnboost/mpl/apply_wrap.hpp>
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if    !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER advance_forward.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/limits/unrolling.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+#   include <ndnboost/mpl/aux_/config/eti.hpp>
+
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+// forward declaration
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_forward;
+
+#   define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/advance_forward.hpp>))
+#   include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > 
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<BOOST_MPL_LIMIT_UNROLLING>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - BOOST_MPL_LIMIT_UNROLLING) < 0
+                    ? 0
+                    : N - BOOST_MPL_LIMIT_UNROLLING
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<>
+struct advance_forward< BOOST_PP_FRAME_ITERATION(1) >
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+
+#if i_ > 0
+#   define BOOST_PP_ITERATION_PARAMS_2 \
+    (3,(1, i_, <ndnboost/mpl/aux_/advance_forward.hpp>))
+#   include BOOST_PP_ITERATE()
+#endif
+        typedef BOOST_PP_CAT(iter,i_) type;
+    };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+#endif
+};
+
+#undef i_
+
+///// iteration, depth == 2
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+#   define AUX778076_ITER_0 BOOST_PP_CAT(iter,BOOST_PP_DEC(BOOST_PP_FRAME_ITERATION(2)))
+#   define AUX778076_ITER_1 BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(2))
+
+        typedef typename next<AUX778076_ITER_0>::type AUX778076_ITER_1;
+        
+#   undef AUX778076_ITER_1
+#   undef AUX778076_ITER_0
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/arg_typedef.hpp b/ndnboost/mpl/aux_/arg_typedef.hpp
new file mode 100644
index 0000000..797842e
--- /dev/null
+++ b/ndnboost/mpl/aux_/arg_typedef.hpp
@@ -0,0 +1,31 @@
+
+#ifndef BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+#define BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: arg_typedef.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/lambda.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+    || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+    
+#   define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) typedef T name;
+
+#else
+
+#   define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/arithmetic_op.hpp b/ndnboost/mpl/aux_/arithmetic_op.hpp
new file mode 100644
index 0000000..58f2568
--- /dev/null
+++ b/ndnboost/mpl/aux_/arithmetic_op.hpp
@@ -0,0 +1,92 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: arithmetic_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/integral_c.hpp>
+#   include <ndnboost/mpl/aux_/largest_int.hpp>
+#   include <ndnboost/mpl/aux_/value_wknd.hpp>
+#endif
+
+#if !defined(AUX778076_OP_PREFIX)
+#   define AUX778076_OP_PREFIX AUX778076_OP_NAME
+#endif
+
+#include <ndnboost/mpl/aux_/numeric_op.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/aux_/config/workaround.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+
+namespace ndnboost { namespace mpl {
+
+#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+namespace aux {
+template< typename T, T n1, T n2 >
+struct BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)
+{
+    BOOST_STATIC_CONSTANT(T, value = (n1 AUX778076_OP_TOKEN n2));
+    typedef integral_c<T,value> type;
+};
+}
+#endif
+
+template<>
+struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag>
+{
+    template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+#else
+        : aux::BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+#endif
+    {
+    };
+};
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#undef AUX778076_OP_TAG_NAME
+#undef AUX778076_OP_IMPL_NAME
+#undef AUX778076_OP_ARITY
+#undef AUX778076_OP_PREFIX
+#undef AUX778076_OP_NAME
+#undef AUX778076_OP_TOKEN
diff --git a/ndnboost/mpl/aux_/arity_spec.hpp b/ndnboost/mpl/aux_/arity_spec.hpp
new file mode 100644
index 0000000..29c10ba
--- /dev/null
+++ b/ndnboost/mpl/aux_/arity_spec.hpp
@@ -0,0 +1,67 @@
+
+#ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: arity_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/int.hpp>
+#include <ndnboost/mpl/limits/arity.hpp>
+#include <ndnboost/mpl/aux_/config/dtp.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#include <ndnboost/mpl/aux_/arity.hpp>
+#include <ndnboost/mpl/aux_/template_arity_fwd.hpp>
+#include <ndnboost/mpl/aux_/config/ttp.hpp>
+#include <ndnboost/mpl/aux_/config/lambda.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+
+#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) \
+namespace aux { \
+template< BOOST_MPL_AUX_NTTP_DECL(int, N), BOOST_MPL_PP_PARAMS(i,type T) > \
+struct arity< \
+      name< BOOST_MPL_PP_PARAMS(i,T) > \
+    , N \
+    > \
+{ \
+    BOOST_STATIC_CONSTANT(int \
+        , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+        ); \
+}; \
+} \
+/**/
+#else
+#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/
+#endif
+
+#   define BOOST_MPL_AUX_ARITY_SPEC(i,name) \
+    BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,typename,name) \
+/**/
+
+
+#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+    && !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) \
+namespace aux { \
+template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+struct template_arity< name<BOOST_MPL_PP_PARAMS(i,T)> > \
+    : int_<i> \
+{ \
+}; \
+} \
+/**/
+#else
+#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
+#endif
+
+
+#endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/at_impl.hpp b/ndnboost/mpl/aux_/at_impl.hpp
new file mode 100644
index 0000000..5d2f235
--- /dev/null
+++ b/ndnboost/mpl/aux_/at_impl.hpp
@@ -0,0 +1,45 @@
+
+#ifndef BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: at_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/begin_end.hpp>
+#include <ndnboost/mpl/advance.hpp>
+#include <ndnboost/mpl/deref.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// default implementation; conrete sequences might override it by 
+// specializing either the 'at_impl' or the primary 'at' template
+
+template< typename Tag >
+struct at_impl
+{
+    template< typename Sequence, typename N > struct apply
+    {
+        typedef typename advance<
+              typename begin<Sequence>::type
+            , N
+            >::type iter_;
+
+        typedef typename deref<iter_>::type type;
+    };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, at_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/begin_end_impl.hpp b/ndnboost/mpl/aux_/begin_end_impl.hpp
new file mode 100644
index 0000000..e57ef71
--- /dev/null
+++ b/ndnboost/mpl/aux_/begin_end_impl.hpp
@@ -0,0 +1,101 @@
+
+#ifndef BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: begin_end_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/begin_end_fwd.hpp>
+#include <ndnboost/mpl/sequence_tag_fwd.hpp>
+#include <ndnboost/mpl/void.hpp>
+#include <ndnboost/mpl/eval_if.hpp>
+#include <ndnboost/mpl/aux_/has_begin.hpp>
+#include <ndnboost/mpl/aux_/na.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/eti.hpp>
+
+namespace ndnboost { namespace mpl {
+
+
+namespace aux { 
+
+template< typename Sequence > 
+struct begin_type 
+{ 
+    typedef typename Sequence::begin type; 
+};
+template< typename Sequence > 
+struct end_type
+{ 
+    typedef typename Sequence::end type; 
+};
+
+}
+
+// default implementation; conrete sequences might override it by 
+// specializing either the 'begin_impl/end_impl' or the primary 
+// 'begin/end' templates
+
+template< typename Tag >
+struct begin_impl
+{
+    template< typename Sequence > struct apply
+    {
+        typedef typename eval_if<aux::has_begin<Sequence, true_>,
+                                 aux::begin_type<Sequence>, void_>::type type;
+    };
+};
+
+template< typename Tag >
+struct end_impl
+{
+    template< typename Sequence > struct apply
+    {
+        typedef typename eval_if<aux::has_begin<Sequence, true_>,
+                                 aux::end_type<Sequence>, void_>::type type;
+    };
+};
+
+// specialize 'begin_trait/end_trait' for two pre-defined tags
+
+#   define AUX778076_IMPL_SPEC(name, tag, result) \
+template<> \
+struct name##_impl<tag> \
+{ \
+    template< typename Sequence > struct apply \
+    { \
+        typedef result type; \
+    }; \
+}; \
+/**/
+
+// a sequence with nested 'begin/end' typedefs; just query them
+AUX778076_IMPL_SPEC(begin, nested_begin_end_tag, typename Sequence::begin)
+AUX778076_IMPL_SPEC(end, nested_begin_end_tag, typename Sequence::end)
+
+// if a type 'T' does not contain 'begin/end' or 'tag' members 
+// and doesn't specialize either 'begin/end' or 'begin_impl/end_impl' 
+// templates, then we end up here
+AUX778076_IMPL_SPEC(begin, non_sequence_tag, void_)
+AUX778076_IMPL_SPEC(end, non_sequence_tag, void_)
+AUX778076_IMPL_SPEC(begin, na, void_)
+AUX778076_IMPL_SPEC(end, na, void_)
+
+#   undef AUX778076_IMPL_SPEC
+
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,begin_impl)
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,end_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/clear_impl.hpp b/ndnboost/mpl/aux_/clear_impl.hpp
new file mode 100644
index 0000000..f55dfa3
--- /dev/null
+++ b/ndnboost/mpl/aux_/clear_impl.hpp
@@ -0,0 +1,35 @@
+
+#ifndef BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: clear_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/clear_fwd.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/eti.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// no default implementation; the definition is needed to make MSVC happy
+
+template< typename Tag >
+struct clear_impl
+{
+    template< typename Sequence > struct apply;
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, clear_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/common_name_wknd.hpp b/ndnboost/mpl/aux_/common_name_wknd.hpp
new file mode 100644
index 0000000..4d7c128
--- /dev/null
+++ b/ndnboost/mpl/aux_/common_name_wknd.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+#define BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: common_name_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(__BORLANDC__, < 0x561)
+// agurt, 12/nov/02: to suppress the bogus "Cannot have both a template class 
+// and function named 'xxx'" diagnostic
+#   define BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
+namespace name_##wknd { \
+template< typename > void name(); \
+} \
+/**/
+
+#else
+
+#   define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
+
+#endif // __BORLANDC__
+
+#endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/comparison_op.hpp b/ndnboost/mpl/aux_/comparison_op.hpp
new file mode 100644
index 0000000..3082724
--- /dev/null
+++ b/ndnboost/mpl/aux_/comparison_op.hpp
@@ -0,0 +1,83 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: comparison_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/bool.hpp>
+#   include <ndnboost/mpl/aux_/value_wknd.hpp>
+#endif
+
+#if !defined(AUX778076_OP_PREFIX)
+#   define AUX778076_OP_PREFIX AUX778076_OP_NAME
+#endif
+
+#define AUX778076_OP_ARITY 2
+
+#include <ndnboost/mpl/aux_/numeric_op.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/aux_/config/integral.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// MSVC workaround: implement less in terms of greater
+#if 0 AUX778076_OP_TOKEN 1 && !(1 AUX778076_OP_TOKEN 0) && !(0 AUX778076_OP_TOKEN 0)
+#   define AUX778076_OP(N1, N2) \
+    ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) \
+/**/
+#else
+#   define AUX778076_OP(N1, N2) \
+    ( BOOST_MPL_AUX_VALUE_WKND(N1)::value \
+          AUX778076_OP_TOKEN BOOST_MPL_AUX_VALUE_WKND(N2)::value \
+        ) \
+/**/
+#endif
+
+template<>
+struct AUX778076_OP_IMPL_NAME<integral_c_tag,integral_c_tag>
+{
+    template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+        : bool_< AUX778076_OP(N1, N2) >
+    {
+#else
+    {
+        BOOST_STATIC_CONSTANT(bool, value = AUX778076_OP(N1, N2));
+        typedef bool_<value> type;
+#endif
+    };
+};
+
+#undef AUX778076_OP
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#undef AUX778076_OP_TAG_NAME
+#undef AUX778076_OP_IMPL_NAME
+#undef AUX778076_OP_ARITY
+#undef AUX778076_OP_PREFIX
+#undef AUX778076_OP_NAME
+#undef AUX778076_OP_TOKEN
diff --git a/ndnboost/mpl/aux_/config/bcc.hpp b/ndnboost/mpl/aux_/config/bcc.hpp
new file mode 100644
index 0000000..b742125
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/bcc.hpp
@@ -0,0 +1,28 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: bcc.hpp 49272 2008-10-11 06:50:46Z agurtovoy $
+// $Date: 2004-09-02 10:41:37 -0500 (Thu, 02 Sep 2004) $
+// $Revision: 24874 $
+
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if    !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+    && BOOST_WORKAROUND(__BORLANDC__, >= 0x590) \
+    && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+
+#   define BOOST_MPL_CFG_BCC590_WORKAROUNDS
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/bind.hpp b/ndnboost/mpl/aux_/config/bind.hpp
new file mode 100644
index 0000000..bf6c05e
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/bind.hpp
@@ -0,0 +1,33 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+
+// Copyright David Abrahams 2002
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: bind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if    !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+    && (   BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+        || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+        )
+
+#   define BOOST_MPL_CFG_NO_BIND_TEMPLATE
+
+#endif
+
+//#define BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+
+#endif // BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/compiler.hpp b/ndnboost/mpl/aux_/config/compiler.hpp
new file mode 100644
index 0000000..8a52441
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/compiler.hpp
@@ -0,0 +1,66 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: compiler.hpp 53189 2009-05-22 20:07:55Z hkaiser $
+// $Date: 2009-05-22 13:07:55 -0700 (Fri, 22 May 2009) $
+// $Revision: 53189 $
+
+#if !defined(BOOST_MPL_CFG_COMPILER_DIR)
+
+#   include <ndnboost/mpl/aux_/config/dtp.hpp>
+#   include <ndnboost/mpl/aux_/config/ttp.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   include <ndnboost/mpl/aux_/config/msvc.hpp>
+#   include <ndnboost/mpl/aux_/config/gcc.hpp>
+#   include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#   if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#       define BOOST_MPL_CFG_COMPILER_DIR msvc60
+
+#   elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#       define BOOST_MPL_CFG_COMPILER_DIR msvc70
+
+#   elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
+#       define BOOST_MPL_CFG_COMPILER_DIR gcc
+
+#   elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+#       if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#           define BOOST_MPL_CFG_COMPILER_DIR bcc551
+#       elif BOOST_WORKAROUND(__BORLANDC__, >= 0x590)
+#           define BOOST_MPL_CFG_COMPILER_DIR bcc
+#       else
+#           define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590
+#       endif
+
+#   elif BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+#       define BOOST_MPL_CFG_COMPILER_DIR dmc
+
+#   elif defined(__MWERKS__)
+#       if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#           define BOOST_MPL_CFG_COMPILER_DIR mwcw
+#       else
+#           define BOOST_MPL_CFG_COMPILER_DIR plain
+#       endif
+
+#   elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#       define BOOST_MPL_CFG_COMPILER_DIR no_ctps
+
+#   elif defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
+#       define BOOST_MPL_CFG_COMPILER_DIR no_ttp
+
+#   else
+#       define BOOST_MPL_CFG_COMPILER_DIR plain
+#   endif
+
+#endif // BOOST_MPL_CFG_COMPILER_DIR
+
+#endif // BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp b/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
new file mode 100644
index 0000000..1f54ae6
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: dmc_ambiguous_ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if    !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+    && BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+
+#   define BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/forwarding.hpp b/ndnboost/mpl/aux_/config/forwarding.hpp
new file mode 100644
index 0000000..167e832
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/forwarding.hpp
@@ -0,0 +1,27 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: forwarding.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if    !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+    && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+
+#   define BOOST_MPL_CFG_NO_NESTED_FORWARDING
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/has_apply.hpp b/ndnboost/mpl/aux_/config/has_apply.hpp
new file mode 100644
index 0000000..0daed5a
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/has_apply.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/has_xxx.hpp>
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY) \
+    && (   defined(BOOST_MPL_CFG_NO_HAS_XXX) \
+        || BOOST_WORKAROUND(__EDG_VERSION__, < 300) \
+        || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+        || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
+        )
+
+#   define BOOST_MPL_CFG_NO_HAS_APPLY
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/has_xxx.hpp b/ndnboost/mpl/aux_/config/has_xxx.hpp
new file mode 100644
index 0000000..1cff8af
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/has_xxx.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+// Copyright David Abrahams 2002-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_xxx.hpp 63518 2010-07-02 08:32:03Z agurtovoy $
+// $Date: 2010-07-02 01:32:03 -0700 (Fri, 02 Jul 2010) $
+// $Revision: 63518 $
+
+#include <ndnboost/mpl/aux_/config/overload_resolution.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+// agurt, 11/jan/03: signals a stub-only 'has_xxx' implementation
+
+#if !defined(BOOST_MPL_CFG_NO_HAS_XXX) \
+    && (   defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
+        || BOOST_WORKAROUND(__GNUC__, <= 2) \
+        || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
+        )
+
+#   define BOOST_MPL_CFG_NO_HAS_XXX
+#   define BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/msvc_typename.hpp b/ndnboost/mpl/aux_/config/msvc_typename.hpp
new file mode 100644
index 0000000..d5fab00
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/msvc_typename.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_typename.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#   define BOOST_MSVC_TYPENAME
+#else
+#   define BOOST_MSVC_TYPENAME typename
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/pp_counter.hpp b/ndnboost/mpl/aux_/config/pp_counter.hpp
new file mode 100644
index 0000000..52c4319
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/pp_counter.hpp
@@ -0,0 +1,26 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2006
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: pp_counter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_AUX_PP_COUNTER)
+#   include <ndnboost/mpl/aux_/config/msvc.hpp>
+#   if BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
+#       define BOOST_MPL_AUX_PP_COUNTER() __COUNTER__
+#   else
+#       define BOOST_MPL_AUX_PP_COUNTER() __LINE__
+#   endif
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/typeof.hpp b/ndnboost/mpl/aux_/config/typeof.hpp
new file mode 100644
index 0000000..b9425f9
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/typeof.hpp
@@ -0,0 +1,38 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2003-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: typeof.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/gcc.hpp>
+
+#if !defined(BOOST_MPL_CFG_HAS_TYPEOF) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+    && (   defined(BOOST_MPL_CFG_GCC) && BOOST_MPL_CFG_GCC >= 0x0302 \
+        || defined(__MWERKS__) && __MWERKS__ >= 0x3000 \
+        )
+
+#   define BOOST_MPL_CFG_HAS_TYPEOF
+
+#endif
+
+
+#if !defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
+    && defined(BOOST_MPL_CFG_HAS_TYPEOF)
+
+#   define BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+
+#endif
+
+#endif // BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/config/use_preprocessed.hpp b/ndnboost/mpl/aux_/config/use_preprocessed.hpp
new file mode 100644
index 0000000..4494366
--- /dev/null
+++ b/ndnboost/mpl/aux_/config/use_preprocessed.hpp
@@ -0,0 +1,19 @@
+
+#ifndef BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: use_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+// #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+#endif // BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/contains_impl.hpp b/ndnboost/mpl/aux_/contains_impl.hpp
new file mode 100644
index 0000000..53ec122
--- /dev/null
+++ b/ndnboost/mpl/aux_/contains_impl.hpp
@@ -0,0 +1,61 @@
+
+#ifndef BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
+
+// Copyright Eric Friedman 2002
+// Copyright Aleksey Gurtovoy 2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: contains_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/contains_fwd.hpp>
+#include <ndnboost/mpl/begin_end.hpp>
+#include <ndnboost/mpl/find.hpp>
+#include <ndnboost/mpl/not.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/forwarding.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+
+#include <ndnboost/type_traits/is_same.hpp>
+
+namespace ndnboost { namespace mpl {
+
+template< typename Tag >
+struct contains_impl
+{
+    template< typename Sequence, typename T > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+        : not_< is_same<
+              typename find<Sequence,T>::type
+            , typename end<Sequence>::type
+            > >
+    {
+#else
+    {
+        typedef not_< is_same<
+              typename find<Sequence,T>::type
+            , typename end<Sequence>::type
+            > > type;
+
+        BOOST_STATIC_CONSTANT(bool, value = 
+              (not_< is_same<
+                  typename find<Sequence,T>::type
+                , typename end<Sequence>::type
+                > >::value)
+            );
+#endif
+    };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,contains_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/count_args.hpp b/ndnboost/mpl/aux_/count_args.hpp
new file mode 100644
index 0000000..59852b0
--- /dev/null
+++ b/ndnboost/mpl/aux_/count_args.hpp
@@ -0,0 +1,105 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: count_args.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/preprocessor/expr_if.hpp>
+#include <ndnboost/preprocessor/inc.hpp>
+#include <ndnboost/preprocessor/cat.hpp>
+
+#if !defined(AUX778076_COUNT_ARGS_PARAM_NAME)
+#   define AUX778076_COUNT_ARGS_PARAM_NAME T
+#endif
+
+#if !defined(AUX778076_COUNT_ARGS_TEMPLATE_PARAM)
+#   define AUX778076_COUNT_ARGS_TEMPLATE_PARAM typename AUX778076_COUNT_ARGS_PARAM_NAME
+#endif
+
+// local macros, #undef-ined at the end of the header
+
+#if !defined(AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES)
+
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+
+#   define AUX778076_COUNT_ARGS_REPEAT BOOST_MPL_PP_REPEAT
+#   define AUX778076_COUNT_ARGS_PARAMS(param) \
+    BOOST_MPL_PP_PARAMS( \
+          AUX778076_COUNT_ARGS_ARITY \
+        , param \
+        ) \
+    /**/
+
+#else
+
+#   include <ndnboost/preprocessor/enum_shifted_params.hpp>
+#   include <ndnboost/preprocessor/repeat.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+
+#   define AUX778076_COUNT_ARGS_REPEAT BOOST_PP_REPEAT
+#   define AUX778076_COUNT_ARGS_PARAMS(param) \
+    BOOST_PP_ENUM_SHIFTED_PARAMS( \
+          BOOST_PP_INC(AUX778076_COUNT_ARGS_ARITY) \
+        , param \
+        ) \
+    /**/
+
+#endif // AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
+
+
+#define AUX778076_IS_ARG_TEMPLATE_NAME \
+    BOOST_PP_CAT(is_,BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_arg)) \
+/**/
+
+#define AUX778076_COUNT_ARGS_FUNC(unused, i, param) \
+    BOOST_PP_EXPR_IF(i, +) \
+    AUX778076_IS_ARG_TEMPLATE_NAME<BOOST_PP_CAT(param,BOOST_PP_INC(i))>::value \
+/**/
+
+// is_<xxx>_arg
+template< AUX778076_COUNT_ARGS_TEMPLATE_PARAM >
+struct AUX778076_IS_ARG_TEMPLATE_NAME
+{
+    BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+template<>
+struct AUX778076_IS_ARG_TEMPLATE_NAME<AUX778076_COUNT_ARGS_DEFAULT>
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+// <xxx>_count_args
+template<
+      AUX778076_COUNT_ARGS_PARAMS(AUX778076_COUNT_ARGS_TEMPLATE_PARAM)
+    >
+struct BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_count_args)
+{
+    BOOST_STATIC_CONSTANT(int, value = AUX778076_COUNT_ARGS_REPEAT(
+          AUX778076_COUNT_ARGS_ARITY
+        , AUX778076_COUNT_ARGS_FUNC
+        , AUX778076_COUNT_ARGS_PARAM_NAME
+        ));
+};
+
+#undef AUX778076_COUNT_ARGS_FUNC
+#undef AUX778076_IS_ARG_TEMPLATE_NAME
+#undef AUX778076_COUNT_ARGS_PARAMS
+#undef AUX778076_COUNT_ARGS_REPEAT
+
+#undef AUX778076_COUNT_ARGS_ARITY
+#undef AUX778076_COUNT_ARGS_DEFAULT
+#undef AUX778076_COUNT_ARGS_PREFIX
+#undef AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
+#undef AUX778076_COUNT_ARGS_TEMPLATE_PARAM
+#undef AUX778076_COUNT_ARGS_PARAM_NAME
diff --git a/ndnboost/mpl/aux_/find_if_pred.hpp b/ndnboost/mpl/aux_/find_if_pred.hpp
new file mode 100644
index 0000000..65c8786
--- /dev/null
+++ b/ndnboost/mpl/aux_/find_if_pred.hpp
@@ -0,0 +1,31 @@
+
+#ifndef BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
+#define BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Eric Friedman 2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+#include <ndnboost/mpl/aux_/iter_apply.hpp>
+#include <ndnboost/mpl/not.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Predicate >
+struct find_if_pred
+{
+    template< typename Iterator >
+    struct apply
+    {
+        typedef not_< aux::iter_apply1<Predicate,Iterator> > type;
+    };
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/fold_impl.hpp b/ndnboost/mpl/aux_/fold_impl.hpp
new file mode 100644
index 0000000..339e296
--- /dev/null
+++ b/ndnboost/mpl/aux_/fold_impl.hpp
@@ -0,0 +1,43 @@
+
+#ifndef BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/next_prior.hpp>
+#   include <ndnboost/mpl/apply.hpp>
+#   include <ndnboost/mpl/deref.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#       include <ndnboost/mpl/if.hpp>
+#       include <ndnboost/type_traits/is_same.hpp>
+#   endif
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER fold_impl.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   define AUX778076_FOLD_IMPL_OP(iter) typename deref<iter>::type
+#   define AUX778076_FOLD_IMPL_NAME_PREFIX fold
+#   include <ndnboost/mpl/aux_/fold_impl_body.hpp>
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/fold_impl_body.hpp b/ndnboost/mpl/aux_/fold_impl_body.hpp
new file mode 100644
index 0000000..b698dbe
--- /dev/null
+++ b/ndnboost/mpl/aux_/fold_impl_body.hpp
@@ -0,0 +1,365 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: fold_impl_body.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#   include <ndnboost/mpl/limits/unrolling.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/config/workaround.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+#   include <ndnboost/mpl/aux_/config/eti.hpp>
+
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/dec.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+// local macros, #undef-ined at the end of the header
+
+#   define AUX778076_ITER_FOLD_STEP(unused, i, unused2) \
+    typedef typename apply2< \
+          ForwardOp \
+        , BOOST_PP_CAT(state,i) \
+        , AUX778076_FOLD_IMPL_OP(BOOST_PP_CAT(iter,i)) \
+        >::type BOOST_PP_CAT(state,BOOST_PP_INC(i)); \
+    typedef typename mpl::next<BOOST_PP_CAT(iter,i)>::type \
+        BOOST_PP_CAT(iter,BOOST_PP_INC(i)); \
+    /**/
+
+#   define AUX778076_FOLD_IMPL_NAME \
+    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \
+    /**/
+
+#   define AUX778076_FOLD_CHUNK_NAME \
+    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \
+    /**/
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+template<
+      BOOST_MPL_AUX_NTTP_DECL(int, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME;
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#   if !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+
+#   define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/fold_impl_body.hpp>))
+#   include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template<
+      BOOST_MPL_AUX_NTTP_DECL(int, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME
+{
+    typedef AUX778076_FOLD_IMPL_NAME<
+          BOOST_MPL_LIMIT_UNROLLING
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef AUX778076_FOLD_IMPL_NAME<
+          ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+        
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+// fallback implementation for sequences of unknown size
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME<-1,First,Last,State,ForwardOp>
+    : AUX778076_FOLD_IMPL_NAME<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State,AUX778076_FOLD_IMPL_OP(First)>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME<-1,Last,Last,State,ForwardOp>
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+#   else // BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+
+// Borland have some serious problems with the unrolled version, so
+// we always use a basic implementation
+template<
+      BOOST_MPL_AUX_NTTP_DECL(int, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME
+{
+    typedef AUX778076_FOLD_IMPL_NAME<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State,AUX778076_FOLD_IMPL_OP(First)>::type
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+    typedef state type;
+};
+
+template<
+      BOOST_MPL_AUX_NTTP_DECL(int, N)
+     , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME<N,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+    typedef state type;
+};
+
+#   endif // BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+ 
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+struct AUX778076_FOLD_CHUNK_NAME;
+
+#   define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/fold_impl_body.hpp>))
+#   include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > 
+struct AUX778076_FOLD_CHUNK_NAME
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        > 
+    struct result_
+    {
+        typedef AUX778076_FOLD_IMPL_NAME<
+              BOOST_MPL_LIMIT_UNROLLING
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef AUX778076_FOLD_IMPL_NAME<
+              ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+// fallback implementation for sequences of unknown size
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step);
+
+template<
+      typename Last
+    , typename State
+    >
+struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<> 
+struct AUX778076_FOLD_CHUNK_NAME<-1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        > 
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same<First,Last>::type
+            , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)<Last,State>
+            , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)<First,Last,State,ForwardOp>
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+    /// ETI workaround
+    template<> struct result_<int,int,int,int>
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+#endif
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)
+{
+    // can't inherit here - it breaks MSVC 7.0
+    typedef AUX778076_FOLD_CHUNK_NAME<-1>::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State,AUX778076_FOLD_IMPL_OP(First)>::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      BOOST_MPL_AUX_NTTP_DECL(int, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME
+    : AUX778076_FOLD_CHUNK_NAME<N>
+        ::template result_<First,Last,State,ForwardOp>
+{
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+}}}
+
+#   undef AUX778076_FOLD_IMPL_NAME
+#   undef AUX778076_FOLD_CHUNK_NAME
+#   undef AUX778076_ITER_FOLD_STEP
+
+#undef AUX778076_FOLD_IMPL_OP
+#undef AUX778076_FOLD_IMPL_NAME_PREFIX
+
+///// iteration
+
+#else
+
+#   define n_ BOOST_PP_FRAME_ITERATION(1)
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct AUX778076_FOLD_IMPL_NAME<n_,First,Last,State,ForwardOp>
+{
+    typedef First iter0;
+    typedef State state0;
+
+    BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused)
+
+    typedef BOOST_PP_CAT(state,n_) state;
+    typedef BOOST_PP_CAT(iter,n_) iterator;
+};
+
+#else
+
+template<> struct AUX778076_FOLD_CHUNK_NAME<n_>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+
+        BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused)
+
+        typedef BOOST_PP_CAT(state,n_) state;
+        typedef BOOST_PP_CAT(iter,n_) iterator;
+    };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+    /// ETI workaround
+    template<> struct result_<int,int,int,int>
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+#endif
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#   undef n_
+
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/front_impl.hpp b/ndnboost/mpl/aux_/front_impl.hpp
new file mode 100644
index 0000000..a912eb3
--- /dev/null
+++ b/ndnboost/mpl/aux_/front_impl.hpp
@@ -0,0 +1,41 @@
+
+#ifndef BOOST_MPL_AUX_FRONT_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_FRONT_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: front_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/front_fwd.hpp>
+#include <ndnboost/mpl/begin_end.hpp>
+#include <ndnboost/mpl/deref.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// default implementation; conrete sequences might override it by 
+// specializing either the 'front_impl' or the primary 'front' template
+
+template< typename Tag >
+struct front_impl
+{
+    template< typename Sequence > struct apply
+    {
+        typedef typename begin<Sequence>::type iter_;
+        typedef typename deref<iter_>::type type;
+    };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1,front_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_FRONT_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/full_lambda.hpp b/ndnboost/mpl/aux_/full_lambda.hpp
new file mode 100644
index 0000000..5a1ba5f
--- /dev/null
+++ b/ndnboost/mpl/aux_/full_lambda.hpp
@@ -0,0 +1,354 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+#define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: full_lambda.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/lambda_fwd.hpp>
+#   include <ndnboost/mpl/bind_fwd.hpp>
+#   include <ndnboost/mpl/protect.hpp>
+#   include <ndnboost/mpl/quote.hpp>
+#   include <ndnboost/mpl/arg.hpp>
+#   include <ndnboost/mpl/bool.hpp>
+#   include <ndnboost/mpl/int_fwd.hpp>
+#   include <ndnboost/mpl/aux_/template_arity.hpp>
+#   include <ndnboost/mpl/aux_/na_spec.hpp>
+#   include <ndnboost/mpl/aux_/config/ttp.hpp>
+#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+#       include <ndnboost/mpl/if.hpp>
+#   endif
+#endif
+
+#include <ndnboost/mpl/aux_/lambda_arity_param.hpp>
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER full_lambda.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/limits/arity.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/default_params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/enum.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
+
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/comma_if.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// local macros, #undef-ined at the end of the header
+#   define AUX778076_LAMBDA_PARAMS(i_, param) \
+    BOOST_MPL_PP_PARAMS(i_, param) \
+    /**/
+
+#   define AUX778076_BIND_PARAMS(param) \
+    BOOST_MPL_PP_PARAMS( \
+          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+        , param \
+        ) \
+    /**/
+
+#   define AUX778076_BIND_N_PARAMS(i_, param) \
+    BOOST_PP_COMMA_IF(i_) \
+    BOOST_MPL_PP_PARAMS(i_, param) \
+    /**/
+
+#   define AUX778076_ARITY_PARAM(param) \
+    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) \
+    /**/
+
+
+#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+namespace aux {
+
+template<
+      BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
+    : false_
+{
+};
+
+} // namespace aux
+#undef n_
+
+template<
+      typename T
+    , typename Tag
+    AUX778076_ARITY_PARAM(typename Arity)
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag AUX778076_ARITY_PARAM(int_<-1>) >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type; 
+};
+
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/aux_/full_lambda.hpp>))
+#include BOOST_PP_ITERATE()
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag AUX778076_ARITY_PARAM(int_<1>) >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+template<
+      typename F, AUX778076_BIND_PARAMS(typename T)
+    , typename Tag
+    >
+struct lambda<
+          bind<F,AUX778076_BIND_PARAMS(T)>
+        , Tag
+        AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)>)
+        >
+{
+    typedef false_ is_le;
+    typedef bind<F, AUX778076_BIND_PARAMS(T)> result_;
+    typedef result_ type;
+};
+
+
+#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    , typename Arity
+    >
+struct lambda<
+          lambda<F,Tag1,Arity>
+        , Tag2
+        , int_<3>
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+
+    typedef typename l1::is_le is_le;
+    typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+    typedef lambda< typename if_<is_le,arity_,Arity>::type,Tag2 > l3;
+    
+    typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+#elif !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+#endif
+
+#   undef AUX778076_ARITY_PARAM
+#   undef AUX778076_BIND_N_PARAMS
+#   undef AUX778076_BIND_PARAMS
+#   undef AUX778076_LAMBDA_PARAMS
+
+#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+#else
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+#endif
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#if i_ > 0
+
+namespace aux {
+
+#   define AUX778076_RESULT(unused, i_, T) \
+    BOOST_PP_COMMA_IF(i_) \
+    typename BOOST_PP_CAT(T, BOOST_PP_INC(i_))::result_ \
+    /**/
+
+#   define AUX778076_TYPE(unused, i_, T) \
+    BOOST_PP_COMMA_IF(i_) \
+    typename BOOST_PP_CAT(T, BOOST_PP_INC(i_))::type \
+    /**/
+
+template<
+      typename IsLE, typename Tag
+    , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
+    , AUX778076_LAMBDA_PARAMS(i_, typename L)
+    >
+struct BOOST_PP_CAT(le_result,i_)
+{
+    typedef F<
+          BOOST_MPL_PP_REPEAT(i_, AUX778076_TYPE, L)
+        > result_;
+    
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
+    , AUX778076_LAMBDA_PARAMS(i_, typename L)
+    >
+struct BOOST_PP_CAT(le_result,i_)< true_,Tag,F,AUX778076_LAMBDA_PARAMS(i_, L) >
+{
+    typedef BOOST_PP_CAT(bind,i_)<
+          BOOST_PP_CAT(quote,i_)<F,Tag>
+        , BOOST_MPL_PP_REPEAT(i_, AUX778076_RESULT, L)
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+#   undef AUX778076_TYPE
+#   undef AUX778076_RESULT
+
+} // namespace aux
+
+
+#   define AUX778076_LAMBDA_TYPEDEF(unused, i_, T) \
+    typedef lambda< BOOST_PP_CAT(T, BOOST_PP_INC(i_)), Tag > \
+        BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
+/**/
+
+#   define AUX778076_IS_LE_TYPEDEF(unused, i_, unused2) \
+    typedef typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::is_le \
+        BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)); \
+/**/
+
+#   define AUX778076_IS_LAMBDA_EXPR(unused, i_, unused2) \
+    BOOST_PP_COMMA_IF(i_) \
+    BOOST_PP_CAT(is_le,BOOST_PP_INC(i_))::value \
+/**/
+
+template<
+      template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
+    , AUX778076_LAMBDA_PARAMS(i_, typename T)
+    , typename Tag
+    >
+struct lambda< 
+          F<AUX778076_LAMBDA_PARAMS(i_, T)>
+        , Tag
+        AUX778076_ARITY_PARAM(int_<i_>)
+        >
+{
+    BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, T)
+    BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
+
+    typedef typename aux::lambda_or<
+          BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
+        >::type is_le;
+
+    typedef aux::BOOST_PP_CAT(le_result,i_)<
+          is_le, Tag, F, AUX778076_LAMBDA_PARAMS(i_, l)
+        > le_result_;
+    
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+
+#   undef AUX778076_IS_LAMBDA_EXPR
+#   undef AUX778076_IS_LE_TYPEDEF
+#   undef AUX778076_LAMBDA_TYPEDEF
+
+#endif // i_ > 0
+
+template<
+      typename F AUX778076_BIND_N_PARAMS(i_, typename T)
+    , typename Tag
+    >
+struct lambda<
+          BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_, T)>
+        , Tag
+        AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(i_)>)
+        >
+{
+    typedef false_ is_le;
+    typedef BOOST_PP_CAT(bind,i_)<
+          F
+        AUX778076_BIND_N_PARAMS(i_, T)
+        > result_;
+        
+    typedef result_ type;
+};
+
+#undef i_
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/has_apply.hpp b/ndnboost/mpl/aux_/has_apply.hpp
new file mode 100644
index 0000000..d86ce53
--- /dev/null
+++ b/ndnboost/mpl/aux_/has_apply.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/has_xxx.hpp>
+#include <ndnboost/mpl/aux_/config/has_apply.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false)
+#else
+template< typename T, typename fallback_ = false_ >
+struct has_apply
+    : fallback_
+{
+};
+#endif
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/has_begin.hpp b/ndnboost/mpl/aux_/has_begin.hpp
new file mode 100644
index 0000000..fca5610
--- /dev/null
+++ b/ndnboost/mpl/aux_/has_begin.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_begin.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/has_xxx.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_begin, begin, true)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/has_rebind.hpp b/ndnboost/mpl/aux_/has_rebind.hpp
new file mode 100644
index 0000000..043e252
--- /dev/null
+++ b/ndnboost/mpl/aux_/has_rebind.hpp
@@ -0,0 +1,99 @@
+
+#ifndef BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_rebind.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/intel.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+#   include <ndnboost/mpl/has_xxx.hpp>
+#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#   include <ndnboost/mpl/has_xxx.hpp>
+#   include <ndnboost/mpl/if.hpp>
+#   include <ndnboost/mpl/bool.hpp>
+#   include <ndnboost/mpl/aux_/msvc_is_class.hpp>
+#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+#   include <ndnboost/mpl/if.hpp>
+#   include <ndnboost/mpl/bool.hpp>
+#   include <ndnboost/mpl/aux_/yes_no.hpp>
+#   include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#   include <ndnboost/type_traits/is_class.hpp>
+#else
+#   include <ndnboost/mpl/aux_/type_wrapper.hpp>
+#   include <ndnboost/mpl/aux_/yes_no.hpp>
+#   include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#endif
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind, rebind, false)
+
+#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind_impl, rebind, false)
+
+template< typename T >
+struct has_rebind
+    : if_< 
+          msvc_is_class<T>
+        , has_rebind_impl<T>
+        , bool_<false>
+        >::type
+{
+};
+
+#else // the rest
+
+template< typename T > struct has_rebind_tag {};
+no_tag operator|(has_rebind_tag<int>, void const volatile*);
+
+#   if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+template< typename T >
+struct has_rebind
+{
+    static has_rebind_tag<T>* get();
+    BOOST_STATIC_CONSTANT(bool, value = 
+          sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
+        );
+};
+#   else // __BORLANDC__
+template< typename T >
+struct has_rebind_impl
+{
+    static T* get();
+    BOOST_STATIC_CONSTANT(bool, value = 
+          sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
+        );
+};
+
+template< typename T >
+struct has_rebind
+    : if_< 
+          is_class<T>
+        , has_rebind_impl<T>
+        , bool_<false>
+        >::type
+{
+};
+#   endif // __BORLANDC__
+
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/has_size.hpp b/ndnboost/mpl/aux_/has_size.hpp
new file mode 100644
index 0000000..5bb77f6
--- /dev/null
+++ b/ndnboost/mpl/aux_/has_size.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_size.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/has_xxx.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_DEF(size)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/has_tag.hpp b/ndnboost/mpl/aux_/has_tag.hpp
new file mode 100644
index 0000000..620923f
--- /dev/null
+++ b/ndnboost/mpl/aux_/has_tag.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/has_xxx.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_tag, tag, false)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/has_type.hpp b/ndnboost/mpl/aux_/has_type.hpp
new file mode 100644
index 0000000..d99fef3
--- /dev/null
+++ b/ndnboost/mpl/aux_/has_type.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+#define BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: has_type.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/has_xxx.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_type, type, true)
+}}}
+
+#endif // BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/include_preprocessed.hpp b/ndnboost/mpl/aux_/include_preprocessed.hpp
new file mode 100644
index 0000000..860f294
--- /dev/null
+++ b/ndnboost/mpl/aux_/include_preprocessed.hpp
@@ -0,0 +1,42 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+// Copyright Aleksey Gurtovoy 2000-2006
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: include_preprocessed.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/compiler.hpp>
+#include <ndnboost/mpl/aux_/config/preprocessor.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+#include <ndnboost/preprocessor/cat.hpp>
+#include <ndnboost/preprocessor/stringize.hpp>
+
+#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+#   define AUX778076_PREPROCESSED_HEADER \
+    BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER \
+/**/
+#else
+#   define AUX778076_PREPROCESSED_HEADER \
+    BOOST_PP_CAT(BOOST_MPL_CFG_COMPILER_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
+/**/
+#endif
+
+#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
+#   define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
+#   include AUX778076_INCLUDE_STRING
+#   undef AUX778076_INCLUDE_STRING
+#else
+#   include BOOST_PP_STRINGIZE(boost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
+#endif
+
+#   undef AUX778076_PREPROCESSED_HEADER
+
+#undef BOOST_MPL_PREPROCESSED_HEADER
diff --git a/ndnboost/mpl/aux_/inserter_algorithm.hpp b/ndnboost/mpl/aux_/inserter_algorithm.hpp
new file mode 100644
index 0000000..cfbe84e
--- /dev/null
+++ b/ndnboost/mpl/aux_/inserter_algorithm.hpp
@@ -0,0 +1,159 @@
+
+#ifndef BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
+#define BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2003-2004
+// Copyright David Abrahams 2003-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: inserter_algorithm.hpp 55648 2009-08-18 05:16:53Z agurtovoy $
+// $Date: 2009-08-17 22:16:53 -0700 (Mon, 17 Aug 2009) $
+// $Revision: 55648 $
+
+#include <ndnboost/mpl/back_inserter.hpp>
+#include <ndnboost/mpl/front_inserter.hpp>
+#include <ndnboost/mpl/push_back.hpp>
+#include <ndnboost/mpl/push_front.hpp>
+#include <ndnboost/mpl/back_inserter.hpp>
+#include <ndnboost/mpl/front_inserter.hpp>
+#include <ndnboost/mpl/clear.hpp>
+#include <ndnboost/mpl/eval_if.hpp>
+#include <ndnboost/mpl/if.hpp>
+#include <ndnboost/mpl/aux_/na.hpp>
+#include <ndnboost/mpl/aux_/common_name_wknd.hpp>
+#include <ndnboost/mpl/aux_/na_spec.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/default_params.hpp>
+#include <ndnboost/mpl/aux_/config/ctps.hpp>
+
+#include <ndnboost/preprocessor/arithmetic/dec.hpp>
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#   define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \
+BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
+template< \
+      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+    > \
+struct name \
+    : aux::name##_impl<BOOST_MPL_PP_PARAMS(arity, P)> \
+{ \
+}; \
+\
+template< \
+      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+    > \
+struct name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \
+    : if_< has_push_back< typename clear<P1>::type> \
+        , aux::name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , back_inserter< typename clear<P1>::type > \
+            > \
+        , aux::reverse_##name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , front_inserter< typename clear<P1>::type > \
+            > \
+        >::type \
+{ \
+}; \
+\
+template< \
+      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+    > \
+struct reverse_##name \
+    : aux::reverse_##name##_impl<BOOST_MPL_PP_PARAMS(arity, P)> \
+{ \
+}; \
+\
+template< \
+      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+    > \
+struct reverse_##name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \
+    : if_< has_push_back<P1> \
+        , aux::reverse_##name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , back_inserter< typename clear<P1>::type > \
+            > \
+        , aux::name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , front_inserter< typename clear<P1>::type > \
+            > \
+        >::type \
+{ \
+}; \
+BOOST_MPL_AUX_NA_SPEC(arity, name) \
+BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \
+/**/
+
+#else
+
+#   define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \
+BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
+template< \
+      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+    > \
+struct def_##name##_impl \
+    : if_< has_push_back<P1> \
+        , aux::name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , back_inserter< typename clear<P1>::type > \
+            > \
+        , aux::reverse_##name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , front_inserter< typename clear<P1>::type > \
+            > \
+        >::type \
+{ \
+}; \
+\
+template< \
+      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+    > \
+struct name \
+{ \
+    typedef typename eval_if< \
+          is_na<BOOST_PP_CAT(P, arity)> \
+        , def_##name##_impl<BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P)> \
+        , aux::name##_impl<BOOST_MPL_PP_PARAMS(arity, P)> \
+        >::type type; \
+}; \
+\
+template< \
+      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+    > \
+struct def_reverse_##name##_impl \
+    : if_< has_push_back<P1> \
+        , aux::reverse_##name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , back_inserter< typename clear<P1>::type > \
+            > \
+        , aux::name##_impl< \
+              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+            , front_inserter< typename clear<P1>::type > \
+            > \
+        >::type \
+{ \
+}; \
+template< \
+      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+    > \
+struct reverse_##name \
+{ \
+    typedef typename eval_if< \
+          is_na<BOOST_PP_CAT(P, arity)> \
+        , def_reverse_##name##_impl<BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P)> \
+        , aux::reverse_##name##_impl<BOOST_MPL_PP_PARAMS(arity, P)> \
+        >::type type; \
+}; \
+BOOST_MPL_AUX_NA_SPEC(arity, name) \
+BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \
+/**/
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp b/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp
new file mode 100644
index 0000000..9ec0bcc
--- /dev/null
+++ b/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp
@@ -0,0 +1,64 @@
+
+#ifndef BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+#define BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: is_msvc_eti_arg.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/yes_no.hpp>
+#include <ndnboost/mpl/aux_/config/eti.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+
+template< typename T >
+struct is_msvc_eti_arg
+{ 
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+#else // BOOST_MPL_CFG_MSVC_60_ETI_BUG
+
+struct eti_int_convertible
+{
+    eti_int_convertible(int);
+};
+
+template< typename T >
+struct is_msvc_eti_arg
+{ 
+    static no_tag test(...);
+    static yes_tag test(eti_int_convertible);
+    static T& get();
+
+    BOOST_STATIC_CONSTANT(bool, value = 
+          sizeof(test(get())) == sizeof(yes_tag)
+        );
+};
+
+#endif
+
+template<>
+struct is_msvc_eti_arg<int>
+{ 
+    BOOST_STATIC_CONSTANT(bool, value = true);
+};
+
+#endif // BOOST_MPL_CFG_MSVC_ETI_BUG
+
+}}}
+
+#endif // BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/iter_apply.hpp b/ndnboost/mpl/aux_/iter_apply.hpp
new file mode 100644
index 0000000..c5a62a5
--- /dev/null
+++ b/ndnboost/mpl/aux_/iter_apply.hpp
@@ -0,0 +1,47 @@
+
+#ifndef BOOST_MPL_ITER_APPLY_HPP_INCLUDED
+#define BOOST_MPL_ITER_APPLY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: iter_apply.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/apply.hpp>
+#include <ndnboost/mpl/deref.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template<
+      typename F
+    , typename Iterator
+    >
+struct iter_apply1
+    : apply1< F,typename deref<Iterator>::type >
+{
+};
+
+template<
+      typename F
+    , typename Iterator1
+    , typename Iterator2
+    >
+struct iter_apply2
+    : apply2<
+          F
+        , typename deref<Iterator1>::type
+        , typename deref<Iterator2>::type
+        >
+{
+};
+
+}}}
+
+#endif // BOOST_MPL_ITER_APPLY_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..ee90eb2
--- /dev/null
+++ b/ndnboost/mpl/aux_/iter_fold_if_impl.hpp
@@ -0,0 +1,210 @@
+
+#ifndef BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: iter_fold_if_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/identity.hpp>
+#   include <ndnboost/mpl/next.hpp>
+#   include <ndnboost/mpl/if.hpp>
+#   include <ndnboost/mpl/apply.hpp>
+#   include <ndnboost/mpl/aux_/value_wknd.hpp>
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER iter_fold_if_impl.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/limits/unrolling.hpp>
+#   include <ndnboost/preprocessor/arithmetic/sub.hpp>
+#   include <ndnboost/preprocessor/repeat.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/dec.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2<StateOp,State,Iterator>::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+// agurt, 25/jun/02: MSVC 6.5 workaround, had to get rid of inheritance 
+// here and in 'iter_fold_if_backward_step', because sometimes it interfered 
+// with the "early template instantiation bug" in _really_ ugly ways
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2<Predicate,State,Iterator>::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp,mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2<Predicate,State,Iterator>::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp,identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+
+// local macros, #undef-ined at the end of the header
+
+#   define AUX_ITER_FOLD_FORWARD_STEP(unused, i, unused2) \
+    typedef iter_fold_if_forward_step< \
+          typename BOOST_PP_CAT(forward_step,i)::iterator \
+        , typename BOOST_PP_CAT(forward_step,i)::state \
+        , ForwardOp \
+        , ForwardPredicate \
+        > BOOST_PP_CAT(forward_step, BOOST_PP_INC(i)); \
+    /**/
+
+#   define AUX_ITER_FOLD_BACKWARD_STEP_FUNC(i) \
+    typedef iter_fold_if_backward_step< \
+          typename BOOST_PP_CAT(forward_step,BOOST_PP_DEC(i))::iterator \
+        , typename BOOST_PP_CAT(backward_step,i)::state \
+        , BackwardOp \
+        , BackwardPredicate \
+        > BOOST_PP_CAT(backward_step,BOOST_PP_DEC(i)); \
+    /**/
+
+#   define AUX_ITER_FOLD_BACKWARD_STEP(unused, i, unused2) \
+    AUX_ITER_FOLD_BACKWARD_STEP_FUNC( \
+        BOOST_PP_SUB_D(1,BOOST_MPL_LIMIT_UNROLLING,i) \
+        ) \
+    /**/
+
+#   define AUX_LAST_FORWARD_STEP \
+    BOOST_PP_CAT(forward_step, BOOST_MPL_LIMIT_UNROLLING) \
+    /**/
+
+#   define AUX_LAST_BACKWARD_STEP \
+    BOOST_PP_CAT(backward_step, BOOST_MPL_LIMIT_UNROLLING) \
+    /**/
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step<Iterator,State> forward_step0;
+    BOOST_PP_REPEAT(
+          BOOST_MPL_LIMIT_UNROLLING
+        , AUX_ITER_FOLD_FORWARD_STEP
+        , unused
+        )
+    
+    typedef typename if_<
+          typename AUX_LAST_FORWARD_STEP::not_last
+        , iter_fold_if_impl<
+              typename AUX_LAST_FORWARD_STEP::iterator
+            , typename AUX_LAST_FORWARD_STEP::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename AUX_LAST_FORWARD_STEP::iterator
+            , typename AUX_LAST_FORWARD_STEP::state
+            >
+        >::type AUX_LAST_BACKWARD_STEP;
+
+    BOOST_PP_REPEAT(
+          BOOST_MPL_LIMIT_UNROLLING
+        , AUX_ITER_FOLD_BACKWARD_STEP
+        , unused
+        )
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename AUX_LAST_BACKWARD_STEP::iterator iterator;
+};
+
+#   undef AUX_LAST_BACKWARD_STEP
+#   undef AUX_LAST_FORWARD_STEP
+#   undef AUX_ITER_FOLD_BACKWARD_STEP
+#   undef AUX_ITER_FOLD_BACKWARD_STEP_FUNC
+#   undef AUX_ITER_FOLD_FORWARD_STEP
+
+}}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/iter_fold_impl.hpp b/ndnboost/mpl/aux_/iter_fold_impl.hpp
new file mode 100644
index 0000000..c67b1e7
--- /dev/null
+++ b/ndnboost/mpl/aux_/iter_fold_impl.hpp
@@ -0,0 +1,42 @@
+
+#ifndef BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: iter_fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/next_prior.hpp>
+#   include <ndnboost/mpl/apply.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#       include <ndnboost/mpl/if.hpp>
+#       include <ndnboost/type_traits/is_same.hpp>
+#   endif
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER iter_fold_impl.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   define AUX778076_FOLD_IMPL_OP(iter) iter
+#   define AUX778076_FOLD_IMPL_NAME_PREFIX iter_fold
+#   include <ndnboost/mpl/aux_/fold_impl_body.hpp>
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/joint_iter.hpp b/ndnboost/mpl/aux_/joint_iter.hpp
new file mode 100644
index 0000000..8adcdf6
--- /dev/null
+++ b/ndnboost/mpl/aux_/joint_iter.hpp
@@ -0,0 +1,120 @@
+
+#ifndef BOOST_MPL_AUX_JOINT_ITER_HPP_INCLUDED
+#define BOOST_MPL_AUX_JOINT_ITER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: joint_iter.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/next_prior.hpp>
+#include <ndnboost/mpl/deref.hpp>
+#include <ndnboost/mpl/iterator_tags.hpp>
+#include <ndnboost/mpl/aux_/lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/ctps.hpp>
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   include <ndnboost/type_traits/is_same.hpp>
+#endif
+
+namespace ndnboost { namespace mpl {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template<
+      typename Iterator1
+    , typename LastIterator1
+    , typename Iterator2
+    >
+struct joint_iter
+{
+    typedef Iterator1 base;
+    typedef forward_iterator_tag category;
+};
+
+template<
+      typename LastIterator1
+    , typename Iterator2
+    >
+struct joint_iter<LastIterator1,LastIterator1,Iterator2>
+{
+    typedef Iterator2 base;
+    typedef forward_iterator_tag category;
+};
+
+
+template< typename I1, typename L1, typename I2 >
+struct deref< joint_iter<I1,L1,I2> >
+{
+    typedef typename joint_iter<I1,L1,I2>::base base_;
+    typedef typename deref<base_>::type type;
+};
+
+template< typename I1, typename L1, typename I2 >
+struct next< joint_iter<I1,L1,I2> >
+{
+    typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > type;
+};
+
+template< typename L1, typename I2 >
+struct next< joint_iter<L1,L1,I2> >
+{
+    typedef joint_iter< L1,L1,typename mpl::next<I2>::type > type;
+};
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template<
+      typename Iterator1
+    , typename LastIterator1
+    , typename Iterator2
+    >
+struct joint_iter;
+
+template< bool > struct joint_iter_impl
+{
+    template< typename I1, typename L1, typename I2 > struct result_
+    {
+        typedef I1 base;
+        typedef forward_iterator_tag category;
+        typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > next;
+        typedef typename deref<I1>::type type;
+    };
+};
+
+template<> struct joint_iter_impl<true>
+{
+    template< typename I1, typename L1, typename I2 > struct result_
+    {
+        typedef I2 base;
+        typedef forward_iterator_tag category;
+        typedef joint_iter< L1,L1,typename mpl::next<I2>::type > next;
+        typedef typename deref<I2>::type type;
+    };
+};
+
+template<
+      typename Iterator1
+    , typename LastIterator1
+    , typename Iterator2
+    >
+struct joint_iter
+    : joint_iter_impl< is_same<Iterator1,LastIterator1>::value >
+        ::template result_<Iterator1,LastIterator1,Iterator2>
+{
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, joint_iter)
+
+}}
+
+#endif // BOOST_MPL_AUX_JOINT_ITER_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/lambda_no_ctps.hpp
new file mode 100644
index 0000000..0966052
--- /dev/null
+++ b/ndnboost/mpl/aux_/lambda_no_ctps.hpp
@@ -0,0 +1,193 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: lambda_no_ctps.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/lambda_fwd.hpp>
+#   include <ndnboost/mpl/bind_fwd.hpp>
+#   include <ndnboost/mpl/protect.hpp>
+#   include <ndnboost/mpl/is_placeholder.hpp>
+#   include <ndnboost/mpl/if.hpp>
+#   include <ndnboost/mpl/identity.hpp>
+#   include <ndnboost/mpl/bool.hpp>
+#   include <ndnboost/mpl/aux_/na_spec.hpp>
+#   include <ndnboost/mpl/aux_/lambda_support.hpp>
+#   include <ndnboost/mpl/aux_/template_arity.hpp>
+#   include <ndnboost/mpl/aux_/value_wknd.hpp>
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if    !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER lambda_no_ctps.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   include <ndnboost/mpl/limits/arity.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/default_params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/enum.hpp>
+#   include <ndnboost/mpl/aux_/config/msvc.hpp>
+#   include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#   include <ndnboost/preprocessor/comma_if.hpp>
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+namespace ndnboost { namespace mpl {
+
+#   define AUX778076_LAMBDA_PARAMS(i_, param) \
+    BOOST_MPL_PP_PARAMS(i_, param) \
+    /**/
+
+namespace aux {
+
+#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+template<
+      BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
+    : false_
+{
+};
+#undef n_
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/aux_/lambda_no_ctps.hpp>))
+#include BOOST_PP_ITERATE()
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+#   undef AUX778076_LAMBDA_PARAMS
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+
+///// iteration, depth == 1
+
+#else
+
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#   define AUX778076_LAMBDA_TYPEDEF(unused, i_, F) \
+    typedef lambda< \
+          typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i_)) \
+        , Tag \
+        , false_ \
+        > BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
+    /**/
+
+#   define AUX778076_IS_LE_TYPEDEF(unused, i_, unused2) \
+    typedef typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::is_le \
+        BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)); \
+    /**/
+
+#   define AUX778076_IS_LAMBDA_EXPR(unused, i_, unused2) \
+    BOOST_PP_COMMA_IF(i_) \
+    BOOST_MPL_AUX_MSVC_VALUE_WKND(BOOST_PP_CAT(is_le,BOOST_PP_INC(i_)))::value \
+    /**/
+
+#   define AUX778076_LAMBDA_RESULT(unused, i_, unused2) \
+    , typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::type \
+    /**/
+
+template<> struct lambda_impl< int_<i_> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, F)
+        BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
+
+        typedef aux::lambda_or<
+              BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
+            > is_le;
+
+        typedef BOOST_PP_CAT(bind,i_)<
+              typename F::rebind
+            BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_RESULT, unused)
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+    
+        typedef typename type_::type type;
+    };
+};
+
+#   undef AUX778076_LAMBDA_RESULT
+#   undef AUX778076_IS_LAMBDA_EXPR
+#   undef AUX778076_IS_LE_TYPEDEF
+#   undef AUX778076_LAMBDA_TYPEDEF
+
+#undef i_
+
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/lambda_spec.hpp b/ndnboost/mpl/aux_/lambda_spec.hpp
new file mode 100644
index 0000000..f3e6137
--- /dev/null
+++ b/ndnboost/mpl/aux_/lambda_spec.hpp
@@ -0,0 +1,49 @@
+
+#ifndef BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2007
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: lambda_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/void.hpp>
+#include <ndnboost/mpl/lambda_fwd.hpp>
+#include <ndnboost/mpl/int_fwd.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#include <ndnboost/mpl/aux_/lambda_arity_param.hpp>
+#include <ndnboost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+
+#   define BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) \
+template< \
+      BOOST_MPL_PP_PARAMS(i, typename T) \
+    , typename Tag \
+    > \
+struct lambda< \
+      name< BOOST_MPL_PP_PARAMS(i, T) > \
+    , Tag \
+    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<i>) \
+    > \
+{ \
+    typedef false_ is_le; \
+    typedef name< BOOST_MPL_PP_PARAMS(i, T) > result_; \
+    typedef result_ type; \
+}; \
+/**/
+
+#else
+
+#   define BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/largest_int.hpp b/ndnboost/mpl/aux_/largest_int.hpp
new file mode 100644
index 0000000..f88ad94
--- /dev/null
+++ b/ndnboost/mpl/aux_/largest_int.hpp
@@ -0,0 +1,63 @@
+
+#ifndef BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
+#define BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: largest_int.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/if.hpp>
+#include <ndnboost/mpl/int.hpp>
+#include <ndnboost/mpl/aux_/config/integral.hpp>
+#include <ndnboost/config.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename T > struct integral_rank;
+
+template<> struct integral_rank<bool>           : int_<1> {};
+template<> struct integral_rank<signed char>    : int_<2> {};
+template<> struct integral_rank<char>           : int_<3> {};
+template<> struct integral_rank<unsigned char>  : int_<4> {};
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+template<> struct integral_rank<wchar_t>        : int_<5> {};
+#endif
+template<> struct integral_rank<short>          : int_<6> {};
+template<> struct integral_rank<unsigned short> : int_<7> {};
+template<> struct integral_rank<int>            : int_<8> {};
+template<> struct integral_rank<unsigned int>   : int_<9> {};
+template<> struct integral_rank<long>           : int_<10> {};
+template<> struct integral_rank<unsigned long>  : int_<11> {};
+
+#if defined(BOOST_HAS_LONG_LONG)
+template<> struct integral_rank<long_long_type> : int_<12> {};
+template<> struct integral_rank<ulong_long_type>: int_<13> {};
+#endif
+
+template< typename T1, typename T2 > struct largest_int
+#if !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+    : if_c< 
+          ( integral_rank<T1>::value >= integral_rank<T2>::value )
+        , T1
+        , T2
+        >
+{
+#else
+{
+    enum { rank1 = integral_rank<T1>::value };
+    enum { rank2 = integral_rank<T2>::value };
+    typedef typename if_c< (rank1 >= rank2),T1,T2 >::type type;
+#endif
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/logical_op.hpp b/ndnboost/mpl/aux_/logical_op.hpp
new file mode 100644
index 0000000..e378e1f
--- /dev/null
+++ b/ndnboost/mpl/aux_/logical_op.hpp
@@ -0,0 +1,165 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: logical_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/bool.hpp>
+#   include <ndnboost/mpl/aux_/nested_type_wknd.hpp>
+#   include <ndnboost/mpl/aux_/na_spec.hpp>
+#   include <ndnboost/mpl/aux_/lambda_support.hpp>
+#endif
+
+#include <ndnboost/mpl/limits/arity.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/ext_params.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/def_params_tail.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/enum.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/sub.hpp>
+#include <ndnboost/mpl/aux_/config/ctps.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#include <ndnboost/preprocessor/dec.hpp>
+#include <ndnboost/preprocessor/inc.hpp>
+#include <ndnboost/preprocessor/cat.hpp>
+
+namespace ndnboost { namespace mpl {
+
+#   define AUX778076_PARAMS(param, sub) \
+    BOOST_MPL_PP_PARAMS( \
+          BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, sub) \
+        , param \
+        ) \
+    /**/
+
+#   define AUX778076_SHIFTED_PARAMS(param, sub) \
+    BOOST_MPL_PP_EXT_PARAMS( \
+          2, BOOST_MPL_PP_SUB(BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY), sub) \
+        , param \
+        ) \
+    /**/
+
+#   define AUX778076_SPEC_PARAMS(param) \
+    BOOST_MPL_PP_ENUM( \
+          BOOST_PP_DEC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
+        , param \
+        ) \
+    /**/
+
+namespace aux {
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+template< bool C_, AUX778076_PARAMS(typename T, 1) >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
+    : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
+{
+};
+
+template< AUX778076_PARAMS(typename T, 1) >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)< AUX778076_OP_VALUE2,AUX778076_PARAMS(T, 1) >
+    : BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , AUX778076_SHIFTED_PARAMS(T, 1)
+        , BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+        >
+{
+};
+
+template<>
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+          AUX778076_OP_VALUE2
+        , AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
+        >
+    : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+{
+};
+
+#else
+
+template< bool C_ > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
+{
+    template< AUX778076_PARAMS(typename T, 1) > struct result_
+        : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
+    {
+    };
+};
+
+template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
+{
+    template< AUX778076_PARAMS(typename T, 1) > struct result_
+        : BOOST_PP_CAT(AUX778076_OP_NAME,impl)< 
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< AUX778076_SHIFTED_PARAMS(T,1),BOOST_PP_CAT(AUX778076_OP_VALUE2,_) >
+    {
+    };
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+    template<> struct result_<AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))>
+        : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+    {
+    };
+};
+#else
+};
+
+template<>
+struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
+    ::result_< AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_)) >
+        : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+{
+};
+#endif // BOOST_MSVC == 1300
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename T, BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
+    >
+struct AUX778076_OP_NAME
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+    : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , AUX778076_SHIFTED_PARAMS(T,0)
+        >
+#else
+    : aux::BOOST_PP_CAT(AUX778076_OP_NAME,impl)< 
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< AUX778076_SHIFTED_PARAMS(T,0) >
+#endif
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+        , AUX778076_OP_NAME
+        , (AUX778076_PARAMS(T, 0))
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+    , AUX778076_OP_NAME
+    )
+
+}}
+
+#undef AUX778076_SPEC_PARAMS
+#undef AUX778076_SHIFTED_PARAMS
+#undef AUX778076_PARAMS
+#undef AUX778076_OP_NAME
+#undef AUX778076_OP_VALUE1
+#undef AUX778076_OP_VALUE2
diff --git a/ndnboost/mpl/aux_/msvc_dtw.hpp b/ndnboost/mpl/aux_/msvc_dtw.hpp
new file mode 100644
index 0000000..90ef28d
--- /dev/null
+++ b/ndnboost/mpl/aux_/msvc_dtw.hpp
@@ -0,0 +1,68 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_dtw.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+
+// local macros, #undef-ined at the end of the header
+#define AUX778076_DTW_PARAMS(param) \
+    BOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \
+/**/
+
+#define AUX778076_DTW_ORIGINAL_NAME \
+    AUX778076_MSVC_DTW_ORIGINAL_NAME \
+/**/
+
+// warning: not a well-formed C++
+// workaround for MSVC 6.5's "dependent template typedef bug"
+
+template< typename F>
+struct AUX778076_MSVC_DTW_NAME
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+#if AUX778076_MSVC_DTW_ARITY > 0
+        template< AUX778076_DTW_PARAMS(typename P) > struct AUX778076_DTW_ORIGINAL_NAME
+        {
+            typedef int type;
+        };
+    };
+
+    template< AUX778076_DTW_PARAMS(typename T) > struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template AUX778076_DTW_ORIGINAL_NAME< AUX778076_DTW_PARAMS(T) >
+    {
+    };
+#else
+        template< typename P = int > struct AUX778076_DTW_ORIGINAL_NAME
+        {
+            typedef int type;
+        };
+    };
+
+    template< typename T = int > struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template AUX778076_DTW_ORIGINAL_NAME<>
+    {
+    };
+#endif
+};
+
+#undef AUX778076_DTW_ORIGINAL_NAME
+#undef AUX778076_DTW_PARAMS
+
+#undef AUX778076_MSVC_DTW_NAME
+#undef AUX778076_MSVC_DTW_ORIGINAL_NAME
+#undef AUX778076_MSVC_DTW_ARITY
diff --git a/ndnboost/mpl/aux_/msvc_eti_base.hpp b/ndnboost/mpl/aux_/msvc_eti_base.hpp
new file mode 100644
index 0000000..e7a1c4a
--- /dev/null
+++ b/ndnboost/mpl/aux_/msvc_eti_base.hpp
@@ -0,0 +1,77 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_eti_base.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/is_msvc_eti_arg.hpp>
+#include <ndnboost/mpl/aux_/config/eti.hpp>
+#include <ndnboost/mpl/aux_/config/gcc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+
+template< bool > struct msvc_eti_base_impl
+{
+    template< typename T > struct result_
+        : T
+    {
+        typedef T type;
+    };
+};
+
+template<> struct msvc_eti_base_impl<true>
+{
+    template< typename T > struct result_
+    {
+        typedef result_ type;
+        typedef result_ first;
+        typedef result_ second;
+        typedef result_ tag;
+        enum { value = 0 };
+    };
+};
+
+template< typename T > struct msvc_eti_base
+    : msvc_eti_base_impl< is_msvc_eti_arg<T>::value >
+        ::template result_<T>
+{
+};
+
+#else // !BOOST_MPL_CFG_MSVC_70_ETI_BUG
+
+template< typename T > struct msvc_eti_base
+    : T
+{
+#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
+    msvc_eti_base();
+#endif
+    typedef T type;
+};
+
+#endif 
+
+template<> struct msvc_eti_base<int>
+{
+    typedef msvc_eti_base type;
+    typedef msvc_eti_base first;
+    typedef msvc_eti_base second;
+    typedef msvc_eti_base tag;
+    enum { value = 0 };
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/msvc_is_class.hpp b/ndnboost/mpl/aux_/msvc_is_class.hpp
new file mode 100644
index 0000000..edcb8b9
--- /dev/null
+++ b/ndnboost/mpl/aux_/msvc_is_class.hpp
@@ -0,0 +1,58 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_is_class.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/if.hpp>
+#include <ndnboost/mpl/bool.hpp>
+#include <ndnboost/mpl/aux_/type_wrapper.hpp>
+#include <ndnboost/mpl/aux_/yes_no.hpp>
+
+#include <ndnboost/type_traits/is_reference.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename T > struct is_class_helper
+{
+    typedef int (T::* type)();
+};
+
+// MSVC 6.x-specific lightweight 'is_class' implementation; 
+// Distinguishing feature: does not instantiate the type being tested.
+template< typename T >
+struct msvc_is_class_impl
+{
+    template< typename U>
+    static yes_tag  test(type_wrapper<U>*, /*typename*/ is_class_helper<U>::type = 0);
+    static no_tag   test(void const volatile*, ...);
+
+    enum { value = sizeof(test((type_wrapper<T>*)0)) == sizeof(yes_tag) };
+    typedef bool_<value> type;
+};
+
+// agurt, 17/sep/04: have to check for 'is_reference' upfront to avoid ICEs in
+// complex metaprograms
+template< typename T >
+struct msvc_is_class
+    : if_<
+          is_reference<T>
+        , false_
+        , msvc_is_class_impl<T>
+        >::type
+{
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/msvc_never_true.hpp b/ndnboost/mpl/aux_/msvc_never_true.hpp
new file mode 100644
index 0000000..fed531e
--- /dev/null
+++ b/ndnboost/mpl/aux_/msvc_never_true.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_never_true.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename T >
+struct msvc_never_true
+{
+    enum { value = false };
+};
+
+}}}
+
+#endif // BOOST_MSVC
+
+#endif // BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/msvc_type.hpp b/ndnboost/mpl/aux_/msvc_type.hpp
new file mode 100644
index 0000000..c652ed2
--- /dev/null
+++ b/ndnboost/mpl/aux_/msvc_type.hpp
@@ -0,0 +1,62 @@
+
+#ifndef BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+#define BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: msvc_type.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/eti.hpp>
+#include <ndnboost/mpl/aux_/is_msvc_eti_arg.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+
+template< bool > struct msvc_type_impl
+{
+    template< typename T > struct result_
+    {
+        typedef typename T::type type;
+    };
+};
+
+template<> struct msvc_type_impl<true>
+{
+    template< typename T > struct result_
+    {
+        typedef result_ type;
+    };
+};
+
+template< typename T > struct msvc_type
+    : msvc_type_impl< is_msvc_eti_arg<T>::value >
+        ::template result_<T>
+{
+};
+
+#else // BOOST_MPL_CFG_MSVC_70_ETI_BUG
+
+template< typename T > struct msvc_type 
+{
+    typedef typename T::type type;
+};
+
+template<> struct msvc_type<int>
+{
+    typedef int type;
+};
+
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/na_assert.hpp b/ndnboost/mpl/aux_/na_assert.hpp
new file mode 100644
index 0000000..e0c947c
--- /dev/null
+++ b/ndnboost/mpl/aux_/na_assert.hpp
@@ -0,0 +1,34 @@
+
+#ifndef BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+#define BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: na_assert.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/na.hpp>
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if !BOOST_WORKAROUND(_MSC_FULL_VER, <= 140050601)    \
+    && !BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
+#   include <ndnboost/mpl/assert.hpp>
+#   define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
+    BOOST_MPL_ASSERT_NOT((ndnboost::mpl::is_na<type>)) \
+/**/
+#else
+#   include <ndnboost/static_assert.hpp>
+#   define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
+    BOOST_STATIC_ASSERT(!ndnboost::mpl::is_na<x>::value) \
+/**/
+#endif
+
+#endif // BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/nested_type_wknd.hpp b/ndnboost/mpl/aux_/nested_type_wknd.hpp
new file mode 100644
index 0000000..e00c76d
--- /dev/null
+++ b/ndnboost/mpl/aux_/nested_type_wknd.hpp
@@ -0,0 +1,48 @@
+
+#ifndef BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
+#define BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: nested_type_wknd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/gcc.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
+    || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
+    || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x530)) \
+    || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+
+namespace ndnboost { namespace mpl { namespace aux {
+template< typename T > struct nested_type_wknd
+    : T::type
+{
+};
+}}}
+
+#if BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
+#   define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
+    aux::nested_type_wknd<T> \
+/**/
+#else
+#   define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
+    ::ndnboost::mpl::aux::nested_type_wknd<T> \
+/**/
+#endif
+
+#else // !BOOST_MPL_CFG_GCC et al.
+
+#   define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) T::type
+
+#endif 
+
+#endif // BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/numeric_cast_utils.hpp b/ndnboost/mpl/aux_/numeric_cast_utils.hpp
new file mode 100644
index 0000000..8f0ce0c
--- /dev/null
+++ b/ndnboost/mpl/aux_/numeric_cast_utils.hpp
@@ -0,0 +1,77 @@
+
+#ifndef BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
+#define BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2003-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: numeric_cast_utils.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/numeric_cast.hpp>
+#include <ndnboost/mpl/apply_wrap.hpp>
+#include <ndnboost/mpl/aux_/config/forwarding.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    >
+struct cast1st_impl
+{
+    template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+        : apply_wrap2< 
+              F
+            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
+            , N2
+            >
+    {
+#else
+    {
+    typedef typename apply_wrap2< 
+              F
+            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
+            , N2
+            >::type type;
+#endif
+    };
+};
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    >
+struct cast2nd_impl
+{
+    template< typename N1, typename N2 > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+        : apply_wrap2< 
+              F
+            , N1
+            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
+            >
+    {
+#else
+    {
+        typedef typename apply_wrap2< 
+              F
+            , N1
+            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
+            >::type type;
+#endif
+    };
+};
+
+}}}
+
+#endif // BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/numeric_op.hpp b/ndnboost/mpl/aux_/numeric_op.hpp
new file mode 100644
index 0000000..1acf439
--- /dev/null
+++ b/ndnboost/mpl/aux_/numeric_op.hpp
@@ -0,0 +1,315 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: numeric_op.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/numeric_cast.hpp>
+#   include <ndnboost/mpl/apply_wrap.hpp>
+#   include <ndnboost/mpl/if.hpp>
+#   include <ndnboost/mpl/tag.hpp>
+#   include <ndnboost/mpl/aux_/numeric_cast_utils.hpp>
+#   include <ndnboost/mpl/aux_/na.hpp>
+#   include <ndnboost/mpl/aux_/na_spec.hpp>
+#   include <ndnboost/mpl/aux_/lambda_support.hpp>
+#   include <ndnboost/mpl/aux_/msvc_eti_base.hpp>
+#   include <ndnboost/mpl/aux_/value_wknd.hpp>
+#   include <ndnboost/mpl/aux_/config/eti.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+#endif
+
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+
+#if defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    || defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   include <ndnboost/mpl/limits/arity.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/def_params_tail.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/ext_params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/enum.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/add.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/sub.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   include <ndnboost/mpl/aux_/config/eti.hpp>
+#   include <ndnboost/mpl/aux_/config/msvc.hpp>
+#   include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+#   include <ndnboost/preprocessor/dec.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+
+#if !defined(AUX778076_OP_ARITY)
+#   define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#endif
+
+#if !defined(AUX778076_OP_IMPL_NAME)
+#   define AUX778076_OP_IMPL_NAME BOOST_PP_CAT(AUX778076_OP_PREFIX,_impl)
+#endif
+
+#if !defined(AUX778076_OP_TAG_NAME)
+#   define AUX778076_OP_TAG_NAME BOOST_PP_CAT(AUX778076_OP_PREFIX,_tag)
+#endif
+
+namespace ndnboost { namespace mpl {
+
+template< 
+      typename Tag1
+    , typename Tag2
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value 
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_) = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value 
+    >
+struct AUX778076_OP_IMPL_NAME
+    : if_c<
+          ( tag1_ > tag2_ )
+#else
+    >
+struct AUX778076_OP_IMPL_NAME
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+#endif
+        , aux::cast2nd_impl< AUX778076_OP_IMPL_NAME<Tag1,Tag1>,Tag1,Tag2 >
+        , aux::cast1st_impl< AUX778076_OP_IMPL_NAME<Tag2,Tag2>,Tag1,Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct AUX778076_OP_IMPL_NAME<na,na>
+{
+    template< typename U1, typename U2 > struct apply 
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value = 0);
+    };
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+template< typename Tag > struct AUX778076_OP_IMPL_NAME<na,Tag>
+{
+    template< typename U1, typename U2 > struct apply 
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value = 0);
+    };
+};
+
+template< typename Tag > struct AUX778076_OP_IMPL_NAME<Tag,na>
+{
+    template< typename U1, typename U2 > struct apply 
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value = 0);
+    };
+};
+#else
+template<> struct AUX778076_OP_IMPL_NAME<na,integral_c_tag>
+{
+    template< typename U1, typename U2 > struct apply 
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value = 0);
+    };
+};
+
+template<> struct AUX778076_OP_IMPL_NAME<integral_c_tag,na>
+{
+    template< typename U1, typename U2 > struct apply 
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value = 0);
+    };
+};
+#endif
+
+
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
+template< typename T > struct AUX778076_OP_TAG_NAME
+    : tag<T,na>
+{
+};
+#else
+template< typename T > struct AUX778076_OP_TAG_NAME
+{
+    typedef typename T::tag type;
+};
+#endif
+
+
+#if AUX778076_OP_ARITY != 2
+
+#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#   define AUX778076_OP_RIGHT_OPERAND(unused, i, N) , BOOST_PP_CAT(N, BOOST_MPL_PP_ADD(i, 2))>
+#   define AUX778076_OP_N_CALLS(i, N) \
+    BOOST_MPL_PP_REPEAT( BOOST_PP_DEC(i), BOOST_MPL_PP_REPEAT_IDENTITY_FUNC, AUX778076_OP_NAME< ) \
+    N1 BOOST_MPL_PP_REPEAT( BOOST_MPL_PP_SUB(i, 1), AUX778076_OP_RIGHT_OPERAND, N ) \
+/**/
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename N, na)
+    >
+struct AUX778076_OP_NAME
+    : AUX778076_OP_N_CALLS(AUX778076_OP_ARITY, N)
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          AUX778076_OP_ARITY
+        , AUX778076_OP_NAME
+        , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+        )
+};
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,( BOOST_PP_DEC(AUX778076_OP_ARITY), 2, <ndnboost/mpl/aux_/numeric_op.hpp> ))
+#include BOOST_PP_ITERATE()
+
+#   undef AUX778076_OP_N_CALLS
+#   undef AUX778076_OP_RIGHT_OPERAND
+
+#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+/// forward declaration
+template< 
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,2);
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    BOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename N, na)
+    >
+struct AUX778076_OP_NAME
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+    : aux::msvc_eti_base< typename if_<
+#else
+    : if_<
+#endif
+          is_na<N3>
+        , BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
+        , AUX778076_OP_NAME<
+              BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
+            , BOOST_MPL_PP_EXT_PARAMS(3, BOOST_PP_INC(AUX778076_OP_ARITY), N)
+            >
+        >::type
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+    >
+#endif
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          AUX778076_OP_ARITY
+        , AUX778076_OP_NAME
+        , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+        )
+};
+
+template< 
+      typename N1
+    , typename N2
+    >
+struct BOOST_PP_CAT(AUX778076_OP_NAME,2)
+
+#endif
+
+#else // AUX778076_OP_ARITY == 2
+
+template< 
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct AUX778076_OP_NAME
+
+#endif
+
+#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+    : AUX778076_OP_IMPL_NAME<
+          typename AUX778076_OP_TAG_NAME<N1>::type
+        , typename AUX778076_OP_TAG_NAME<N2>::type
+        >::template apply<N1,N2>::type
+#else
+    : aux::msvc_eti_base< typename apply_wrap2<
+          AUX778076_OP_IMPL_NAME<
+              typename AUX778076_OP_TAG_NAME<N1>::type
+            , typename AUX778076_OP_TAG_NAME<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+#endif
+{
+#if AUX778076_OP_ARITY != 2
+
+#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          AUX778076_OP_ARITY
+        , AUX778076_OP_NAME
+        , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(2, N, na) )
+        )
+#   else
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, BOOST_PP_CAT(AUX778076_OP_NAME,2), (N1, N2))
+#   endif
+
+#else
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, AUX778076_OP_NAME, (N1, N2))
+#endif
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, AUX778076_OP_ARITY, AUX778076_OP_NAME)
+
+}}
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+///// iteration, depth == 1
+
+// For gcc 4.4 compatability, we must include the
+// BOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // BOOST_PP_IS_ITERATING
+#if BOOST_PP_ITERATION_DEPTH() == 1
+
+#   define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+      BOOST_MPL_PP_PARAMS(i_, typename N)
+    >
+struct AUX778076_OP_NAME<BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na)>
+#if i_ != 2
+    : AUX778076_OP_N_CALLS(i_, N)
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          AUX778076_OP_ARITY
+        , AUX778076_OP_NAME
+        , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na) )
+        )
+};
+#endif
+
+#   undef i_
+
+#endif // BOOST_PP_ITERATION_DEPTH()
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/pop_front_impl.hpp b/ndnboost/mpl/aux_/pop_front_impl.hpp
new file mode 100644
index 0000000..a4ad7ce
--- /dev/null
+++ b/ndnboost/mpl/aux_/pop_front_impl.hpp
@@ -0,0 +1,44 @@
+
+#ifndef BOOST_MPL_AUX_POP_FRONT_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_POP_FRONT_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: pop_front_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/pop_front_fwd.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+#include <ndnboost/mpl/aux_/config/msvc.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// no default implementation; the definition is needed to make MSVC happy
+
+template< typename Tag >
+struct pop_front_impl
+{
+    template< typename Sequence > struct apply
+    // conservatively placed, but maybe should go outside surrounding
+    // braces.
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) 
+    {
+        typedef int type;
+    }
+#endif
+    ;
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, pop_front_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_POP_FRONT_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/advance_backward.hpp
new file mode 100644
index 0000000..1e4809c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/advance_forward.hpp
new file mode 100644
index 0000000..f2331de
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp
new file mode 100644
index 0000000..119fa2d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp
new file mode 100644
index 0000000..9d372f1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp
new file mode 100644
index 0000000..4f671d1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp
new file mode 100644
index 0000000..0ec6397
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp
@@ -0,0 +1,461 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      int N, typename F
+    >
+struct apply_wrap_impl0;
+
+template< typename F, bool F_has_apply >
+struct apply_wrap_impl0_bcb {
+    typedef typename F::template apply<na> type;
+};
+
+template< typename F >
+struct apply_wrap_impl0_bcb< F,true > {
+    typedef typename F::apply type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          0
+        , F
+       
+        >
+{
+    typedef apply_wrap_impl0_bcb< F, aux::has_apply<F>::value >::type type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          1
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          2
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          3
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          4
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          5
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap0
+    : apply_wrap_impl0<
+          ::ndnboost::mpl::aux::arity< F,0 >::value
+        , F
+       
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1
+    >
+struct apply_wrap_impl1;
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          1
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          2
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          3
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          4
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          5
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap1
+    : apply_wrap_impl1<
+          ::ndnboost::mpl::aux::arity< F,1 >::value
+        , F
+        , T1
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          2
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          3
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          4
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          5
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap2
+    : apply_wrap_impl2<
+          ::ndnboost::mpl::aux::arity< F,2 >::value
+        , F
+        , T1, T2
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          3
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          4
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          5
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap3
+    : apply_wrap_impl3<
+          ::ndnboost::mpl::aux::arity< F,3 >::value
+        , F
+        , T1, T2, T3
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          4
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          5
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap4
+    : apply_wrap_impl4<
+          ::ndnboost::mpl::aux::arity< F,4 >::value
+        , F
+        , T1, T2, T3, T4
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5<
+          5
+        , F
+        , T1, T2, T3, T4, T5
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4, T5
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap5
+    : apply_wrap_impl5<
+          ::ndnboost::mpl::aux::arity< F,5 >::value
+        , F
+        , T1, T2, T3, T4, T5
+        >::type
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp
new file mode 100644
index 0000000..3ac4340
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp
@@ -0,0 +1,117 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
new file mode 100644
index 0000000..acd054b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
@@ -0,0 +1,300 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp
new file mode 100644
index 0000000..35ee492
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp
@@ -0,0 +1,397 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp
new file mode 100644
index 0000000..0e5d554
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp
new file mode 100644
index 0000000..1a2ac8d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp
new file mode 100644
index 0000000..536f350
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp
new file mode 100644
index 0000000..0869fba
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/deque.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/deque.hpp
new file mode 100644
index 0000000..135d8a1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp
new file mode 100644
index 0000000..5922aff
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp
new file mode 100644
index 0000000..b47c51e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/fold_impl.hpp
new file mode 100644
index 0000000..6bb4bee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
new file mode 100644
index 0000000..9a7edf5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Arity
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    , typename Arity
+    >
+struct lambda<
+          lambda< F,Tag1,Arity >
+        , Tag2
+        , int_<3>
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+    typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+    typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp
new file mode 100644
index 0000000..7bd1c1f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
new file mode 100644
index 0000000..b9f165e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp
new file mode 100644
index 0000000..5621cd9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp
@@ -0,0 +1,139 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1, typename T2, typename T3, typename T4, typename T5
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..7553efd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp
new file mode 100644
index 0000000..1155da5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
new file mode 100644
index 0000000..213475d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp
new file mode 100644
index 0000000..6bee1e6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp
new file mode 100644
index 0000000..cd08075
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/list.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/list.hpp
new file mode 100644
index 0000000..78edbcc
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/list_c.hpp
new file mode 100644
index 0000000..21bb36b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/map.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/map.hpp
new file mode 100644
index 0000000..56f8964
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp
new file mode 100644
index 0000000..8e39d0d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp
new file mode 100644
index 0000000..65509f2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
new file mode 100644
index 0000000..d14e535
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp
new file mode 100644
index 0000000..9427d08
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp
new file mode 100644
index 0000000..330e40f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp
new file mode 100644
index 0000000..19c04d3
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/quote.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/quote.hpp
new file mode 100644
index 0000000..282b931
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/quote.hpp
@@ -0,0 +1,119 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+
+{
+    typedef typename T::type type;
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+    typedef T type;
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+    {
+        typedef typename quote_impl<
+              F<U1>
+            , aux::has_type< F<U1> >::value
+            >::type type;
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+    {
+        typedef typename quote_impl<
+              F< U1,U2 >
+            , aux::has_type< F< U1,U2 > >::value
+            >::type type;
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+    {
+        typedef typename quote_impl<
+              F< U1,U2,U3 >
+            , aux::has_type< F< U1,U2,U3 > >::value
+            >::type type;
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+    {
+        typedef typename quote_impl<
+              F< U1,U2,U3,U4 >
+            , aux::has_type< F< U1,U2,U3,U4 > >::value
+            >::type type;
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+    {
+        typedef typename quote_impl<
+              F< U1,U2,U3,U4,U5 >
+            , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+            >::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp
new file mode 100644
index 0000000..a6a438b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_fold_null_step< Last,State >
+            , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step
+{
+    typedef reverse_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+    : reverse_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..8c9809c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_iter_fold_null_step< Last,State >
+            , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step
+{
+    typedef reverse_iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+    : reverse_iter_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/set.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/set.hpp
new file mode 100644
index 0000000..ebc44f9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/set_c.hpp
new file mode 100644
index 0000000..d7249b6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp
new file mode 100644
index 0000000..c5acfdd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp
new file mode 100644
index 0000000..b86b242
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/template_arity.hpp
new file mode 100644
index 0000000..ad9f0f1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp
new file mode 100644
index 0000000..ee61972
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
new file mode 100644
index 0000000..c924f2a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+    {
+        typedef typename aux::unpack_args_impl<
+              size<Args>::value
+            , F
+            , Args
+            >::type type;
+
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/vector.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/vector.hpp
new file mode 100644
index 0000000..19ab860
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc/vector_c.hpp
new file mode 100644
index 0000000..807bfd8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp
new file mode 100644
index 0000000..24b88d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp
new file mode 100644
index 0000000..e4b1cd2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp
new file mode 100644
index 0000000..bccc94e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp
new file mode 100644
index 0000000..4d03907
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp
@@ -0,0 +1,456 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      int N, typename F
+    >
+struct apply_wrap_impl0;
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          0
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          1
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          2
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          3
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          4
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          5
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap0
+    : apply_wrap_impl0<
+          ::ndnboost::mpl::aux::arity< F,0 >::value
+        , F
+       
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1
+    >
+struct apply_wrap_impl1;
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          1
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          2
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          3
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          4
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          5
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap1
+    : apply_wrap_impl1<
+          ::ndnboost::mpl::aux::arity< F,1 >::value
+        , F
+        , T1
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          2
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          3
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          4
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          5
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap2
+    : apply_wrap_impl2<
+          ::ndnboost::mpl::aux::arity< F,2 >::value
+        , F
+        , T1, T2
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          3
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          4
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          5
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap3
+    : apply_wrap_impl3<
+          ::ndnboost::mpl::aux::arity< F,3 >::value
+        , F
+        , T1, T2, T3
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          4
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          5
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap4
+    : apply_wrap_impl4<
+          ::ndnboost::mpl::aux::arity< F,4 >::value
+        , F
+        , T1, T2, T3, T4
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5<
+          5
+        , F
+        , T1, T2, T3, T4, T5
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4, T5
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap5
+    : apply_wrap_impl5<
+          ::ndnboost::mpl::aux::arity< F,5 >::value
+        , F
+        , T1, T2, T3, T4, T5
+        >::type
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
new file mode 100644
index 0000000..4083ade
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
@@ -0,0 +1,306 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp
new file mode 100644
index 0000000..ed6a853
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp
@@ -0,0 +1,403 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp
new file mode 100644
index 0000000..bbd1b6d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp
new file mode 100644
index 0000000..90e8593
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp
new file mode 100644
index 0000000..c71a8f4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
new file mode 100644
index 0000000..b7f0ce7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/deque.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/deque.hpp
new file mode 100644
index 0000000..4631f66
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp
new file mode 100644
index 0000000..0f5415c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
new file mode 100644
index 0000000..0d02da4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp
new file mode 100644
index 0000000..494cd41
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
new file mode 100644
index 0000000..dcea342
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Arity
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    , typename Arity
+    >
+struct lambda<
+          lambda< F,Tag1,Arity >
+        , Tag2
+        , int_<3>
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+    typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+    typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp
new file mode 100644
index 0000000..e05fa3c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
new file mode 100644
index 0000000..f89a587
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp
new file mode 100644
index 0000000..41f387f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp
new file mode 100644
index 0000000..cc08b30
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp
new file mode 100644
index 0000000..7139b79
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
new file mode 100644
index 0000000..f7c3491
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/list.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/list.hpp
new file mode 100644
index 0000000..8cc8c46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/list_c.hpp
new file mode 100644
index 0000000..e43f38f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/map.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/map.hpp
new file mode 100644
index 0000000..7974f28
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp
new file mode 100644
index 0000000..ae6b592
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp
new file mode 100644
index 0000000..89c6172
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
new file mode 100644
index 0000000..b28e100
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp
new file mode 100644
index 0000000..e929602
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp
new file mode 100644
index 0000000..de03e3e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/quote.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/quote.hpp
new file mode 100644
index 0000000..3e77fba
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/quote.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp
new file mode 100644
index 0000000..2c6c173
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_fold_null_step< Last,State >
+            , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step
+{
+    typedef reverse_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+    : reverse_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..57cc688
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_iter_fold_null_step< Last,State >
+            , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step
+{
+    typedef reverse_iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+    : reverse_iter_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/set.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/set.hpp
new file mode 100644
index 0000000..4c4ca11
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/set_c.hpp
new file mode 100644
index 0000000..bef2fde
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
new file mode 100644
index 0000000..c8df29c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
new file mode 100644
index 0000000..a726ff1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/template_arity.hpp
new file mode 100644
index 0000000..f50578f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp
new file mode 100644
index 0000000..f4514e5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
new file mode 100644
index 0000000..3098efe
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+    {
+        typedef typename aux::unpack_args_impl<
+              size<Args>::value
+            , F
+            , Args
+            >::type type;
+
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/vector.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/vector.hpp
new file mode 100644
index 0000000..df67589
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc551/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc551/vector_c.hpp
new file mode 100644
index 0000000..e2fbdb4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc551/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp
new file mode 100644
index 0000000..1e4809c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp
new file mode 100644
index 0000000..f2331de
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
new file mode 100644
index 0000000..119fa2d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
new file mode 100644
index 0000000..9d372f1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp
new file mode 100644
index 0000000..4f671d1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp
new file mode 100644
index 0000000..28aba33
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp
@@ -0,0 +1,456 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      int N, typename F
+    >
+struct apply_wrap_impl0;
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          0
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          1
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          2
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          3
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          4
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          5
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap0
+    : apply_wrap_impl0<
+          ::ndnboost::mpl::aux::arity< F,0 >::value
+        , F
+       
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1
+    >
+struct apply_wrap_impl1;
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          1
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          2
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          3
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          4
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          5
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap1
+    : apply_wrap_impl1<
+          ::ndnboost::mpl::aux::arity< F,1 >::value
+        , F
+        , T1
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          2
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          3
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          4
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          5
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap2
+    : apply_wrap_impl2<
+          ::ndnboost::mpl::aux::arity< F,2 >::value
+        , F
+        , T1, T2
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          3
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          4
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          5
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap3
+    : apply_wrap_impl3<
+          ::ndnboost::mpl::aux::arity< F,3 >::value
+        , F
+        , T1, T2, T3
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          4
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          5
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap4
+    : apply_wrap_impl4<
+          ::ndnboost::mpl::aux::arity< F,4 >::value
+        , F
+        , T1, T2, T3, T4
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5<
+          5
+        , F
+        , T1, T2, T3, T4, T5
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4, T5
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap5
+    : apply_wrap_impl5<
+          ::ndnboost::mpl::aux::arity< F,5 >::value
+        , F
+        , T1, T2, T3, T4, T5
+        >::type
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
new file mode 100644
index 0000000..3ac4340
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
@@ -0,0 +1,117 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
new file mode 100644
index 0000000..acd054b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
@@ -0,0 +1,300 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
new file mode 100644
index 0000000..35ee492
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
@@ -0,0 +1,397 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp
new file mode 100644
index 0000000..0e5d554
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
new file mode 100644
index 0000000..1a2ac8d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
new file mode 100644
index 0000000..536f350
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
new file mode 100644
index 0000000..0869fba
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp
new file mode 100644
index 0000000..135d8a1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
new file mode 100644
index 0000000..5922aff
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
new file mode 100644
index 0000000..b47c51e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp
new file mode 100644
index 0000000..6bb4bee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
new file mode 100644
index 0000000..9a7edf5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Arity
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    , typename Arity
+    >
+struct lambda<
+          lambda< F,Tag1,Arity >
+        , Tag2
+        , int_<3>
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+    typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+    typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
new file mode 100644
index 0000000..7bd1c1f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
new file mode 100644
index 0000000..b9f165e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
new file mode 100644
index 0000000..5621cd9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
@@ -0,0 +1,139 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1, typename T2, typename T3, typename T4, typename T5
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..7553efd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp
new file mode 100644
index 0000000..1155da5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
new file mode 100644
index 0000000..213475d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
new file mode 100644
index 0000000..6bee1e6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
new file mode 100644
index 0000000..cd08075
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/list.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/list.hpp
new file mode 100644
index 0000000..78edbcc
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp
new file mode 100644
index 0000000..21bb36b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/map.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/map.hpp
new file mode 100644
index 0000000..56f8964
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
new file mode 100644
index 0000000..8e39d0d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
new file mode 100644
index 0000000..65509f2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
new file mode 100644
index 0000000..d14e535
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
new file mode 100644
index 0000000..9427d08
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
new file mode 100644
index 0000000..330e40f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
new file mode 100644
index 0000000..19c04d3
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp
new file mode 100644
index 0000000..7f9d18bc
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp
new file mode 100644
index 0000000..a6a438b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_fold_null_step< Last,State >
+            , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step
+{
+    typedef reverse_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+    : reverse_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..8c9809c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_iter_fold_null_step< Last,State >
+            , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step
+{
+    typedef reverse_iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+    : reverse_iter_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/set.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/set.hpp
new file mode 100644
index 0000000..ebc44f9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp
new file mode 100644
index 0000000..d7249b6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
new file mode 100644
index 0000000..c5acfdd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
new file mode 100644
index 0000000..b86b242
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp
new file mode 100644
index 0000000..ad9f0f1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
new file mode 100644
index 0000000..ee61972
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
new file mode 100644
index 0000000..c924f2a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+    {
+        typedef typename aux::unpack_args_impl<
+              size<Args>::value
+            , F
+            , Args
+            >::type type;
+
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp
new file mode 100644
index 0000000..19ab860
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp
new file mode 100644
index 0000000..807bfd8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp
new file mode 100644
index 0000000..24b88d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp
new file mode 100644
index 0000000..e4b1cd2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp
new file mode 100644
index 0000000..bccc94e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp
new file mode 100644
index 0000000..ec90202
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+
+    , typename has_apply_ = typename aux::has_apply<F>::type
+
+    >
+struct apply_wrap0
+
+    : F::template apply<  >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+    : F::apply
+{
+};
+
+template<
+      typename F, typename T1
+
+    >
+struct apply_wrap1
+
+    : F::template apply<T1>
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+
+    >
+struct apply_wrap2
+
+    : F::template apply< T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+
+    >
+struct apply_wrap3
+
+    : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+
+    >
+struct apply_wrap4
+
+    : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+
+    >
+struct apply_wrap5
+
+    : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
new file mode 100644
index 0000000..8895825
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
@@ -0,0 +1,406 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F, int dummy_
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, int dummy_
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1, int dummy_
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, int dummy_
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, int dummy_
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, int dummy_
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, int dummy_
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, int dummy_
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , int dummy_
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , int dummy_
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, int dummy_
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, int dummy_
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp
new file mode 100644
index 0000000..18db350
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp
@@ -0,0 +1,515 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F, int dummy_
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, int dummy_
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1, int dummy_
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, int dummy_
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, int dummy_
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, int dummy_
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, int dummy_
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, int dummy_
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , int dummy_
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , int dummy_
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, int dummy_
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, int dummy_
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp
new file mode 100644
index 0000000..e2eeeb9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp
@@ -0,0 +1,53 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, int dummy_ = 0
+    >
+struct bind;
+
+template<
+      typename F, int dummy_ = 0
+    >
+struct bind0;
+
+template<
+      typename F, typename T1, int dummy_ = 0
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2, int dummy_ = 0
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3, int dummy_ = 0
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , int dummy_ = 0
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, int dummy_ = 0
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp
new file mode 100644
index 0000000..90e8593
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp
new file mode 100644
index 0000000..c71a8f4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp
new file mode 100644
index 0000000..b7f0ce7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/deque.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/deque.hpp
new file mode 100644
index 0000000..4631f66
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp
new file mode 100644
index 0000000..0f5415c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp
new file mode 100644
index 0000000..0d02da4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/fold_impl.hpp
new file mode 100644
index 0000000..494cd41
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
new file mode 100644
index 0000000..4d09c10
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
@@ -0,0 +1,536 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp
new file mode 100644
index 0000000..e05fa3c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
new file mode 100644
index 0000000..f89a587
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp
new file mode 100644
index 0000000..41f387f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp
new file mode 100644
index 0000000..cc08b30
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp
new file mode 100644
index 0000000..7139b79
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp
new file mode 100644
index 0000000..f7c3491
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/list.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/list.hpp
new file mode 100644
index 0000000..8cc8c46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/list_c.hpp
new file mode 100644
index 0000000..e43f38f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/map.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/map.hpp
new file mode 100644
index 0000000..7974f28
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp
new file mode 100644
index 0000000..ae6b592
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp
new file mode 100644
index 0000000..89c6172
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
new file mode 100644
index 0000000..b28e100
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp
new file mode 100644
index 0000000..e929602
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp
new file mode 100644
index 0000000..de03e3e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/quote.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/quote.hpp
new file mode 100644
index 0000000..8ce79ed
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/quote.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+    : T
+{
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+    typedef T type;
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+        : quote_impl<
+              F<U1>
+            , aux::has_type< F<U1> >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+        : quote_impl<
+              F< U1,U2 >
+            , aux::has_type< F< U1,U2 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+        : quote_impl<
+              F< U1,U2,U3 >
+            , aux::has_type< F< U1,U2,U3 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4 >
+            , aux::has_type< F< U1,U2,U3,U4 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4,U5 >
+            , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+            >
+
+    {
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7d3ad75
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..33bf508
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/set.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/set.hpp
new file mode 100644
index 0000000..4c4ca11
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/set_c.hpp
new file mode 100644
index 0000000..bef2fde
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp
new file mode 100644
index 0000000..c8df29c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp
new file mode 100644
index 0000000..a726ff1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/template_arity.hpp
new file mode 100644
index 0000000..6cb42ae
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/template_arity.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp
new file mode 100644
index 0000000..f4514e5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
new file mode 100644
index 0000000..9c9204f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/vector.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/vector.hpp
new file mode 100644
index 0000000..df67589
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/dmc/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/dmc/vector_c.hpp
new file mode 100644
index 0000000..e2fbdb4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/dmc/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp
new file mode 100644
index 0000000..24b88d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp
new file mode 100644
index 0000000..e4b1cd2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp
new file mode 100644
index 0000000..bccc94e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp
new file mode 100644
index 0000000..ec90202
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+
+    , typename has_apply_ = typename aux::has_apply<F>::type
+
+    >
+struct apply_wrap0
+
+    : F::template apply<  >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+    : F::apply
+{
+};
+
+template<
+      typename F, typename T1
+
+    >
+struct apply_wrap1
+
+    : F::template apply<T1>
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+
+    >
+struct apply_wrap2
+
+    : F::template apply< T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+
+    >
+struct apply_wrap3
+
+    : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+
+    >
+struct apply_wrap4
+
+    : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+
+    >
+struct apply_wrap5
+
+    : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
new file mode 100644
index 0000000..a2a565e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
@@ -0,0 +1,440 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+template<
+      template< typename T1, typename T2, typename T3 > class F, typename Tag
+    >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< eval_if,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename eval_if<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp
new file mode 100644
index 0000000..f2cde5a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp
@@ -0,0 +1,561 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+template<
+      template< typename T1, typename T2, typename T3 > class F, typename Tag
+    >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< eval_if,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename eval_if<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp
new file mode 100644
index 0000000..9a046ee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct bind;
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp
new file mode 100644
index 0000000..90e8593
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp
new file mode 100644
index 0000000..c71a8f4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp
new file mode 100644
index 0000000..b7f0ce7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/deque.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/deque.hpp
new file mode 100644
index 0000000..4631f66
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp
new file mode 100644
index 0000000..0f5415c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp
new file mode 100644
index 0000000..0d02da4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/fold_impl.hpp
new file mode 100644
index 0000000..494cd41
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
new file mode 100644
index 0000000..dcea342
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
@@ -0,0 +1,558 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Arity
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>,Tag, int_< -1 > >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+        , int_<1>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+        , int_<2>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+        , int_<3>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+        , int_<4>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<5>
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>,Tag, int_<1> >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+        , int_<6>
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+template<
+      typename F
+    , typename Tag1
+    , typename Tag2
+    , typename Arity
+    >
+struct lambda<
+          lambda< F,Tag1,Arity >
+        , Tag2
+        , int_<3>
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef bind1< quote1<aux::template_arity>, typename l1::result_ > arity_;
+    typedef lambda< typename if_< is_le,arity_,Arity >::type, Tag2 > l3;
+    typedef aux::le_result3<is_le, Tag2, mpl::lambda, l1, l2, l3> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp
new file mode 100644
index 0000000..e05fa3c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
new file mode 100644
index 0000000..f89a587
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp
new file mode 100644
index 0000000..41f387f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp
new file mode 100644
index 0000000..cc08b30
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp
new file mode 100644
index 0000000..7139b79
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp
new file mode 100644
index 0000000..f7c3491
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/list.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/list.hpp
new file mode 100644
index 0000000..8cc8c46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/list_c.hpp
new file mode 100644
index 0000000..e43f38f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/map.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/map.hpp
new file mode 100644
index 0000000..7974f28
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp
new file mode 100644
index 0000000..ae6b592
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp
new file mode 100644
index 0000000..89c6172
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
new file mode 100644
index 0000000..b28e100
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp
new file mode 100644
index 0000000..e929602
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp
new file mode 100644
index 0000000..de03e3e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/quote.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/quote.hpp
new file mode 100644
index 0000000..10bb3a4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/quote.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+{
+    typedef typename T::type type;
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+    typedef T type;
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+        : quote_impl<
+              F<U1>
+            , aux::has_type< F<U1> >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+        : quote_impl<
+              F< U1,U2 >
+            , aux::has_type< F< U1,U2 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+        : quote_impl<
+              F< U1,U2,U3 >
+            , aux::has_type< F< U1,U2,U3 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4 >
+            , aux::has_type< F< U1,U2,U3,U4 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4,U5 >
+            , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+            >
+
+    {
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7d3ad75
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..33bf508
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/set.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/set.hpp
new file mode 100644
index 0000000..4c4ca11
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/set_c.hpp
new file mode 100644
index 0000000..bef2fde
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp
new file mode 100644
index 0000000..c8df29c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp
new file mode 100644
index 0000000..a726ff1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp
new file mode 100644
index 0000000..d929799
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// *Preprocessed* version of the main "template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+template< int N > struct arity_tag
+{
+    typedef char (&type)[N + 1];
+};
+
+template<
+      int C1, int C2, int C3, int C4, int C5, int C6
+    >
+struct max_arity
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          ( C6 > 0 ? C6 : ( C5 > 0 ? C5 : ( C4 > 0 ? C4 : ( C3 > 0 ? C3 : ( C2 > 0 ? C2 : ( C1 > 0 ? C1 : -1 ) ) ) ) ) )
+        );
+};
+
+arity_tag<0>::type arity_helper(...);
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    >
+typename arity_tag<1>::type
+arity_helper(type_wrapper< F<T1> >, arity_tag<1>);
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    >
+typename arity_tag<2>::type
+arity_helper(type_wrapper< F< T1,T2 > >, arity_tag<2>);
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    >
+typename arity_tag<3>::type
+arity_helper(type_wrapper< F< T1,T2,T3 > >, arity_tag<3>);
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    >
+typename arity_tag<4>::type
+arity_helper(type_wrapper< F< T1,T2,T3,T4 > >, arity_tag<4>);
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    >
+typename arity_tag<5>::type
+arity_helper(type_wrapper< F< T1,T2,T3,T4,T5 > >, arity_tag<5>);
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5, typename P6
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6
+    >
+typename arity_tag<6>::type
+arity_helper(type_wrapper< F< T1,T2,T3,T4,T5,T6 > >, arity_tag<6>);
+template< typename F, int N >
+struct template_arity_impl
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          sizeof(::ndnboost::mpl::aux::arity_helper(type_wrapper<F>(), arity_tag<N>())) - 1
+        );
+};
+
+template< typename F >
+struct template_arity
+{
+    BOOST_STATIC_CONSTANT(int, value  = (
+          max_arity< template_arity_impl< F,1 >::value, template_arity_impl< F,2 >::value, template_arity_impl< F,3 >::value, template_arity_impl< F,4 >::value, template_arity_impl< F,5 >::value, template_arity_impl< F,6 >::value >::value
+        ));
+    typedef mpl::int_<value> type;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp
new file mode 100644
index 0000000..f4514e5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
new file mode 100644
index 0000000..9c9204f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/vector.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/vector.hpp
new file mode 100644
index 0000000..df67589
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/gcc/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/gcc/vector_c.hpp
new file mode 100644
index 0000000..e2fbdb4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/gcc/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp
new file mode 100644
index 0000000..97612a1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp
@@ -0,0 +1,132 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp
new file mode 100644
index 0000000..8852074
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp
@@ -0,0 +1,132 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+
+    /// ETI workaround
+    template<> struct apply<int>
+    {
+        typedef int type;
+    };
+
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp
new file mode 100644
index 0000000..2ae4e3b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp
@@ -0,0 +1,73 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct and_impl
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : false_
+    {
+    };
+};
+
+template<> struct and_impl<true>
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : and_impl<
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< T2,T3,T4,true_ >
+    {
+    };
+};
+
+template<>
+struct and_impl<true>
+    ::result_< true_,true_,true_,true_ >
+        : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< T2,T3,T4,T5 >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp
new file mode 100644
index 0000000..75fb383
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+{
+    typedef typename apply_wrap0<
+          typename lambda<F>::type
+       
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply0<int>
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+{
+    typedef typename apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply1< int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+{
+    typedef typename apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply2< int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+{
+    typedef typename apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply3< int,int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+{
+    typedef typename apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply4< int,int,int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+{
+    typedef typename apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >::type type;
+
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply5< int,int,int,int,int,int >
+{
+    typedef int type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp
new file mode 100644
index 0000000..f2a9a76
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp
new file mode 100644
index 0000000..79157d1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp
@@ -0,0 +1,247 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template< typename F>
+struct msvc_apply0
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+        template< typename P  = int > struct apply
+        {
+            typedef int type;
+        };
+    };
+
+    template< typename T  = int > struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template apply<>
+    {
+    };
+
+};
+
+template<
+      typename F
+    >
+struct apply_wrap0
+{
+    typedef typename msvc_apply0<F>::template result_<
+         
+        >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap0<int>
+{
+    typedef int type;
+};
+
+template< typename F>
+struct msvc_apply1
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+        template< typename P1 > struct apply
+        {
+            typedef int type;
+        };
+    };
+
+    template< typename T1 > struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template apply<T1>
+    {
+    };
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap1
+{
+    typedef typename msvc_apply1<F>::template result_<
+          T1
+        >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap1< int,int >
+{
+    typedef int type;
+};
+
+template< typename F>
+struct msvc_apply2
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+        template< typename P1, typename P2 > struct apply
+        {
+            typedef int type;
+        };
+    };
+
+    template< typename T1, typename T2 > struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template apply< T1,T2 >
+    {
+    };
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap2
+{
+    typedef typename msvc_apply2<F>::template result_<
+          T1, T2
+        >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap2< int,int,int >
+{
+    typedef int type;
+};
+
+template< typename F>
+struct msvc_apply3
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+        template< typename P1, typename P2, typename P3 > struct apply
+        {
+            typedef int type;
+        };
+    };
+
+    template< typename T1, typename T2, typename T3 > struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template apply< T1,T2,T3 >
+    {
+    };
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap3
+{
+    typedef typename msvc_apply3<F>::template result_<
+          T1, T2, T3
+        >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap3< int,int,int,int >
+{
+    typedef int type;
+};
+
+template< typename F>
+struct msvc_apply4
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+        template<
+              typename P1, typename P2, typename P3, typename P4
+            >
+        struct apply
+        {
+            typedef int type;
+        };
+    };
+
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template apply< T1,T2,T3,T4 >
+    {
+    };
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap4
+{
+    typedef typename msvc_apply4<F>::template result_<
+          T1, T2, T3, T4
+        >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap4< int,int,int,int,int >
+{
+    typedef int type;
+};
+
+template< typename F>
+struct msvc_apply5
+{
+    template< bool > struct f_ : F {};
+    template<> struct f_<true>
+    {
+        template<
+              typename P1, typename P2, typename P3, typename P4
+            , typename P5
+            >
+        struct apply
+        {
+            typedef int type;
+        };
+    };
+
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+        : f_< aux::msvc_never_true<F>::value >
+            ::template apply< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap5
+{
+    typedef typename msvc_apply5<F>::template result_<
+          T1, T2, T3, T4, T5
+        >::type type;
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap5< int,int,int,int,int,int >
+{
+    typedef int type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
new file mode 100644
index 0000000..9b68023
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef typename apply_wrap5<
+              T
+            , U1, U2, U3, U4, U5
+            >::type type;
+    };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+    : resolve_arg_impl< is_bind_template<T>::value >
+            ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_  = true >
+struct is_bind_template_impl
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value  = false);
+    };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+                == sizeof(aux::yes_tag)
+            );
+    };
+};
+
+template< typename T > struct is_bind_template
+    : is_bind_template_impl< ::ndnboost::detail::is_reference_impl<T>::value >
+        ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F
+    >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1
+    >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2
+    >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp
new file mode 100644
index 0000000..1c3b8d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp
@@ -0,0 +1,432 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef typename apply_wrap5<
+              T
+            , U1, U2, U3, U4, U5
+            >::type type;
+    };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+    : resolve_arg_impl< is_bind_template<T>::value >
+            ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+    template< typename Arg > struct result_
+    {
+        typedef Arg next;
+        typedef T type;
+    };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg< -1 > >
+{
+    template< typename Arg > struct result_
+    {
+        typedef typename next<Arg>::type next;
+        typedef Arg type;
+    };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+    : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_  = true >
+struct is_bind_template_impl
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value  = false);
+    };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+                == sizeof(aux::yes_tag)
+            );
+    };
+};
+
+template< typename T > struct is_bind_template
+    : is_bind_template_impl< ::ndnboost::detail::is_reference_impl<T>::value >
+        ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F
+    >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1
+    >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2
+    >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp
new file mode 100644
index 0000000..bbd1b6d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp
new file mode 100644
index 0000000..b4517bc
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp
@@ -0,0 +1,149 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct bitand_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitand_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitand_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitand_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+
+    : if_<
+
+          is_na<N3>
+        , bitand_2< N1,N2 >
+        , bitand_<
+              bitand_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitand_2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          bitand_impl<
+              typename bitand_tag<N1>::type
+            , typename bitand_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitand_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitand_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp
new file mode 100644
index 0000000..a496f89
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp
@@ -0,0 +1,149 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct bitor_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitor_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitor_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitor_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+
+    : if_<
+
+          is_na<N3>
+        , bitor_2< N1,N2 >
+        , bitor_<
+              bitor_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitor_2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          bitor_impl<
+              typename bitor_tag<N1>::type
+            , typename bitor_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitor_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitor_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
new file mode 100644
index 0000000..b4bf4a0
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
@@ -0,0 +1,149 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct bitxor_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitxor_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitxor_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitxor_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+
+    : if_<
+
+          is_na<N3>
+        , bitxor_2< N1,N2 >
+        , bitxor_<
+              bitxor_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitxor_2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          bitxor_impl<
+              typename bitxor_tag<N1>::type
+            , typename bitxor_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitxor_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitxor_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp
new file mode 100644
index 0000000..8a7e2c3
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct deque_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct deque_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef vector0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_deque_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_deque_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct deque_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_deque_arg<T1>::value + is_deque_arg<T2>::value 
+        + is_deque_arg<T3>::value + is_deque_arg<T4>::value 
+        + is_deque_arg<T5>::value + is_deque_arg<T6>::value 
+        + is_deque_arg<T7>::value + is_deque_arg<T8>::value 
+        + is_deque_arg<T9>::value + is_deque_arg<T10>::value 
+        + is_deque_arg<T11>::value + is_deque_arg<T12>::value 
+        + is_deque_arg<T13>::value + is_deque_arg<T14>::value 
+        + is_deque_arg<T15>::value + is_deque_arg<T16>::value 
+        + is_deque_arg<T17>::value + is_deque_arg<T18>::value 
+        + is_deque_arg<T19>::value + is_deque_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque_impl
+{
+    typedef aux::deque_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::deque_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque
+    : aux::deque_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::deque_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp
new file mode 100644
index 0000000..b5f7fdd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp
@@ -0,0 +1,148 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct divides_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct divides_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct divides_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct divides2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+
+    : if_<
+
+          is_na<N3>
+        , divides2< N1,N2 >
+        , divides<
+              divides2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct divides2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          divides_impl<
+              typename divides_tag<N1>::type
+            , typename divides_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct divides_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::divides_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
new file mode 100644
index 0000000..6a72eec
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct equal_to_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct equal_to_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct equal_to_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+    : aux::msvc_eti_base< typename apply_wrap2<
+          equal_to_impl<
+              typename equal_to_tag<N1>::type
+            , typename equal_to_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp
new file mode 100644
index 0000000..c8ca0c7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp
@@ -0,0 +1,293 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template< int N >
+struct fold_chunk;
+
+template<> struct fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef state0 state;
+        typedef iter0 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef state1 state;
+        typedef iter1 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef state2 state;
+        typedef iter2 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef state3 state;
+        typedef iter3 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef state4 state;
+        typedef iter4 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template< int N >
+struct fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef fold_impl<
+              4
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , fold_null_step< Last,State >
+            , fold_step< First,Last,State,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_step
+{
+    typedef fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+    : fold_chunk<N>
+        ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
new file mode 100644
index 0000000..de658d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp
new file mode 100644
index 0000000..38ddec9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct greater_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+    : aux::msvc_eti_base< typename apply_wrap2<
+          greater_impl<
+              typename greater_tag<N1>::type
+            , typename greater_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
new file mode 100644
index 0000000..578e3cb
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct greater_equal_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_equal_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_equal_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+    : aux::msvc_eti_base< typename apply_wrap2<
+          greater_equal_impl<
+              typename greater_equal_tag<N1>::type
+            , typename greater_equal_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp
new file mode 100644
index 0000000..12328f7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T1, T2
+    {
+        typedef Derived type_;
+    };
+};
+
+template<>
+struct inherit2_impl< false,true >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T1
+    {
+        typedef T1 type_;
+    };
+};
+
+template<>
+struct inherit2_impl< true,false >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T2
+    {
+        typedef T2 type_;
+    };
+};
+
+template<>
+struct inherit2_impl< true,true >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+    {
+        typedef T1 type_;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : aux::inherit2_impl<
+          is_empty_base<T1>::value
+        , is_empty_base<T2>::value
+        >::template result_< inherit2< T1,T2 >,T1, T2 >
+{
+    typedef typename inherit2::type_ type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp
new file mode 100644
index 0000000..4753170
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp
@@ -0,0 +1,293 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template< int N >
+struct iter_fold_chunk;
+
+template<> struct iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef state0 state;
+        typedef iter0 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef state1 state;
+        typedef iter1 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef state2 state;
+        typedef iter2 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef state3 state;
+        typedef iter3 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef state4 state;
+        typedef iter4 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template< int N >
+struct iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef iter_fold_impl<
+              4
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , iter_fold_null_step< Last,State >
+            , iter_fold_step< First,Last,State,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_step
+{
+    typedef iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+    : iter_fold_chunk<N>
+        ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp
new file mode 100644
index 0000000..d9f73a4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct less_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+    : aux::msvc_eti_base< typename apply_wrap2<
+          less_impl<
+              typename less_tag<N1>::type
+            , typename less_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N2)::value >
+             BOOST_MPL_AUX_VALUE_WKND(N1)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
new file mode 100644
index 0000000..f203fbe
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct less_equal_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_equal_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_equal_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+    : aux::msvc_eti_base< typename apply_wrap2<
+          less_equal_impl<
+              typename less_equal_tag<N1>::type
+            , typename less_equal_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp
new file mode 100644
index 0000000..63062d2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef list0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_list_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_list_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct list_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_list_arg<T1>::value + is_list_arg<T2>::value 
+        + is_list_arg<T3>::value + is_list_arg<T4>::value 
+        + is_list_arg<T5>::value + is_list_arg<T6>::value 
+        + is_list_arg<T7>::value + is_list_arg<T8>::value 
+        + is_list_arg<T9>::value + is_list_arg<T10>::value 
+        + is_list_arg<T11>::value + is_list_arg<T12>::value 
+        + is_list_arg<T13>::value + is_list_arg<T14>::value 
+        + is_list_arg<T15>::value + is_list_arg<T16>::value 
+        + is_list_arg<T17>::value + is_list_arg<T18>::value 
+        + is_list_arg<T19>::value + is_list_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list_impl
+{
+    typedef aux::list_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::list_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list
+    : aux::list_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::list_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp
new file mode 100644
index 0000000..010f92e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list1_c<
+              T, C0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list2_c<
+              T, C0, C1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list3_c<
+              T, C0, C1, C2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list4_c<
+              T, C0, C1, C2, C3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list5_c<
+              T, C0, C1, C2, C3, C4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list6_c<
+              T, C0, C1, C2, C3, C4, C5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list7_c<
+              T, C0, C1, C2, C3, C4, C5, C6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list8_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list9_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list10_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list11_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list12_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list13_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list14_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list15_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list16_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list17_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list18_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list19_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list20_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_list_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_list_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct list_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_list_c_arg<C1>::value + is_list_c_arg<C2>::value 
+        + is_list_c_arg<C3>::value + is_list_c_arg<C4>::value 
+        + is_list_c_arg<C5>::value + is_list_c_arg<C6>::value 
+        + is_list_c_arg<C7>::value + is_list_c_arg<C8>::value 
+        + is_list_c_arg<C9>::value + is_list_c_arg<C10>::value 
+        + is_list_c_arg<C11>::value + is_list_c_arg<C12>::value 
+        + is_list_c_arg<C13>::value + is_list_c_arg<C14>::value 
+        + is_list_c_arg<C15>::value + is_list_c_arg<C16>::value 
+        + is_list_c_arg<C17>::value + is_list_c_arg<C18>::value 
+        + is_list_c_arg<C19>::value + is_list_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c_impl
+{
+    typedef aux::list_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::list_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c
+    : aux::list_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::list_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp
new file mode 100644
index 0000000..3066603
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct map_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct map_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef map0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_map_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_map_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct map_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_map_arg<T1>::value + is_map_arg<T2>::value 
+        + is_map_arg<T3>::value + is_map_arg<T4>::value 
+        + is_map_arg<T5>::value + is_map_arg<T6>::value 
+        + is_map_arg<T7>::value + is_map_arg<T8>::value 
+        + is_map_arg<T9>::value + is_map_arg<T10>::value 
+        + is_map_arg<T11>::value + is_map_arg<T12>::value 
+        + is_map_arg<T13>::value + is_map_arg<T14>::value 
+        + is_map_arg<T15>::value + is_map_arg<T16>::value 
+        + is_map_arg<T17>::value + is_map_arg<T18>::value 
+        + is_map_arg<T19>::value + is_map_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map_impl
+{
+    typedef aux::map_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::map_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map
+    : aux::map_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::map_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp
new file mode 100644
index 0000000..dc70c44
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp
@@ -0,0 +1,148 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct minus_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct minus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct minus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct minus2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+
+    : if_<
+
+          is_na<N3>
+        , minus2< N1,N2 >
+        , minus<
+              minus2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct minus2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          minus_impl<
+              typename minus_tag<N1>::type
+            , typename minus_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct minus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::minus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp
new file mode 100644
index 0000000..be8eef6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp
@@ -0,0 +1,115 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct modulus_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct modulus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct modulus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+    : aux::msvc_eti_base< typename apply_wrap2<
+          modulus_impl<
+              typename modulus_tag<N1>::type
+            , typename modulus_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct modulus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::modulus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
new file mode 100644
index 0000000..6a8bb75
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct not_equal_to_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct not_equal_to_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+    : aux::msvc_eti_base< typename apply_wrap2<
+          not_equal_to_impl<
+              typename not_equal_to_tag<N1>::type
+            , typename not_equal_to_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp
new file mode 100644
index 0000000..b0b3a7f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp
@@ -0,0 +1,73 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct or_impl
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : true_
+    {
+    };
+};
+
+template<> struct or_impl<false>
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : or_impl<
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< T2,T3,T4,false_ >
+    {
+    };
+};
+
+template<>
+struct or_impl<false>
+    ::result_< false_,false_,false_,false_ >
+        : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< T2,T3,T4,T5 >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp
new file mode 100644
index 0000000..fc8884e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp
@@ -0,0 +1,148 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct plus_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct plus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct plus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct plus2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+
+    : if_<
+
+          is_na<N3>
+        , plus2< N1,N2 >
+        , plus<
+              plus2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct plus2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          plus_impl<
+              typename plus_tag<N1>::type
+            , typename plus_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct plus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::plus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/quote.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/quote.hpp
new file mode 100644
index 0000000..3e77fba
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/quote.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp
new file mode 100644
index 0000000..43e3cdd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp
@@ -0,0 +1,343 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_fold_null_step< Last,State >
+            , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step
+{
+    typedef reverse_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+    : reverse_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..94417f4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp
@@ -0,0 +1,343 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_iter_fold_null_step< Last,State >
+            , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+
+    /// ETI workaround
+    template<> struct result_< int,int,int,int,int >
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step
+{
+    typedef reverse_iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+    : reverse_iter_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp
new file mode 100644
index 0000000..e964879
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef set0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_set_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_set_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct set_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_set_arg<T1>::value + is_set_arg<T2>::value 
+        + is_set_arg<T3>::value + is_set_arg<T4>::value 
+        + is_set_arg<T5>::value + is_set_arg<T6>::value 
+        + is_set_arg<T7>::value + is_set_arg<T8>::value 
+        + is_set_arg<T9>::value + is_set_arg<T10>::value 
+        + is_set_arg<T11>::value + is_set_arg<T12>::value 
+        + is_set_arg<T13>::value + is_set_arg<T14>::value 
+        + is_set_arg<T15>::value + is_set_arg<T16>::value 
+        + is_set_arg<T17>::value + is_set_arg<T18>::value 
+        + is_set_arg<T19>::value + is_set_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set_impl
+{
+    typedef aux::set_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::set_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set
+    : aux::set_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::set_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp
new file mode 100644
index 0000000..a9a9b18
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set1_c<
+              T, C0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set2_c<
+              T, C0, C1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set3_c<
+              T, C0, C1, C2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set4_c<
+              T, C0, C1, C2, C3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set5_c<
+              T, C0, C1, C2, C3, C4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set6_c<
+              T, C0, C1, C2, C3, C4, C5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set7_c<
+              T, C0, C1, C2, C3, C4, C5, C6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set8_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set9_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set10_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set11_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set12_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set13_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set14_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set15_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set16_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set17_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set18_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set19_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set20_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_set_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_set_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct set_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_set_c_arg<C1>::value + is_set_c_arg<C2>::value 
+        + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value 
+        + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value 
+        + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value 
+        + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value 
+        + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value 
+        + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value 
+        + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value 
+        + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value 
+        + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c_impl
+{
+    typedef aux::set_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::set_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c
+    : aux::set_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::set_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
new file mode 100644
index 0000000..cc05688
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct shift_left_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_left_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_left_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+    : aux::msvc_eti_base< typename apply_wrap2<
+          shift_left_impl<
+              typename shift_left_tag<N1>::type
+            , typename shift_left_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_left_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n << s));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+        : aux::shift_left_wknd<
+              typename N::value_type
+            , typename S::value_type
+            , N::value
+            , S::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
new file mode 100644
index 0000000..d663d51
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct shift_right_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_right_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_right_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+    : aux::msvc_eti_base< typename apply_wrap2<
+          shift_right_impl<
+              typename shift_right_tag<N1>::type
+            , typename shift_right_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_right_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n >> s));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+        : aux::shift_right_wknd<
+              typename N::value_type
+            , typename S::value_type
+            , N::value
+            , S::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/template_arity.hpp
new file mode 100644
index 0000000..d31dba4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/template_arity.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+template<>
+struct template_arity<int>
+    : mpl::int_< -1 >
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp
new file mode 100644
index 0000000..ade26a2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp
@@ -0,0 +1,148 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct times_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct times_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct times_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct times2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+
+    : if_<
+
+          is_na<N3>
+        , times2< N1,N2 >
+        , times<
+              times2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct times2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          times_impl<
+              typename times_tag<N1>::type
+            , typename times_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct times_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::times_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
new file mode 100644
index 0000000..bee7472
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
@@ -0,0 +1,109 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+{
+    template< typename F, typename Args > struct apply;
+};
+
+template<> struct unpack_args_impl<0>
+{
+    template< typename F, typename Args > struct apply
+        : apply0<
+              F
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<1>
+{
+    template< typename F, typename Args > struct apply
+        : apply1<
+              F
+            , typename at_c< Args,0 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<2>
+{
+    template< typename F, typename Args > struct apply
+        : apply2<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<3>
+{
+    template< typename F, typename Args > struct apply
+        : apply3<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<4>
+{
+    template< typename F, typename Args > struct apply
+        : apply4<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<5>
+{
+    template< typename F, typename Args > struct apply
+        : apply5<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+            , typename at_c< Args,4 >::type
+            >
+    {
+    };
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value >
+            ::template apply< F,Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp
new file mode 100644
index 0000000..bdee923
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef vector0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_vector_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_vector_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct vector_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_vector_arg<T1>::value + is_vector_arg<T2>::value 
+        + is_vector_arg<T3>::value + is_vector_arg<T4>::value 
+        + is_vector_arg<T5>::value + is_vector_arg<T6>::value 
+        + is_vector_arg<T7>::value + is_vector_arg<T8>::value 
+        + is_vector_arg<T9>::value + is_vector_arg<T10>::value 
+        + is_vector_arg<T11>::value + is_vector_arg<T12>::value 
+        + is_vector_arg<T13>::value + is_vector_arg<T14>::value 
+        + is_vector_arg<T15>::value + is_vector_arg<T16>::value 
+        + is_vector_arg<T17>::value + is_vector_arg<T18>::value 
+        + is_vector_arg<T19>::value + is_vector_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector_impl
+{
+    typedef aux::vector_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::vector_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector
+    : aux::vector_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::vector_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
new file mode 100644
index 0000000..7e645b9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector1_c<
+              T, T(C0)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector2_c<
+              T, T(C0), T(C1)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector3_c<
+              T, T(C0), T(C1), T(C2)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector4_c<
+              T, T(C0), T(C1), T(C2), T(C3)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector5_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector6_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector7_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector8_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector9_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector10_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector11_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector12_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector13_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector14_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector15_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector16_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector17_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector18_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector19_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector20_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_vector_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_vector_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct vector_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value 
+        + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value 
+        + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value 
+        + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value 
+        + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value 
+        + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value 
+        + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value 
+        + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value 
+        + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value 
+        + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c_impl
+{
+    typedef aux::vector_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::vector_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c
+    : aux::vector_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::vector_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp
new file mode 100644
index 0000000..618f074
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp
@@ -0,0 +1,71 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct and_impl
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : false_
+    {
+    };
+};
+
+template<> struct and_impl<true>
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : and_impl<
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< T2,T3,T4,true_ >
+    {
+    };
+
+    template<> struct result_< true_,true_,true_,true_ >
+        : true_
+    {
+    };
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< T2,T3,T4,T5 >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp
new file mode 100644
index 0000000..99f1c71
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp
@@ -0,0 +1,160 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply0<int>
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply1< int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply2< int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply3< int,int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply4< int,int,int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// workaround for ETI bug
+template<>
+struct apply5< int,int,int,int,int,int >
+{
+    typedef int type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp
new file mode 100644
index 0000000..f2a9a76
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp
new file mode 100644
index 0000000..4fd2f04
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp
@@ -0,0 +1,138 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+
+    , typename has_apply_ = typename aux::has_apply<F>::type
+
+    >
+struct apply_wrap0
+
+{
+    typedef typename F::template apply<
+        
+        >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap0<int>
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1
+
+    >
+struct apply_wrap1
+
+{
+    typedef typename F::template apply<
+         T1
+        >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap1< int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2
+
+    >
+struct apply_wrap2
+
+{
+    typedef typename F::template apply<
+         T1, T2
+        >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap2< int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+
+    >
+struct apply_wrap3
+
+{
+    typedef typename F::template apply<
+         T1, T2, T3
+        >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap3< int,int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+
+    >
+struct apply_wrap4
+
+{
+    typedef typename F::template apply<
+         T1, T2, T3, T4
+        >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap4< int,int,int,int,int >
+{
+    typedef int type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+
+    >
+struct apply_wrap5
+
+{
+    typedef typename F::template apply<
+         T1, T2, T3, T4, T5
+        >::type type;
+
+};
+
+/// workaround for ETI bug
+template<>
+struct apply_wrap5< int,int,int,int,int,int >
+{
+    typedef int type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
new file mode 100644
index 0000000..9b68023
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef typename apply_wrap5<
+              T
+            , U1, U2, U3, U4, U5
+            >::type type;
+    };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+    : resolve_arg_impl< is_bind_template<T>::value >
+            ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_  = true >
+struct is_bind_template_impl
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value  = false);
+    };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+                == sizeof(aux::yes_tag)
+            );
+    };
+};
+
+template< typename T > struct is_bind_template
+    : is_bind_template_impl< ::ndnboost::detail::is_reference_impl<T>::value >
+        ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F
+    >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1
+    >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2
+    >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp
new file mode 100644
index 0000000..1c3b8d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp
@@ -0,0 +1,432 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef typename apply_wrap5<
+              T
+            , U1, U2, U3, U4, U5
+            >::type type;
+    };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+    : resolve_arg_impl< is_bind_template<T>::value >
+            ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+    template< typename Arg > struct result_
+    {
+        typedef Arg next;
+        typedef T type;
+    };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg< -1 > >
+{
+    template< typename Arg > struct result_
+    {
+        typedef typename next<Arg>::type next;
+        typedef Arg type;
+    };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+    : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_  = true >
+struct is_bind_template_impl
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value  = false);
+    };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+                == sizeof(aux::yes_tag)
+            );
+    };
+};
+
+template< typename T > struct is_bind_template
+    : is_bind_template_impl< ::ndnboost::detail::is_reference_impl<T>::value >
+        ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F
+    >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1
+    >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2
+    >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp
new file mode 100644
index 0000000..bbd1b6d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp
new file mode 100644
index 0000000..2a14c25
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp
@@ -0,0 +1,151 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct bitand_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitand_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitand_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitand_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , bitand_2< N1,N2 >
+        , bitand_<
+              bitand_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitand_2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          bitand_impl<
+              typename bitand_tag<N1>::type
+            , typename bitand_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitand_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitand_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp
new file mode 100644
index 0000000..22500fd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp
@@ -0,0 +1,151 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct bitor_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitor_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitor_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitor_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , bitor_2< N1,N2 >
+        , bitor_<
+              bitor_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitor_2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          bitor_impl<
+              typename bitor_tag<N1>::type
+            , typename bitor_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitor_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitor_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
new file mode 100644
index 0000000..49eb45c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
@@ -0,0 +1,151 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct bitxor_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitxor_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitxor_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitxor_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , bitxor_2< N1,N2 >
+        , bitxor_<
+              bitxor_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitxor_2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          bitxor_impl<
+              typename bitxor_tag<N1>::type
+            , typename bitxor_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitxor_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitxor_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp
new file mode 100644
index 0000000..8a7e2c3
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct deque_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct deque_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef vector0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_deque_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_deque_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct deque_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_deque_arg<T1>::value + is_deque_arg<T2>::value 
+        + is_deque_arg<T3>::value + is_deque_arg<T4>::value 
+        + is_deque_arg<T5>::value + is_deque_arg<T6>::value 
+        + is_deque_arg<T7>::value + is_deque_arg<T8>::value 
+        + is_deque_arg<T9>::value + is_deque_arg<T10>::value 
+        + is_deque_arg<T11>::value + is_deque_arg<T12>::value 
+        + is_deque_arg<T13>::value + is_deque_arg<T14>::value 
+        + is_deque_arg<T15>::value + is_deque_arg<T16>::value 
+        + is_deque_arg<T17>::value + is_deque_arg<T18>::value 
+        + is_deque_arg<T19>::value + is_deque_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque_impl
+{
+    typedef aux::deque_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::deque_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque
+    : aux::deque_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::deque_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp
new file mode 100644
index 0000000..118cda5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp
@@ -0,0 +1,150 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct divides_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct divides_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct divides_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct divides2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , divides2< N1,N2 >
+        , divides<
+              divides2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct divides2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          divides_impl<
+              typename divides_tag<N1>::type
+            , typename divides_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct divides_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::divides_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
new file mode 100644
index 0000000..06c62ea
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct equal_to_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct equal_to_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct equal_to_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+    : aux::msvc_eti_base< typename apply_wrap2<
+          equal_to_impl<
+              typename equal_to_tag<N1>::type
+            , typename equal_to_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp
new file mode 100644
index 0000000..c4cace4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template< int N >
+struct fold_chunk;
+
+template<> struct fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef state1 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef state2 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef state3 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef state4 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< int N >
+struct fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef fold_impl<
+              4
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , fold_null_step< Last,State >
+            , fold_step< First,Last,State,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_step
+{
+    typedef fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+    : fold_chunk<N>
+        ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
new file mode 100644
index 0000000..de658d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp
new file mode 100644
index 0000000..6145d2b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct greater_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+    : aux::msvc_eti_base< typename apply_wrap2<
+          greater_impl<
+              typename greater_tag<N1>::type
+            , typename greater_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
new file mode 100644
index 0000000..efaa97b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct greater_equal_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_equal_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_equal_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+    : aux::msvc_eti_base< typename apply_wrap2<
+          greater_equal_impl<
+              typename greater_equal_tag<N1>::type
+            , typename greater_equal_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp
new file mode 100644
index 0000000..12328f7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T1, T2
+    {
+        typedef Derived type_;
+    };
+};
+
+template<>
+struct inherit2_impl< false,true >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T1
+    {
+        typedef T1 type_;
+    };
+};
+
+template<>
+struct inherit2_impl< true,false >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T2
+    {
+        typedef T2 type_;
+    };
+};
+
+template<>
+struct inherit2_impl< true,true >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+    {
+        typedef T1 type_;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : aux::inherit2_impl<
+          is_empty_base<T1>::value
+        , is_empty_base<T2>::value
+        >::template result_< inherit2< T1,T2 >,T1, T2 >
+{
+    typedef typename inherit2::type_ type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp
new file mode 100644
index 0000000..e1a45fe
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template< int N >
+struct iter_fold_chunk;
+
+template<> struct iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef state1 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef state2 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef state3 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef state4 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< int N >
+struct iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef iter_fold_impl<
+              4
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , iter_fold_null_step< Last,State >
+            , iter_fold_step< First,Last,State,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_step
+{
+    typedef iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+    : iter_fold_chunk<N>
+        ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp
new file mode 100644
index 0000000..b79a010
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct less_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+    : aux::msvc_eti_base< typename apply_wrap2<
+          less_impl<
+              typename less_tag<N1>::type
+            , typename less_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N2)::value >
+             BOOST_MPL_AUX_VALUE_WKND(N1)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
new file mode 100644
index 0000000..f2e2b32
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct less_equal_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_equal_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_equal_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+    : aux::msvc_eti_base< typename apply_wrap2<
+          less_equal_impl<
+              typename less_equal_tag<N1>::type
+            , typename less_equal_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp
new file mode 100644
index 0000000..63062d2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef list0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_list_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_list_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct list_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_list_arg<T1>::value + is_list_arg<T2>::value 
+        + is_list_arg<T3>::value + is_list_arg<T4>::value 
+        + is_list_arg<T5>::value + is_list_arg<T6>::value 
+        + is_list_arg<T7>::value + is_list_arg<T8>::value 
+        + is_list_arg<T9>::value + is_list_arg<T10>::value 
+        + is_list_arg<T11>::value + is_list_arg<T12>::value 
+        + is_list_arg<T13>::value + is_list_arg<T14>::value 
+        + is_list_arg<T15>::value + is_list_arg<T16>::value 
+        + is_list_arg<T17>::value + is_list_arg<T18>::value 
+        + is_list_arg<T19>::value + is_list_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list_impl
+{
+    typedef aux::list_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::list_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list
+    : aux::list_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::list_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp
new file mode 100644
index 0000000..010f92e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list1_c<
+              T, C0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list2_c<
+              T, C0, C1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list3_c<
+              T, C0, C1, C2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list4_c<
+              T, C0, C1, C2, C3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list5_c<
+              T, C0, C1, C2, C3, C4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list6_c<
+              T, C0, C1, C2, C3, C4, C5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list7_c<
+              T, C0, C1, C2, C3, C4, C5, C6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list8_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list9_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list10_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list11_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list12_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list13_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list14_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list15_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list16_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list17_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list18_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list19_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list20_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_list_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_list_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct list_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_list_c_arg<C1>::value + is_list_c_arg<C2>::value 
+        + is_list_c_arg<C3>::value + is_list_c_arg<C4>::value 
+        + is_list_c_arg<C5>::value + is_list_c_arg<C6>::value 
+        + is_list_c_arg<C7>::value + is_list_c_arg<C8>::value 
+        + is_list_c_arg<C9>::value + is_list_c_arg<C10>::value 
+        + is_list_c_arg<C11>::value + is_list_c_arg<C12>::value 
+        + is_list_c_arg<C13>::value + is_list_c_arg<C14>::value 
+        + is_list_c_arg<C15>::value + is_list_c_arg<C16>::value 
+        + is_list_c_arg<C17>::value + is_list_c_arg<C18>::value 
+        + is_list_c_arg<C19>::value + is_list_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c_impl
+{
+    typedef aux::list_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::list_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c
+    : aux::list_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::list_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp
new file mode 100644
index 0000000..3066603
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct map_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct map_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef map0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_map_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_map_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct map_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_map_arg<T1>::value + is_map_arg<T2>::value 
+        + is_map_arg<T3>::value + is_map_arg<T4>::value 
+        + is_map_arg<T5>::value + is_map_arg<T6>::value 
+        + is_map_arg<T7>::value + is_map_arg<T8>::value 
+        + is_map_arg<T9>::value + is_map_arg<T10>::value 
+        + is_map_arg<T11>::value + is_map_arg<T12>::value 
+        + is_map_arg<T13>::value + is_map_arg<T14>::value 
+        + is_map_arg<T15>::value + is_map_arg<T16>::value 
+        + is_map_arg<T17>::value + is_map_arg<T18>::value 
+        + is_map_arg<T19>::value + is_map_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map_impl
+{
+    typedef aux::map_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::map_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map
+    : aux::map_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::map_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp
new file mode 100644
index 0000000..910202d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp
@@ -0,0 +1,150 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct minus_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct minus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct minus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct minus2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , minus2< N1,N2 >
+        , minus<
+              minus2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct minus2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          minus_impl<
+              typename minus_tag<N1>::type
+            , typename minus_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct minus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::minus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp
new file mode 100644
index 0000000..bb8abf5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp
@@ -0,0 +1,115 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct modulus_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct modulus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct modulus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+    : aux::msvc_eti_base< typename apply_wrap2<
+          modulus_impl<
+              typename modulus_tag<N1>::type
+            , typename modulus_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct modulus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::modulus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
new file mode 100644
index 0000000..ac8d660
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
@@ -0,0 +1,102 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct not_equal_to_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct not_equal_to_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+    : aux::msvc_eti_base< typename apply_wrap2<
+          not_equal_to_impl<
+              typename not_equal_to_tag<N1>::type
+            , typename not_equal_to_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp
new file mode 100644
index 0000000..5beec9e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp
@@ -0,0 +1,71 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct or_impl
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : true_
+    {
+    };
+};
+
+template<> struct or_impl<false>
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : or_impl<
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< T2,T3,T4,false_ >
+    {
+    };
+
+    template<> struct result_< false_,false_,false_,false_ >
+        : false_
+    {
+    };
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< T2,T3,T4,T5 >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp
new file mode 100644
index 0000000..32c3317
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp
@@ -0,0 +1,150 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct plus_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct plus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct plus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct plus2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , plus2< N1,N2 >
+        , plus<
+              plus2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct plus2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          plus_impl<
+              typename plus_tag<N1>::type
+            , typename plus_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct plus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::plus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/quote.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/quote.hpp
new file mode 100644
index 0000000..62598cb
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/quote.hpp
@@ -0,0 +1,116 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+template< bool > struct quote_impl
+{
+    template< typename T > struct result_
+        : T
+    {
+    };
+};
+
+template<> struct quote_impl<false>
+{
+    template< typename T > struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+        : quote_impl< aux::has_type< F<U1> >::value >
+            ::template result_< F<U1> >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2 > >::value >
+            ::template result_< F< U1,U2 > >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2,U3 > >::value >
+            ::template result_< F< U1,U2,U3 > >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2,U3,U4 > >::value >
+            ::template result_< F< U1,U2,U3,U4 > >
+
+    {
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2,U3,U4,U5 > >::value >
+            ::template result_< F< U1,U2,U3,U4,U5 > >
+
+    {
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp
new file mode 100644
index 0000000..2c6c173
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_fold_null_step< Last,State >
+            , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step
+{
+    typedef reverse_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+    : reverse_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..57cc688
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_iter_fold_null_step< Last,State >
+            , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step
+{
+    typedef reverse_iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+    : reverse_iter_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp
new file mode 100644
index 0000000..e964879
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef set0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_set_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_set_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct set_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_set_arg<T1>::value + is_set_arg<T2>::value 
+        + is_set_arg<T3>::value + is_set_arg<T4>::value 
+        + is_set_arg<T5>::value + is_set_arg<T6>::value 
+        + is_set_arg<T7>::value + is_set_arg<T8>::value 
+        + is_set_arg<T9>::value + is_set_arg<T10>::value 
+        + is_set_arg<T11>::value + is_set_arg<T12>::value 
+        + is_set_arg<T13>::value + is_set_arg<T14>::value 
+        + is_set_arg<T15>::value + is_set_arg<T16>::value 
+        + is_set_arg<T17>::value + is_set_arg<T18>::value 
+        + is_set_arg<T19>::value + is_set_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set_impl
+{
+    typedef aux::set_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::set_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set
+    : aux::set_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::set_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp
new file mode 100644
index 0000000..a9a9b18
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set1_c<
+              T, C0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set2_c<
+              T, C0, C1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set3_c<
+              T, C0, C1, C2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set4_c<
+              T, C0, C1, C2, C3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set5_c<
+              T, C0, C1, C2, C3, C4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set6_c<
+              T, C0, C1, C2, C3, C4, C5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set7_c<
+              T, C0, C1, C2, C3, C4, C5, C6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set8_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set9_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set10_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set11_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set12_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set13_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set14_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set15_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set16_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set17_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set18_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set19_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set20_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_set_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_set_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct set_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_set_c_arg<C1>::value + is_set_c_arg<C2>::value 
+        + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value 
+        + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value 
+        + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value 
+        + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value 
+        + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value 
+        + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value 
+        + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value 
+        + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value 
+        + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c_impl
+{
+    typedef aux::set_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::set_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c
+    : aux::set_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::set_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
new file mode 100644
index 0000000..8e7b606
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct shift_left_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_left_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_left_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+    : aux::msvc_eti_base< typename apply_wrap2<
+          shift_left_impl<
+              typename shift_left_tag<N1>::type
+            , typename shift_left_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_left_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n << s));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+        : aux::shift_left_wknd<
+              typename N::value_type
+            , typename S::value_type
+            , N::value
+            , S::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
new file mode 100644
index 0000000..991abc9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
@@ -0,0 +1,114 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct shift_right_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_right_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_right_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+    : tag< T,na >
+{
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+    : aux::msvc_eti_base< typename apply_wrap2<
+          shift_right_impl<
+              typename shift_right_tag<N1>::type
+            , typename shift_right_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_right_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n >> s));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+        : aux::shift_right_wknd<
+              typename N::value_type
+            , typename S::value_type
+            , N::value
+            , S::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/template_arity.hpp
new file mode 100644
index 0000000..d31dba4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/template_arity.hpp
@@ -0,0 +1,46 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+template<>
+struct template_arity<int>
+    : mpl::int_< -1 >
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp
new file mode 100644
index 0000000..0be0e9c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp
@@ -0,0 +1,150 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , BOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = BOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
+    >
+struct times_impl
+    : if_c<
+          ( tag1_ > tag2_ )
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct times_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct times_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+    : tag< T,na >
+{
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct times2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+
+    : aux::msvc_eti_base< typename if_<
+
+          is_na<N3>
+        , times2< N1,N2 >
+        , times<
+              times2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+    >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct times2
+    : aux::msvc_eti_base< typename apply_wrap2<
+          times_impl<
+              typename times_tag<N1>::type
+            , typename times_tag<N2>::type
+            >
+        , N1
+        , N2
+        >::type >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct times_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::times_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
new file mode 100644
index 0000000..bee7472
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
@@ -0,0 +1,109 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+{
+    template< typename F, typename Args > struct apply;
+};
+
+template<> struct unpack_args_impl<0>
+{
+    template< typename F, typename Args > struct apply
+        : apply0<
+              F
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<1>
+{
+    template< typename F, typename Args > struct apply
+        : apply1<
+              F
+            , typename at_c< Args,0 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<2>
+{
+    template< typename F, typename Args > struct apply
+        : apply2<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<3>
+{
+    template< typename F, typename Args > struct apply
+        : apply3<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<4>
+{
+    template< typename F, typename Args > struct apply
+        : apply4<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<5>
+{
+    template< typename F, typename Args > struct apply
+        : apply5<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+            , typename at_c< Args,4 >::type
+            >
+    {
+    };
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value >
+            ::template apply< F,Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp
new file mode 100644
index 0000000..bdee923
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef vector0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_vector_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_vector_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct vector_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_vector_arg<T1>::value + is_vector_arg<T2>::value 
+        + is_vector_arg<T3>::value + is_vector_arg<T4>::value 
+        + is_vector_arg<T5>::value + is_vector_arg<T6>::value 
+        + is_vector_arg<T7>::value + is_vector_arg<T8>::value 
+        + is_vector_arg<T9>::value + is_vector_arg<T10>::value 
+        + is_vector_arg<T11>::value + is_vector_arg<T12>::value 
+        + is_vector_arg<T13>::value + is_vector_arg<T14>::value 
+        + is_vector_arg<T15>::value + is_vector_arg<T16>::value 
+        + is_vector_arg<T17>::value + is_vector_arg<T18>::value 
+        + is_vector_arg<T19>::value + is_vector_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector_impl
+{
+    typedef aux::vector_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::vector_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector
+    : aux::vector_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::vector_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
new file mode 100644
index 0000000..7e645b9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector1_c<
+              T, T(C0)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector2_c<
+              T, T(C0), T(C1)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector3_c<
+              T, T(C0), T(C1), T(C2)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector4_c<
+              T, T(C0), T(C1), T(C2), T(C3)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector5_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector6_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector7_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector8_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector9_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector10_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector11_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector12_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector13_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector14_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector15_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector16_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector17_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector18_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector19_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector20_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_vector_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_vector_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct vector_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value 
+        + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value 
+        + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value 
+        + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value 
+        + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value 
+        + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value 
+        + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value 
+        + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value 
+        + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value 
+        + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c_impl
+{
+    typedef aux::vector_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::vector_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c
+    : aux::vector_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::vector_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp
new file mode 100644
index 0000000..24b88d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp
new file mode 100644
index 0000000..e4b1cd2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp
new file mode 100644
index 0000000..bccc94e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp
new file mode 100644
index 0000000..4d03907
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp
@@ -0,0 +1,456 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      int N, typename F
+    >
+struct apply_wrap_impl0;
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          0
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+/// since the defaults are "lost", we have to pass *something* even for nullary
+/// metafunction classes
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          1
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          2
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          3
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          4
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap_impl0<
+          5
+        , F
+       
+        >
+{
+    typedef typename F::template apply<
+         
+        na, na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F
+    >
+struct apply_wrap0
+    : apply_wrap_impl0<
+          ::ndnboost::mpl::aux::arity< F,0 >::value
+        , F
+       
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1
+    >
+struct apply_wrap_impl1;
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          1
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          2
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          3
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          4
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap_impl1<
+          5
+        , F
+        , T1
+        >
+{
+    typedef typename F::template apply<
+          T1
+        , na, na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply_wrap1
+    : apply_wrap_impl1<
+          ::ndnboost::mpl::aux::arity< F,1 >::value
+        , F
+        , T1
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          2
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          3
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          4
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap_impl2<
+          5
+        , F
+        , T1, T2
+        >
+{
+    typedef typename F::template apply<
+          T1, T2
+
+        , na, na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply_wrap2
+    : apply_wrap_impl2<
+          ::ndnboost::mpl::aux::arity< F,2 >::value
+        , F
+        , T1, T2
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          3
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          4
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap_impl3<
+          5
+        , F
+        , T1, T2, T3
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3
+
+        , na, na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply_wrap3
+    : apply_wrap_impl3<
+          ::ndnboost::mpl::aux::arity< F,3 >::value
+        , F
+        , T1, T2, T3
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          4
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap_impl4<
+          5
+        , F
+        , T1, T2, T3, T4
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4
+
+        , na
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply_wrap4
+    : apply_wrap_impl4<
+          ::ndnboost::mpl::aux::arity< F,4 >::value
+        , F
+        , T1, T2, T3, T4
+        >::type
+{
+};
+
+template<
+      int N, typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap_impl5<
+          5
+        , F
+        , T1, T2, T3, T4, T5
+        >
+{
+    typedef typename F::template apply<
+          T1, T2, T3, T4, T5
+
+        > type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply_wrap5
+    : apply_wrap_impl5<
+          ::ndnboost::mpl::aux::arity< F,5 >::value
+        , F
+        , T1, T2, T3, T4, T5
+        >::type
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
new file mode 100644
index 0000000..a2a565e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
@@ -0,0 +1,440 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+template<
+      template< typename T1, typename T2, typename T3 > class F, typename Tag
+    >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< eval_if,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename eval_if<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp
new file mode 100644
index 0000000..f2cde5a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp
@@ -0,0 +1,561 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+template<
+      template< typename T1, typename T2, typename T3 > class F, typename Tag
+    >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< eval_if,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename eval_if<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp
new file mode 100644
index 0000000..9a046ee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct bind;
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp
new file mode 100644
index 0000000..90e8593
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp
new file mode 100644
index 0000000..c71a8f4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
new file mode 100644
index 0000000..b7f0ce7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
@@ -0,0 +1,147 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/deque.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/deque.hpp
new file mode 100644
index 0000000..4631f66
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp
new file mode 100644
index 0000000..0f5415c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
new file mode 100644
index 0000000..0d02da4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp
new file mode 100644
index 0000000..494cd41
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
new file mode 100644
index 0000000..de658d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp
new file mode 100644
index 0000000..e05fa3c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
new file mode 100644
index 0000000..f89a587
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp
new file mode 100644
index 0000000..41f387f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp
new file mode 100644
index 0000000..cc08b30
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp
new file mode 100644
index 0000000..7139b79
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
new file mode 100644
index 0000000..f7c3491
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/list.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/list.hpp
new file mode 100644
index 0000000..8cc8c46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/list_c.hpp
new file mode 100644
index 0000000..e43f38f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/map.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/map.hpp
new file mode 100644
index 0000000..7974f28
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp
new file mode 100644
index 0000000..ae6b592
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp
new file mode 100644
index 0000000..89c6172
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
new file mode 100644
index 0000000..b28e100
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp
new file mode 100644
index 0000000..e929602
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp
new file mode 100644
index 0000000..de03e3e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/quote.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/quote.hpp
new file mode 100644
index 0000000..8ce79ed
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/quote.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+    : T
+{
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+    typedef T type;
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+        : quote_impl<
+              F<U1>
+            , aux::has_type< F<U1> >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+        : quote_impl<
+              F< U1,U2 >
+            , aux::has_type< F< U1,U2 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+        : quote_impl<
+              F< U1,U2,U3 >
+            , aux::has_type< F< U1,U2,U3 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4 >
+            , aux::has_type< F< U1,U2,U3,U4 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4,U5 >
+            , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+            >
+
+    {
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7d3ad75
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..33bf508
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/set.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/set.hpp
new file mode 100644
index 0000000..4c4ca11
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/set_c.hpp
new file mode 100644
index 0000000..bef2fde
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
new file mode 100644
index 0000000..c8df29c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
new file mode 100644
index 0000000..a726ff1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/template_arity.hpp
new file mode 100644
index 0000000..6cb42ae
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/template_arity.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp
new file mode 100644
index 0000000..f4514e5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp
@@ -0,0 +1,146 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
new file mode 100644
index 0000000..9c9204f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/vector.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/vector.hpp
new file mode 100644
index 0000000..df67589
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/mwcw/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/mwcw/vector_c.hpp
new file mode 100644
index 0000000..e2fbdb4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/mwcw/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp
new file mode 100644
index 0000000..2ae4e3b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp
@@ -0,0 +1,73 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct and_impl
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : false_
+    {
+    };
+};
+
+template<> struct and_impl<true>
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : and_impl<
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< T2,T3,T4,true_ >
+    {
+    };
+};
+
+template<>
+struct and_impl<true>
+    ::result_< true_,true_,true_,true_ >
+        : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< T2,T3,T4,T5 >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp
new file mode 100644
index 0000000..1386c6e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp
@@ -0,0 +1,268 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<0>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef apply0<
+              F
+            > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<1>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef apply1<
+              F, T1
+            > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<2>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef apply2<
+              F, T1, T2
+            > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<3>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef apply3<
+              F, T1, T2, T3
+            > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<4>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef apply4<
+              F, T1, T2, T3, T4
+            > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+namespace aux {
+
+template<>
+struct apply_chooser<5>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef apply5<
+              F, T1, T2, T3, T4, T5
+            > type;
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_apply_arg
+{
+    static bool const value  = true;
+};
+
+template<>
+struct is_apply_arg<na>
+{
+    static bool const value  = false;
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    >
+struct apply_count_args
+{
+    static int const value  = is_apply_arg<T1>::value + is_apply_arg<T2>::value + is_apply_arg<T3>::value + is_apply_arg<T4>::value + is_apply_arg<T5>::value;
+
+};
+
+}
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply
+    : aux::apply_chooser<
+          aux::apply_count_args< T1,T2,T3,T4,T5 >::value
+        >::template result_< F,T1,T2,T3,T4,T5 >::type
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
new file mode 100644
index 0000000..d5be947
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
@@ -0,0 +1,50 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
+}
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp
new file mode 100644
index 0000000..55cbd56
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp
@@ -0,0 +1,78 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+
+    , typename has_apply_ = typename aux::has_apply<F>::type
+
+    >
+struct apply_wrap0
+
+    : F::template apply<  >
+{
+};
+
+template<
+      typename F, typename T1
+
+    >
+struct apply_wrap1
+
+    : F::template apply<T1>
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+
+    >
+struct apply_wrap2
+
+    : F::template apply< T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+
+    >
+struct apply_wrap3
+
+    : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+
+    >
+struct apply_wrap4
+
+    : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+
+    >
+struct apply_wrap5
+
+    : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
new file mode 100644
index 0000000..a0fd1e8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
@@ -0,0 +1,486 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef typename apply_wrap5<
+              T
+            , U1, U2, U3, U4, U5
+            >::type type;
+    };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+    : resolve_arg_impl< is_bind_template<T>::value >
+            ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag is_bind_helper(bind< F,T1,T2,T3,T4,T5 >*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_  = true >
+struct is_bind_template_impl
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value  = false);
+    };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+                == sizeof(aux::yes_tag)
+            );
+    };
+};
+
+template< typename T > struct is_bind_template
+    : is_bind_template_impl< ::ndnboost::detail::is_reference_impl<T>::value >
+        ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F
+    >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+namespace aux {
+
+template<>
+struct bind_chooser<0>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind0<F> type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1
+    >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+namespace aux {
+
+template<>
+struct bind_chooser<1>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind1< F,T1 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2
+    >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+namespace aux {
+
+template<>
+struct bind_chooser<2>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind2< F,T1,T2 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+namespace aux {
+
+template<>
+struct bind_chooser<3>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind3< F,T1,T2,T3 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+namespace aux {
+
+template<>
+struct bind_chooser<4>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind4< F,T1,T2,T3,T4 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+namespace aux {
+
+template<>
+struct bind_chooser<5>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind5< F,T1,T2,T3,T4,T5 > type;
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_bind_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_bind_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    >
+struct bind_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_bind_arg<T1>::value + is_bind_arg<T2>::value 
+        + is_bind_arg<T3>::value + is_bind_arg<T4>::value 
+        + is_bind_arg<T5>::value
+        );
+
+};
+
+}
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : aux::bind_chooser<
+          aux::bind_count_args< T1,T2,T3,T4,T5 >::value
+        >::template result_< F,T1,T2,T3,T4,T5 >::type
+{
+};
+
+BOOST_MPL_AUX_ARITY_SPEC(
+      6
+    , bind
+    )
+
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+      6
+    , bind
+    )
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp
new file mode 100644
index 0000000..904c64f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp
@@ -0,0 +1,590 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool >
+struct resolve_arg_impl
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<>
+struct resolve_arg_impl<true>
+{
+    template<
+          typename T, typename U1, typename U2, typename U3
+        , typename U4, typename U5
+        >
+    struct result_
+    {
+        typedef typename apply_wrap5<
+              T
+            , U1, U2, U3, U4, U5
+            >::type type;
+    };
+};
+
+template< typename T > struct is_bind_template;
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+    : resolve_arg_impl< is_bind_template<T>::value >
+            ::template result_< T,U1,U2,U3,U4,U5 >
+{
+};
+
+template< typename T >
+struct replace_unnamed_arg_impl
+{
+    template< typename Arg > struct result_
+    {
+        typedef Arg next;
+        typedef T type;
+    };
+};
+
+template<>
+struct replace_unnamed_arg_impl< arg< -1 > >
+{
+    template< typename Arg > struct result_
+    {
+        typedef typename next<Arg>::type next;
+        typedef Arg type;
+    };
+};
+
+template< typename T, typename Arg >
+struct replace_unnamed_arg
+    : replace_unnamed_arg_impl<T>::template result_<Arg>
+{
+};
+
+template< int arity_ > struct bind_chooser;
+
+aux::no_tag is_bind_helper(...);
+template< typename T > aux::no_tag is_bind_helper(protect<T>*);
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag is_bind_helper(bind< F,T1,T2,T3,T4,T5 >*);
+
+template< int N >
+aux::yes_tag is_bind_helper(arg<N>*);
+
+template< bool is_ref_  = true >
+struct is_bind_template_impl
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value  = false);
+    };
+};
+
+template<>
+struct is_bind_template_impl<false>
+{
+    template< typename T > struct result_
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
+                == sizeof(aux::yes_tag)
+            );
+    };
+};
+
+template< typename T > struct is_bind_template
+    : is_bind_template_impl< ::ndnboost::detail::is_reference_impl<T>::value >
+        ::template result_<T>
+{
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F
+    >
+aux::yes_tag
+is_bind_helper(bind0<F>*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+namespace aux {
+
+template<>
+struct bind_chooser<0>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind0<F> type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1
+    >
+aux::yes_tag
+is_bind_helper(bind1< F,T1 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+namespace aux {
+
+template<>
+struct bind_chooser<1>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind1< F,T1 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2
+    >
+aux::yes_tag
+is_bind_helper(bind2< F,T1,T2 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+namespace aux {
+
+template<>
+struct bind_chooser<2>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind2< F,T1,T2 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+aux::yes_tag
+is_bind_helper(bind3< F,T1,T2,T3 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+namespace aux {
+
+template<>
+struct bind_chooser<3>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind3< F,T1,T2,T3 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+aux::yes_tag
+is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+namespace aux {
+
+template<>
+struct bind_chooser<4>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind4< F,T1,T2,T3,T4 > type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+aux::yes_tag
+is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+namespace aux {
+
+template<>
+struct bind_chooser<5>
+{
+    template<
+          typename F, typename T1, typename T2, typename T3, typename T4
+        , typename T5
+        >
+    struct result_
+    {
+        typedef bind5< F,T1,T2,T3,T4,T5 > type;
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_bind_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_bind_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    >
+struct bind_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_bind_arg<T1>::value + is_bind_arg<T2>::value 
+        + is_bind_arg<T3>::value + is_bind_arg<T4>::value 
+        + is_bind_arg<T5>::value
+        );
+
+};
+
+}
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : aux::bind_chooser<
+          aux::bind_count_args< T1,T2,T3,T4,T5 >::value
+        >::template result_< F,T1,T2,T3,T4,T5 >::type
+{
+};
+
+BOOST_MPL_AUX_ARITY_SPEC(
+      6
+    , bind
+    )
+
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+      6
+    , bind
+    )
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp
new file mode 100644
index 0000000..9a046ee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct bind;
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
new file mode 100644
index 0000000..23dfcbc
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
@@ -0,0 +1,134 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitand_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitand_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitand_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+
+    : if_<
+
+          is_na<N3>
+        , bitand_2< N1,N2 >
+        , bitand_<
+              bitand_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitand_2
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
new file mode 100644
index 0000000..ff6221a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
@@ -0,0 +1,134 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitor_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitor_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitor_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+
+    : if_<
+
+          is_na<N3>
+        , bitor_2< N1,N2 >
+        , bitor_<
+              bitor_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitor_2
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
new file mode 100644
index 0000000..60d2a26
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
@@ -0,0 +1,134 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitxor_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct bitxor_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct bitxor_2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+
+    : if_<
+
+          is_na<N3>
+        , bitxor_2< N1,N2 >
+        , bitxor_<
+              bitxor_2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct bitxor_2
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp
new file mode 100644
index 0000000..8a7e2c3
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct deque_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct deque_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef vector0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct deque_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_deque_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_deque_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct deque_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_deque_arg<T1>::value + is_deque_arg<T2>::value 
+        + is_deque_arg<T3>::value + is_deque_arg<T4>::value 
+        + is_deque_arg<T5>::value + is_deque_arg<T6>::value 
+        + is_deque_arg<T7>::value + is_deque_arg<T8>::value 
+        + is_deque_arg<T9>::value + is_deque_arg<T10>::value 
+        + is_deque_arg<T11>::value + is_deque_arg<T12>::value 
+        + is_deque_arg<T13>::value + is_deque_arg<T14>::value 
+        + is_deque_arg<T15>::value + is_deque_arg<T16>::value 
+        + is_deque_arg<T17>::value + is_deque_arg<T18>::value 
+        + is_deque_arg<T19>::value + is_deque_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque_impl
+{
+    typedef aux::deque_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::deque_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque
+    : aux::deque_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::deque_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp
new file mode 100644
index 0000000..2040b98
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct divides_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct divides_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct divides2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+
+    : if_<
+
+          is_na<N3>
+        , divides2< N1,N2 >
+        , divides<
+              divides2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct divides2
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
new file mode 100644
index 0000000..5b456bc
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct equal_to_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct equal_to_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp
new file mode 100644
index 0000000..c4cace4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template< int N >
+struct fold_chunk;
+
+template<> struct fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef state1 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef state2 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef state3 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef state4 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< int N >
+struct fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef fold_impl<
+              4
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , fold_null_step< Last,State >
+            , fold_step< First,Last,State,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_step
+{
+    typedef fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+    : fold_chunk<N>
+        ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
new file mode 100644
index 0000000..de658d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp
new file mode 100644
index 0000000..936836f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
new file mode 100644
index 0000000..c6654b0
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_equal_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct greater_equal_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
new file mode 100644
index 0000000..12328f7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
@@ -0,0 +1,166 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C1, bool C2 >
+struct inherit2_impl
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T1, T2
+    {
+        typedef Derived type_;
+    };
+};
+
+template<>
+struct inherit2_impl< false,true >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T1
+    {
+        typedef T1 type_;
+    };
+};
+
+template<>
+struct inherit2_impl< true,false >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+        : T2
+    {
+        typedef T2 type_;
+    };
+};
+
+template<>
+struct inherit2_impl< true,true >
+{
+    template< typename Derived, typename T1, typename T2 > struct result_
+    {
+        typedef T1 type_;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : aux::inherit2_impl<
+          is_empty_base<T1>::value
+        , is_empty_base<T2>::value
+        >::template result_< inherit2< T1,T2 >,T1, T2 >
+{
+    typedef typename inherit2::type_ type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp
new file mode 100644
index 0000000..e1a45fe
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp
@@ -0,0 +1,245 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template< int N >
+struct iter_fold_chunk;
+
+template<> struct iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef state1 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef state2 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef state3 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State state0;
+        typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef state4 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< int N >
+struct iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef iter_fold_impl<
+              4
+            , First
+            , Last
+            , State
+            , ForwardOp
+            > chunk_;
+
+        typedef iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , typename chunk_::iterator
+            , Last
+            , typename chunk_::state
+            , ForwardOp
+            > res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , iter_fold_null_step< Last,State >
+            , iter_fold_step< First,Last,State,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_step
+{
+    typedef iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        > chunk_;
+
+    typedef typename chunk_::state state;
+    typedef typename chunk_::iterator iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+    : iter_fold_chunk<N>
+        ::template result_< First,Last,State,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp
new file mode 100644
index 0000000..4460cca
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
new file mode 100644
index 0000000..8da1edf
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_equal_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct less_equal_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp
new file mode 100644
index 0000000..63062d2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef list0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename list20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_list_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_list_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct list_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_list_arg<T1>::value + is_list_arg<T2>::value 
+        + is_list_arg<T3>::value + is_list_arg<T4>::value 
+        + is_list_arg<T5>::value + is_list_arg<T6>::value 
+        + is_list_arg<T7>::value + is_list_arg<T8>::value 
+        + is_list_arg<T9>::value + is_list_arg<T10>::value 
+        + is_list_arg<T11>::value + is_list_arg<T12>::value 
+        + is_list_arg<T13>::value + is_list_arg<T14>::value 
+        + is_list_arg<T15>::value + is_list_arg<T16>::value 
+        + is_list_arg<T17>::value + is_list_arg<T18>::value 
+        + is_list_arg<T19>::value + is_list_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list_impl
+{
+    typedef aux::list_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::list_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list
+    : aux::list_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::list_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
new file mode 100644
index 0000000..010f92e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct list_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct list_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list1_c<
+              T, C0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list2_c<
+              T, C0, C1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list3_c<
+              T, C0, C1, C2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list4_c<
+              T, C0, C1, C2, C3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list5_c<
+              T, C0, C1, C2, C3, C4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list6_c<
+              T, C0, C1, C2, C3, C4, C5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list7_c<
+              T, C0, C1, C2, C3, C4, C5, C6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list8_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list9_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list10_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list11_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list12_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list13_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list14_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list15_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list16_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list17_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list18_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list19_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct list_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename list20_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_list_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_list_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct list_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_list_c_arg<C1>::value + is_list_c_arg<C2>::value 
+        + is_list_c_arg<C3>::value + is_list_c_arg<C4>::value 
+        + is_list_c_arg<C5>::value + is_list_c_arg<C6>::value 
+        + is_list_c_arg<C7>::value + is_list_c_arg<C8>::value 
+        + is_list_c_arg<C9>::value + is_list_c_arg<C10>::value 
+        + is_list_c_arg<C11>::value + is_list_c_arg<C12>::value 
+        + is_list_c_arg<C13>::value + is_list_c_arg<C14>::value 
+        + is_list_c_arg<C15>::value + is_list_c_arg<C16>::value 
+        + is_list_c_arg<C17>::value + is_list_c_arg<C18>::value 
+        + is_list_c_arg<C19>::value + is_list_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c_impl
+{
+    typedef aux::list_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::list_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c
+    : aux::list_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::list_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp
new file mode 100644
index 0000000..3066603
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct map_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct map_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef map0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct map_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename map20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_map_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_map_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct map_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_map_arg<T1>::value + is_map_arg<T2>::value 
+        + is_map_arg<T3>::value + is_map_arg<T4>::value 
+        + is_map_arg<T5>::value + is_map_arg<T6>::value 
+        + is_map_arg<T7>::value + is_map_arg<T8>::value 
+        + is_map_arg<T9>::value + is_map_arg<T10>::value 
+        + is_map_arg<T11>::value + is_map_arg<T12>::value 
+        + is_map_arg<T13>::value + is_map_arg<T14>::value 
+        + is_map_arg<T15>::value + is_map_arg<T16>::value 
+        + is_map_arg<T17>::value + is_map_arg<T18>::value 
+        + is_map_arg<T19>::value + is_map_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map_impl
+{
+    typedef aux::map_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::map_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map
+    : aux::map_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::map_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp
new file mode 100644
index 0000000..a615210
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct minus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct minus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct minus2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+
+    : if_<
+
+          is_na<N3>
+        , minus2< N1,N2 >
+        , minus<
+              minus2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct minus2
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
new file mode 100644
index 0000000..a3c75d4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
@@ -0,0 +1,101 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct modulus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct modulus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
new file mode 100644
index 0000000..b8c4a47
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct not_equal_to_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct not_equal_to_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp
new file mode 100644
index 0000000..b0b3a7f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp
@@ -0,0 +1,73 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< bool C_ > struct or_impl
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : true_
+    {
+    };
+};
+
+template<> struct or_impl<false>
+{
+    template<
+          typename T1, typename T2, typename T3, typename T4
+        >
+    struct result_
+        : or_impl<
+              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< T2,T3,T4,false_ >
+    {
+    };
+};
+
+template<>
+struct or_impl<false>
+    ::result_< false_,false_,false_,false_ >
+        : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        >::template result_< T2,T3,T4,T5 >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp
new file mode 100644
index 0000000..2967636
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct plus_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct plus_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct plus2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+
+    : if_<
+
+          is_na<N3>
+        , plus2< N1,N2 >
+        , plus<
+              plus2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct plus2
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/quote.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/quote.hpp
new file mode 100644
index 0000000..62598cb
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/quote.hpp
@@ -0,0 +1,116 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+template< bool > struct quote_impl
+{
+    template< typename T > struct result_
+        : T
+    {
+    };
+};
+
+template<> struct quote_impl<false>
+{
+    template< typename T > struct result_
+    {
+        typedef T type;
+    };
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+        : quote_impl< aux::has_type< F<U1> >::value >
+            ::template result_< F<U1> >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2 > >::value >
+            ::template result_< F< U1,U2 > >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2,U3 > >::value >
+            ::template result_< F< U1,U2,U3 > >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2,U3,U4 > >::value >
+            ::template result_< F< U1,U2,U3,U4 > >
+
+    {
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+        : quote_impl< aux::has_type< F< U1,U2,U3,U4,U5 > >::value >
+            ::template result_< F< U1,U2,U3,U4,U5 > >
+
+    {
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp
new file mode 100644
index 0000000..2c6c173
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template< long N >
+struct reverse_fold_chunk;
+
+template<> struct reverse_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+        typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+        typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+        typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_fold_null_step< Last,State >
+            , reverse_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_step
+{
+    typedef reverse_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+    : reverse_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..57cc688
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp
@@ -0,0 +1,295 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template< long N >
+struct reverse_iter_fold_chunk;
+
+template<> struct reverse_iter_fold_chunk<0>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef fwd_state0 bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter0 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        
+
+        typedef fwd_state1 bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        typedef bkwd_state0 state;
+        typedef iter1 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<2>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        
+
+        typedef fwd_state2 bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter2 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<3>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        
+
+        typedef fwd_state3 bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter3 iterator;
+    };
+};
+
+template<> struct reverse_iter_fold_chunk<4>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef fwd_state4 bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef iter4 iterator;
+    };
+};
+
+template< long N >
+struct reverse_iter_fold_chunk
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+        typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+        typedef typename mpl::next<iter0>::type iter1;
+        typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+        typedef typename mpl::next<iter1>::type iter2;
+        typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+        typedef typename mpl::next<iter2>::type iter3;
+        typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+        typedef typename mpl::next<iter3>::type iter4;
+        
+
+        typedef reverse_iter_fold_impl<
+              ( (N - 4) < 0 ? 0 : N - 4 )
+            , iter4
+            , Last
+            , fwd_state4
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+
+        typedef typename nested_chunk::state bkwd_state4;
+        typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+        typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+        typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+        typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+        
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step;
+
+template<
+      typename Last
+    , typename State
+    >
+struct reverse_iter_fold_null_step
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<>
+struct reverse_iter_fold_chunk< -1 >
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same< First,Last >::type
+            , reverse_iter_fold_null_step< Last,State >
+            , reverse_iter_fold_step< First,Last,State,BackwardOp,ForwardOp >
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_step
+{
+    typedef reverse_iter_fold_chunk< -1 >::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+    : reverse_iter_fold_chunk<N>
+        ::template result_< First,Last,State,BackwardOp,ForwardOp >
+{
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp
new file mode 100644
index 0000000..e964879
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef set0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename set20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_set_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_set_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct set_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_set_arg<T1>::value + is_set_arg<T2>::value 
+        + is_set_arg<T3>::value + is_set_arg<T4>::value 
+        + is_set_arg<T5>::value + is_set_arg<T6>::value 
+        + is_set_arg<T7>::value + is_set_arg<T8>::value 
+        + is_set_arg<T9>::value + is_set_arg<T10>::value 
+        + is_set_arg<T11>::value + is_set_arg<T12>::value 
+        + is_set_arg<T13>::value + is_set_arg<T14>::value 
+        + is_set_arg<T15>::value + is_set_arg<T16>::value 
+        + is_set_arg<T17>::value + is_set_arg<T18>::value 
+        + is_set_arg<T19>::value + is_set_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set_impl
+{
+    typedef aux::set_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::set_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set
+    : aux::set_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::set_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
new file mode 100644
index 0000000..a9a9b18
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct set_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct set_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set1_c<
+              T, C0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set2_c<
+              T, C0, C1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set3_c<
+              T, C0, C1, C2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set4_c<
+              T, C0, C1, C2, C3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set5_c<
+              T, C0, C1, C2, C3, C4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set6_c<
+              T, C0, C1, C2, C3, C4, C5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set7_c<
+              T, C0, C1, C2, C3, C4, C5, C6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set8_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set9_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set10_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set11_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set12_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set13_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set14_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set15_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set16_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set17_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set18_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set19_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct set_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename set20_c<
+              T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_set_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_set_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct set_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_set_c_arg<C1>::value + is_set_c_arg<C2>::value 
+        + is_set_c_arg<C3>::value + is_set_c_arg<C4>::value 
+        + is_set_c_arg<C5>::value + is_set_c_arg<C6>::value 
+        + is_set_c_arg<C7>::value + is_set_c_arg<C8>::value 
+        + is_set_c_arg<C9>::value + is_set_c_arg<C10>::value 
+        + is_set_c_arg<C11>::value + is_set_c_arg<C12>::value 
+        + is_set_c_arg<C13>::value + is_set_c_arg<C14>::value 
+        + is_set_c_arg<C15>::value + is_set_c_arg<C16>::value 
+        + is_set_c_arg<C17>::value + is_set_c_arg<C18>::value 
+        + is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c_impl
+{
+    typedef aux::set_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::set_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c
+    : aux::set_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::set_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
new file mode 100644
index 0000000..8d6c545
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_left_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_left_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
new file mode 100644
index 0000000..a85eb0e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_right_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct shift_right_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp
new file mode 100644
index 0000000..f50578f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp
new file mode 100644
index 0000000..ecdafc9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct times_impl< na,integral_c_tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template<> struct times_impl< integral_c_tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+/// forward declaration
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct times2;
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+
+    : if_<
+
+          is_na<N3>
+        , times2< N1,N2 >
+        , times<
+              times2< N1,N2 >
+            , N3, N4, N5
+            >
+        >::type
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1
+    , typename N2
+    >
+struct times2
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
new file mode 100644
index 0000000..bee7472
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
@@ -0,0 +1,109 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+{
+    template< typename F, typename Args > struct apply;
+};
+
+template<> struct unpack_args_impl<0>
+{
+    template< typename F, typename Args > struct apply
+        : apply0<
+              F
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<1>
+{
+    template< typename F, typename Args > struct apply
+        : apply1<
+              F
+            , typename at_c< Args,0 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<2>
+{
+    template< typename F, typename Args > struct apply
+        : apply2<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<3>
+{
+    template< typename F, typename Args > struct apply
+        : apply3<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<4>
+{
+    template< typename F, typename Args > struct apply
+        : apply4<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+            >
+    {
+    };
+};
+
+template<> struct unpack_args_impl<5>
+{
+    template< typename F, typename Args > struct apply
+        : apply5<
+              F
+            , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+            , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+            , typename at_c< Args,4 >::type
+            >
+    {
+    };
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value >
+            ::template apply< F,Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp
new file mode 100644
index 0000000..bdee923
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp
@@ -0,0 +1,556 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_chooser<0>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef vector0<
+             
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<1>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector1<
+              T0
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<2>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector2<
+              T0, T1
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<3>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector3<
+              T0, T1, T2
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<4>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector4<
+              T0, T1, T2, T3
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<5>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector5<
+              T0, T1, T2, T3, T4
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<6>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector6<
+              T0, T1, T2, T3, T4, T5
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<7>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector7<
+              T0, T1, T2, T3, T4, T5, T6
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<8>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector8<
+              T0, T1, T2, T3, T4, T5, T6, T7
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<9>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector9<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<10>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector10<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<11>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector11<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<12>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector12<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<13>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector13<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<14>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector14<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<15>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector15<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<16>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector16<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<17>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector17<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<18>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector18<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<19>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector19<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_chooser<20>
+{
+    template<
+          typename T0, typename T1, typename T2, typename T3, typename T4
+        , typename T5, typename T6, typename T7, typename T8, typename T9
+        , typename T10, typename T11, typename T12, typename T13, typename T14
+        , typename T15, typename T16, typename T17, typename T18, typename T19
+        >
+    struct result_
+    {
+        typedef typename vector20<
+              T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< typename T >
+struct is_vector_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_vector_arg<na>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename T6, typename T7, typename T8, typename T9, typename T10
+    , typename T11, typename T12, typename T13, typename T14, typename T15
+    , typename T16, typename T17, typename T18, typename T19, typename T20
+    >
+struct vector_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_vector_arg<T1>::value + is_vector_arg<T2>::value 
+        + is_vector_arg<T3>::value + is_vector_arg<T4>::value 
+        + is_vector_arg<T5>::value + is_vector_arg<T6>::value 
+        + is_vector_arg<T7>::value + is_vector_arg<T8>::value 
+        + is_vector_arg<T9>::value + is_vector_arg<T10>::value 
+        + is_vector_arg<T11>::value + is_vector_arg<T12>::value 
+        + is_vector_arg<T13>::value + is_vector_arg<T14>::value 
+        + is_vector_arg<T15>::value + is_vector_arg<T16>::value 
+        + is_vector_arg<T17>::value + is_vector_arg<T18>::value 
+        + is_vector_arg<T19>::value + is_vector_arg<T20>::value
+        );
+
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector_impl
+{
+    typedef aux::vector_count_args<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        > arg_num_;
+
+    typedef typename aux::vector_chooser< arg_num_::value >
+        ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector
+    : aux::vector_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type
+{
+    typedef typename aux::vector_impl<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
new file mode 100644
index 0000000..7e645b9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
@@ -0,0 +1,534 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< int N >
+struct vector_c_chooser;
+
+}
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<0>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector0_c<
+              T
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<1>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector1_c<
+              T, T(C0)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<2>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector2_c<
+              T, T(C0), T(C1)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<3>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector3_c<
+              T, T(C0), T(C1), T(C2)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<4>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector4_c<
+              T, T(C0), T(C1), T(C2), T(C3)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<5>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector5_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<6>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector6_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<7>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector7_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<8>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector8_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<9>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector9_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<10>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector10_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<11>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector11_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<12>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector12_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<13>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector13_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<14>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector14_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<15>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector15_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<16>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector16_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<17>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector17_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<18>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector18_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<19>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector19_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template<>
+struct vector_c_chooser<20>
+{
+    template<
+          typename T, long C0, long C1, long C2, long C3, long C4, long C5
+        , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+        , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+        >
+    struct result_
+    {
+        typedef typename vector20_c<
+              T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19)
+            >::type type;
+
+    };
+};
+
+} // namespace aux
+
+namespace aux {
+
+template< long C >
+struct is_vector_c_arg
+{
+    BOOST_STATIC_CONSTANT(bool, value  = true);
+};
+
+template<>
+struct is_vector_c_arg<LONG_MAX>
+{
+    BOOST_STATIC_CONSTANT(bool, value  = false);
+};
+
+template<
+      long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
+    , long C9, long C10, long C11, long C12, long C13, long C14, long C15
+    , long C16, long C17, long C18, long C19, long C20
+    >
+struct vector_c_count_args
+{
+    BOOST_STATIC_CONSTANT(int, value =
+          is_vector_c_arg<C1>::value + is_vector_c_arg<C2>::value 
+        + is_vector_c_arg<C3>::value + is_vector_c_arg<C4>::value 
+        + is_vector_c_arg<C5>::value + is_vector_c_arg<C6>::value 
+        + is_vector_c_arg<C7>::value + is_vector_c_arg<C8>::value 
+        + is_vector_c_arg<C9>::value + is_vector_c_arg<C10>::value 
+        + is_vector_c_arg<C11>::value + is_vector_c_arg<C12>::value 
+        + is_vector_c_arg<C13>::value + is_vector_c_arg<C14>::value 
+        + is_vector_c_arg<C15>::value + is_vector_c_arg<C16>::value 
+        + is_vector_c_arg<C17>::value + is_vector_c_arg<C18>::value 
+        + is_vector_c_arg<C19>::value + is_vector_c_arg<C20>::value
+        );
+
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c_impl
+{
+    typedef aux::vector_c_count_args<
+          C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        > arg_num_;
+
+    typedef typename aux::vector_c_chooser< arg_num_::value >
+        ::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c
+    : aux::vector_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type
+{
+    typedef typename aux::vector_c_impl<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
+        >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp
new file mode 100644
index 0000000..24b88d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , and_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp
new file mode 100644
index 0000000..e4b1cd2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp
@@ -0,0 +1,169 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          1
+        , apply0
+        , (F )
+        )
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          2
+        , apply1
+        , (F, T1)
+        )
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , apply2
+        , (F, T1, T2)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , apply3
+        , (F, T1, T2, T3)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , apply4
+        , (F, T1, T2, T3, T4)
+        )
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          6
+        , apply5
+        , (F, T1, T2, T3, T4, T5)
+        )
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp
new file mode 100644
index 0000000..bccc94e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp
new file mode 100644
index 0000000..ec90202
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+
+    , typename has_apply_ = typename aux::has_apply<F>::type
+
+    >
+struct apply_wrap0
+
+    : F::template apply<  >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+    : F::apply
+{
+};
+
+template<
+      typename F, typename T1
+
+    >
+struct apply_wrap1
+
+    : F::template apply<T1>
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+
+    >
+struct apply_wrap2
+
+    : F::template apply< T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+
+    >
+struct apply_wrap3
+
+    : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+
+    >
+struct apply_wrap4
+
+    : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+
+    >
+struct apply_wrap5
+
+    : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
new file mode 100644
index 0000000..5c7f505
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
@@ -0,0 +1,369 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp
new file mode 100644
index 0000000..e686d8e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp
@@ -0,0 +1,466 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp
new file mode 100644
index 0000000..9a046ee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct bind;
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
new file mode 100644
index 0000000..650c7da
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
@@ -0,0 +1,157 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitand_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitand_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
new file mode 100644
index 0000000..6a1d24b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
@@ -0,0 +1,157 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitor_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitor_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
new file mode 100644
index 0000000..bbda869
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
@@ -0,0 +1,157 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct bitxor_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::bitxor_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/deque.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/deque.hpp
new file mode 100644
index 0000000..4631f66
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp
new file mode 100644
index 0000000..eb22a09
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp
@@ -0,0 +1,156 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , divides
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct divides_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::divides_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
new file mode 100644
index 0000000..b900ba1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
@@ -0,0 +1,98 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp
new file mode 100644
index 0000000..494cd41
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
new file mode 100644
index 0000000..de658d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp
new file mode 100644
index 0000000..dce1ae1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp
@@ -0,0 +1,98 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
new file mode 100644
index 0000000..9bdfda5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
@@ -0,0 +1,98 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
new file mode 100644
index 0000000..41f387f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          3
+        , inherit3
+        , ( T1, T2, T3)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          4
+        , inherit4
+        , ( T1, T2, T3, T4)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , inherit5
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp
new file mode 100644
index 0000000..cc08b30
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
new file mode 100644
index 0000000..5bfc661
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
@@ -0,0 +1,229 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp
new file mode 100644
index 0000000..b7fae7c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp
@@ -0,0 +1,98 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N2)::value >
+             BOOST_MPL_AUX_VALUE_WKND(N1)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
new file mode 100644
index 0000000..3a077fb
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
@@ -0,0 +1,98 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/list.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/list.hpp
new file mode 100644
index 0000000..8cc8c46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/list_c.hpp
new file mode 100644
index 0000000..e43f38f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/map.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/map.hpp
new file mode 100644
index 0000000..7974f28
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp
new file mode 100644
index 0000000..fa3eda9
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp
@@ -0,0 +1,156 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , minus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct minus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::minus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
new file mode 100644
index 0000000..bd7fe22
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
@@ -0,0 +1,111 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct modulus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::modulus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
new file mode 100644
index 0000000..39a19aa
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
@@ -0,0 +1,98 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+    {
+        BOOST_STATIC_CONSTANT(bool, value =
+             ( BOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+             BOOST_MPL_AUX_VALUE_WKND(N2)::value )
+            );
+        typedef bool_<value> type;
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp
new file mode 100644
index 0000000..e929602
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp
@@ -0,0 +1,69 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , or_
+        , ( T1, T2, T3, T4, T5)
+        )
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp
new file mode 100644
index 0000000..b4d88db
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp
@@ -0,0 +1,156 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , plus
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct plus_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::plus_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/quote.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/quote.hpp
new file mode 100644
index 0000000..3e77fba
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/quote.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7d3ad75
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..33bf508
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/set.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/set.hpp
new file mode 100644
index 0000000..4c4ca11
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/set_c.hpp
new file mode 100644
index 0000000..bef2fde
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
new file mode 100644
index 0000000..27093f4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
@@ -0,0 +1,110 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_left_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n << s));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+        : aux::shift_left_wknd<
+              typename N::value_type
+            , typename S::value_type
+            , N::value
+            , S::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
new file mode 100644
index 0000000..d4d4100
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
@@ -0,0 +1,110 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, typename Shift, T n, Shift s >
+struct shift_right_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n >> s));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+        : aux::shift_right_wknd<
+              typename N::value_type
+            , typename S::value_type
+            , N::value
+            , S::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp
new file mode 100644
index 0000000..f50578f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp
@@ -0,0 +1,40 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_< -1 >
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp
new file mode 100644
index 0000000..e2cd1ab
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp
@@ -0,0 +1,156 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+          5
+        , times
+        , ( N1, N2, N3, N4, N5 )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+template< typename T, T n1, T n2 >
+struct times_wknd
+{
+    BOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
+    typedef integral_c< T,value > type;
+};
+
+}
+
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+        : aux::times_wknd<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , N1::value
+            , N2::value
+            >::type
+
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
new file mode 100644
index 0000000..9c9204f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/vector.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/vector.hpp
new file mode 100644
index 0000000..df67589
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp
new file mode 100644
index 0000000..e2fbdb4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/advance_backward.hpp b/ndnboost/mpl/aux_/preprocessed/plain/advance_backward.hpp
new file mode 100644
index 0000000..0e0c828
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/advance_backward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_backward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_backward;
+template<>
+struct advance_backward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_backward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_backward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_backward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_backward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename prior<iter0>::type iter1;
+        typedef typename prior<iter1>::type iter2;
+        typedef typename prior<iter2>::type iter3;
+        typedef typename prior<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_backward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_backward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_backward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/advance_forward.hpp b/ndnboost/mpl/aux_/preprocessed/plain/advance_forward.hpp
new file mode 100644
index 0000000..b3a5afd
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/advance_forward.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/advance_forward.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< long N > struct advance_forward;
+template<>
+struct advance_forward<0>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef iter0 type;
+    };
+};
+
+template<>
+struct advance_forward<1>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef iter1 type;
+    };
+};
+
+template<>
+struct advance_forward<2>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef iter2 type;
+    };
+};
+
+template<>
+struct advance_forward<3>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef iter3 type;
+    };
+};
+
+template<>
+struct advance_forward<4>
+{
+    template< typename Iterator > struct apply
+    {
+        typedef Iterator iter0;
+        typedef typename next<iter0>::type iter1;
+        typedef typename next<iter1>::type iter2;
+        typedef typename next<iter2>::type iter3;
+        typedef typename next<iter3>::type iter4;
+        typedef iter4 type;
+    };
+};
+
+template< long N >
+struct advance_forward
+{
+    template< typename Iterator > struct apply
+    {
+        typedef typename apply_wrap1<
+              advance_forward<4>
+            , Iterator
+            >::type chunk_result_;
+
+        typedef typename apply_wrap1<
+              advance_forward<(
+                (N - 4) < 0
+                    ? 0
+                    : N - 4
+                    )>
+            , chunk_result_
+            >::type type;
+    };
+};
+
+}}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/and.hpp b/ndnboost/mpl/aux_/preprocessed/plain/and.hpp
new file mode 100644
index 0000000..80a91ef
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/and.hpp
@@ -0,0 +1,64 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/and.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct and_impl
+    : false_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct and_impl< true,T1,T2,T3,T4 >
+    : and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , true_
+        >
+{
+};
+
+template<>
+struct and_impl<
+          true
+        , true_, true_, true_, true_
+        >
+    : true_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = true_, typename T4 = true_, typename T5 = true_
+    >
+struct and_
+
+    : aux::and_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , and_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/apply.hpp b/ndnboost/mpl/aux_/preprocessed/plain/apply.hpp
new file mode 100644
index 0000000..a20ec46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/apply.hpp
@@ -0,0 +1,139 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+    >
+struct apply0
+
+    : apply_wrap0<
+          typename lambda<F>::type
+       
+        >
+{
+};
+
+template<
+      typename F
+    >
+struct apply< F,na,na,na,na,na >
+    : apply0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply1
+
+    : apply_wrap1<
+          typename lambda<F>::type
+        , T1
+        >
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct apply< F,T1,na,na,na,na >
+    : apply1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2
+
+    : apply_wrap2<
+          typename lambda<F>::type
+        , T1, T2
+        >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply< F,T1,T2,na,na,na >
+    : apply2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3
+
+    : apply_wrap3<
+          typename lambda<F>::type
+        , T1, T2, T3
+        >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply< F,T1,T2,T3,na,na >
+    : apply3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4
+
+    : apply_wrap4<
+          typename lambda<F>::type
+        , T1, T2, T3, T4
+        >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply< F,T1,T2,T3,T4,na >
+    : apply4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5
+
+    : apply_wrap5<
+          typename lambda<F>::type
+        , T1, T2, T3, T4, T5
+        >
+{
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply
+    : apply5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/apply_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
new file mode 100644
index 0000000..bccc94e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct apply;
+
+template<
+      typename F
+    >
+struct apply0;
+
+template<
+      typename F, typename T1
+    >
+struct apply1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct apply2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct apply3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct apply4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct apply5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/apply_wrap.hpp b/ndnboost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
new file mode 100644
index 0000000..ec90202
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
@@ -0,0 +1,84 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/apply_wrap.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F
+
+    , typename has_apply_ = typename aux::has_apply<F>::type
+
+    >
+struct apply_wrap0
+
+    : F::template apply<  >
+{
+};
+
+template< typename F >
+struct apply_wrap0< F,true_ >
+    : F::apply
+{
+};
+
+template<
+      typename F, typename T1
+
+    >
+struct apply_wrap1
+
+    : F::template apply<T1>
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+
+    >
+struct apply_wrap2
+
+    : F::template apply< T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+
+    >
+struct apply_wrap3
+
+    : F::template apply< T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+
+    >
+struct apply_wrap4
+
+    : F::template apply< T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+
+    >
+struct apply_wrap5
+
+    : F::template apply< T1,T2,T3,T4,T5 >
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp b/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp
new file mode 100644
index 0000000..9a157c2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Peter Dimov 2001-2002
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/arg.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+template<> struct arg< -1 >
+{
+    BOOST_STATIC_CONSTANT(int, value  = -1);
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<1>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 1);
+    typedef arg<2> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U1 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<2>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 2);
+    typedef arg<3> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U2 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<3>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 3);
+    typedef arg<4> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U3 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<4>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 4);
+    typedef arg<5> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U4 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+template<> struct arg<5>
+{
+    BOOST_STATIC_CONSTANT(int, value  = 5);
+    typedef arg<6> next;
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+        typedef U5 type;
+        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+    };
+};
+
+BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp b/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp
new file mode 100644
index 0000000..a2a565e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp
@@ -0,0 +1,440 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/basic_bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 > t4;
+        typedef aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 > t5;
+
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+template<
+      template< typename T1, typename T2, typename T3 > class F, typename Tag
+    >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< eval_if,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 > t1;
+        typedef aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 > t2;
+        typedef aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 > t3;
+        typedef typename eval_if<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp b/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp
new file mode 100644
index 0000000..f2cde5a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp
@@ -0,0 +1,561 @@
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
+{
+    typedef bind< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F
+    >
+struct bind< F,na,na,na,na,na >
+    : bind0<F>
+{
+};
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1
+    >
+struct bind< F,T1,na,na,na,na >
+    : bind1< F,T1 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind< F,T1,T2,na,na,na >
+    : bind2< F,T1,T2 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind< F,T1,T2,T3,na,na >
+    : bind3< F,T1,T2,T3 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind< F,T1,T2,T3,T4,na >
+    : bind4< F,T1,T2,T3,T4 >
+{
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+
+/// primary template (not a specialization!)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind
+    : bind5< F,T1,T2,T3,T4,T5 >
+{
+};
+
+/// if_/eval_if specializations
+template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct if_;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< if_,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename if_<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+template<
+      template< typename T1, typename T2, typename T3 > class F, typename Tag
+    >
+struct quote3;
+
+template< typename T1, typename T2, typename T3 > struct eval_if;
+
+template<
+      typename Tag, typename T1, typename T2, typename T3
+    >
+struct bind3<
+      quote3< eval_if,Tag >
+    , T1, T2, T3
+    >
+{
+    template<
+          typename U1 = na, typename U2 = na, typename U3 = na
+        , typename U4 = na, typename U5 = na
+        >
+    struct apply
+    {
+     private:
+        typedef mpl::arg<1> n1;
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef typename eval_if<
+              typename t1::type
+            , t2, t3
+            >::type f_;
+
+     public:
+        typedef typename f_::type type;
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/bind_fwd.hpp b/ndnboost/mpl/aux_/preprocessed/plain/bind_fwd.hpp
new file mode 100644
index 0000000..9a046ee
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/bind_fwd.hpp
@@ -0,0 +1,52 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bind_fwd.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename F, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na
+    >
+struct bind;
+
+template<
+      typename F
+    >
+struct bind0;
+
+template<
+      typename F, typename T1
+    >
+struct bind1;
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2;
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4;
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5;
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp b/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp
new file mode 100644
index 0000000..f0575f5
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp
@@ -0,0 +1,142 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitand.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitand_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitand_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitand_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitand_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitand_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitand_
+    : bitand_< bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitand_< N1,N2,N3,N4,na >
+
+    : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitand_< N1,N2,N3,na,na >
+
+    : bitand_< bitand_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitand_< N1,N2,na,na,na >
+    : bitand_impl<
+          typename bitand_tag<N1>::type
+        , typename bitand_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitand_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitand_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp b/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp
new file mode 100644
index 0000000..6d4811b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp
@@ -0,0 +1,142 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitor_
+    : bitor_< bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitor_< N1,N2,N3,N4,na >
+
+    : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitor_< N1,N2,N3,na,na >
+
+    : bitor_< bitor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitor_< N1,N2,na,na,na >
+    : bitor_impl<
+          typename bitor_tag<N1>::type
+        , typename bitor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp b/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp
new file mode 100644
index 0000000..a4035d0
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp
@@ -0,0 +1,142 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/bitxor.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct bitxor_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< bitxor_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct bitxor_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct bitxor_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct bitxor_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct bitxor_
+    : bitxor_< bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct bitxor_< N1,N2,N3,N4,na >
+
+    : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct bitxor_< N1,N2,N3,na,na >
+
+    : bitxor_< bitxor_< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct bitxor_< N1,N2,na,na,na >
+    : bitxor_impl<
+          typename bitxor_tag<N1>::type
+        , typename bitxor_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , bitxor_
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct bitxor_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/deque.hpp b/ndnboost/mpl/aux_/preprocessed/plain/deque.hpp
new file mode 100644
index 0000000..4631f66
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/deque.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/deque.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct deque;
+
+template<
+     
+    >
+struct deque<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct deque<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct deque<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct deque<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct deque<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct deque<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct deque<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct deque
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp b/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp
new file mode 100644
index 0000000..4d3d24e
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/divides.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct divides_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< divides_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct divides_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct divides_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct divides_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct divides
+    : divides< divides< divides< divides< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct divides< N1,N2,N3,N4,na >
+
+    : divides< divides< divides< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct divides< N1,N2,N3,na,na >
+
+    : divides< divides< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct divides< N1,N2,na,na,na >
+    : divides_impl<
+          typename divides_tag<N1>::type
+        , typename divides_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , divides
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct divides_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp
new file mode 100644
index 0000000..296c69c
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp
@@ -0,0 +1,92 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct equal_to
+
+    : equal_to_impl<
+          typename equal_to_tag<N1>::type
+        , typename equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/plain/fold_impl.hpp
new file mode 100644
index 0000000..494cd41
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl
+{
+    typedef fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,First,Last,State,ForwardOp >
+    : fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp b/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp
new file mode 100644
index 0000000..de658d8
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp
@@ -0,0 +1,554 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/full_lambda.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+   
+    >
+struct lambda
+{
+    typedef false_ is_le;
+    typedef T result_;
+    typedef T type;
+};
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+template< int N, typename Tag >
+struct lambda< arg<N>, Tag >
+{
+    typedef true_ is_le;
+    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
+    typedef mpl::protect<result_> type;
+};
+
+template<
+      typename F
+    , typename Tag
+    >
+struct lambda<
+          bind0<F>
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind0<
+          F
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1
+{
+    typedef F<
+          typename L1::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1 > class F
+    , typename L1
+    >
+struct le_result1< true_,Tag,F,L1 >
+{
+    typedef bind1<
+          quote1< F,Tag >
+        , typename L1::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1 > class F
+    , typename T1
+    , typename Tag
+    >
+struct lambda<
+          F<T1>
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef typename l1::is_le is_le1;
+    typedef typename aux::lambda_or<
+          is_le1::value
+        >::type is_le;
+
+    typedef aux::le_result1<
+          is_le, Tag, F, l1
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1
+    , typename Tag
+    >
+struct lambda<
+          bind1< F,T1 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind1<
+          F
+        , T1
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2
+{
+    typedef F<
+          typename L1::type, typename L2::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2 > class F
+    , typename L1, typename L2
+    >
+struct le_result2< true_,Tag,F,L1,L2 >
+{
+    typedef bind2<
+          quote2< F,Tag >
+        , typename L1::result_, typename L2::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value
+        >::type is_le;
+
+    typedef aux::le_result2<
+          is_le, Tag, F, l1, l2
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2
+    , typename Tag
+    >
+struct lambda<
+          bind2< F,T1,T2 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind2<
+          F
+        , T1, T2
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3 > class F
+    , typename L1, typename L2, typename L3
+    >
+struct le_result3< true_,Tag,F,L1,L2,L3 >
+{
+    typedef bind3<
+          quote3< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value
+        >::type is_le;
+
+    typedef aux::le_result3<
+          is_le, Tag, F, l1, l2, l3
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    , typename Tag
+    >
+struct lambda<
+          bind3< F,T1,T2,T3 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind3<
+          F
+        , T1, T2, T3
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename L1, typename L2, typename L3, typename L4
+    >
+struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
+{
+    typedef bind4<
+          quote4< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        >::type is_le;
+
+    typedef aux::le_result4<
+          is_le, Tag, F, l1, l2, l3, l4
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename Tag
+    >
+struct lambda<
+          bind4< F,T1,T2,T3,T4 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind4<
+          F
+        , T1, T2, T3, T4
+        > result_;
+
+    typedef result_ type;
+};
+
+namespace aux {
+
+template<
+      typename IsLE, typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5
+{
+    typedef F<
+          typename L1::type, typename L2::type, typename L3::type
+        , typename L4::type, typename L5::type
+        > result_;
+
+    typedef result_ type;
+};
+
+template<
+      typename Tag
+    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
+    , typename L1, typename L2, typename L3, typename L4, typename L5
+    >
+struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
+{
+    typedef bind5<
+          quote5< F,Tag >
+        , typename L1::result_, typename L2::result_, typename L3::result_
+        , typename L4::result_, typename L5::result_
+        > result_;
+
+    typedef mpl::protect<result_> type;
+};
+
+} // namespace aux
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename T1, typename T2, typename T3, typename T4, typename T5
+    , typename Tag
+    >
+struct lambda<
+          F< T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef lambda< T1,Tag > l1;
+    typedef lambda< T2,Tag > l2;
+    typedef lambda< T3,Tag > l3;
+    typedef lambda< T4,Tag > l4;
+    typedef lambda< T5,Tag > l5;
+    
+    typedef typename l1::is_le is_le1;
+    typedef typename l2::is_le is_le2;
+    typedef typename l3::is_le is_le3;
+    typedef typename l4::is_le is_le4;
+    typedef typename l5::is_le is_le5;
+    
+
+    typedef typename aux::lambda_or<
+          is_le1::value, is_le2::value, is_le3::value, is_le4::value
+        , is_le5::value
+        >::type is_le;
+
+    typedef aux::le_result5<
+          is_le, Tag, F, l1, l2, l3, l4, l5
+        > le_result_;
+
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind5< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind5<
+          F
+        , T1, T2, T3, T4, T5
+        > result_;
+
+    typedef result_ type;
+};
+
+/// special case for 'protect'
+template< typename T, typename Tag >
+struct lambda< mpl::protect<T>, Tag >
+{
+    typedef false_ is_le;
+    typedef mpl::protect<T> result_;
+    typedef result_ type;
+};
+
+/// specializations for the main 'bind' form
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    , typename Tag
+    >
+struct lambda<
+          bind< F,T1,T2,T3,T4,T5 >
+        , Tag
+       
+        >
+{
+    typedef false_ is_le;
+    typedef bind< F,T1,T2,T3,T4,T5 > result_;
+    typedef result_ type;
+};
+
+/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
+
+template<
+      typename F, typename Tag1, typename Tag2
+    >
+struct lambda<
+          lambda< F,Tag1 >
+        , Tag2
+        >
+{
+    typedef lambda< F,Tag2 > l1;
+    typedef lambda< Tag1,Tag2 > l2;
+    typedef typename l1::is_le is_le;
+    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
+    typedef typename le_result_::result_ result_;
+    typedef typename le_result_::type type;
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, lambda)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp b/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp
new file mode 100644
index 0000000..f2835d7
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp
@@ -0,0 +1,92 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater
+
+    : greater_impl<
+          typename greater_tag<N1>::type
+        , typename greater_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp b/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp
new file mode 100644
index 0000000..c67d5d6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp
@@ -0,0 +1,92 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/greater_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct greater_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< greater_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct greater_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct greater_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct greater_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct greater_equal
+
+    : greater_equal_impl<
+          typename greater_equal_tag<N1>::type
+        , typename greater_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct greater_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp b/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp
new file mode 100644
index 0000000..8c7914d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp
@@ -0,0 +1,125 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/inherit.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    >
+struct inherit2
+    : T1, T2
+{
+    typedef inherit2 type;
+};
+
+template< typename T1 >
+struct inherit2< T1,empty_base >
+{
+    typedef T1 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+};
+
+template< typename T2 >
+struct inherit2< empty_base,T2 >
+{
+    typedef T2 type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))
+};
+
+template<>
+struct inherit2< empty_base,empty_base >
+{
+    typedef empty_base type;
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
+};
+
+BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na
+    >
+struct inherit3
+    : inherit2<
+          typename inherit2<
+              T1, T2
+            >::type
+        , T3
+        >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    >
+struct inherit4
+    : inherit2<
+          typename inherit3<
+              T1, T2, T3
+            >::type
+        , T4
+        >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+
+template<
+      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
+    , typename T5 = na
+    >
+struct inherit5
+    : inherit2<
+          typename inherit4<
+              T1, T2, T3, T4
+            >::type
+        , T5
+        >
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+
+/// primary template
+
+template<
+      typename T1 = empty_base, typename T2 = empty_base
+    , typename T3 = empty_base, typename T4 = empty_base
+    , typename T5 = empty_base
+    >
+struct inherit
+    : inherit5< T1,T2,T3,T4,T5 >
+{
+};
+
+template<>
+struct inherit< na,na,na,na,na >
+{
+    template<
+
+          typename T1 = empty_base, typename T2 = empty_base
+        , typename T3 = empty_base, typename T4 = empty_base
+        , typename T5 = empty_base
+
+        >
+    struct apply
+        : inherit< T1,T2,T3,T4,T5 >
+    {
+    };
+};
+
+BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp b/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
new file mode 100644
index 0000000..b0a2864
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
@@ -0,0 +1,133 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright David Abrahams 2001-2002
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_if_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename Iterator, typename State >
+struct iter_fold_if_null_step
+{
+    typedef State state;
+    typedef Iterator iterator;
+};
+
+template< bool >
+struct iter_fold_if_step_impl
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef typename apply2< StateOp,State,Iterator >::type state;
+        typedef typename IteratorOp::type iterator;
+    };
+};
+
+template<>
+struct iter_fold_if_step_impl<false>
+{
+    template<
+          typename Iterator
+        , typename State
+        , typename StateOp
+        , typename IteratorOp
+        >
+    struct result_
+    {
+        typedef State state;
+        typedef Iterator iterator;
+    };
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_forward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename BackwardOp
+    , typename Predicate
+    >
+struct iter_fold_if_backward_step
+{
+    typedef typename apply2< Predicate,State,Iterator >::type not_last;
+    typedef typename iter_fold_if_step_impl<
+          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
+        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
+
+    typedef typename impl_::state state;
+    typedef typename impl_::iterator iterator;
+};
+
+template<
+      typename Iterator
+    , typename State
+    , typename ForwardOp
+    , typename ForwardPredicate
+    , typename BackwardOp
+    , typename BackwardPredicate
+    >
+struct iter_fold_if_impl
+{
+ private:
+    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
+    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
+    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
+    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
+    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
+    
+
+    typedef typename if_<
+          typename forward_step4::not_last
+        , iter_fold_if_impl<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            , ForwardOp
+            , ForwardPredicate
+            , BackwardOp
+            , BackwardPredicate
+            >
+        , iter_fold_if_null_step<
+              typename forward_step4::iterator
+            , typename forward_step4::state
+            >
+        >::type backward_step4;
+
+    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
+    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
+    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
+    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
+    
+
+ public:
+    typedef typename backward_step0::state state;
+    typedef typename backward_step4::iterator iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
new file mode 100644
index 0000000..cc08b30
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
@@ -0,0 +1,180 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 0,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 1,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef state1 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 2,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef state2 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 3,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef state3 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< 4,First,Last,State,ForwardOp >
+{
+    typedef First iter0;
+    typedef State state0;
+    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef state4 state;
+    typedef iter4 iterator;
+};
+
+template<
+      int N
+    , typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl
+{
+    typedef iter_fold_impl<
+          4
+        , First
+        , Last
+        , State
+        , ForwardOp
+        > chunk_;
+
+    typedef iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , typename chunk_::iterator
+        , Last
+        , typename chunk_::state
+        , ForwardOp
+        > res_;
+
+    typedef typename res_::state state;
+    typedef typename res_::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,First,Last,State,ForwardOp >
+    : iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , ForwardOp
+        >
+{
+};
+
+template<
+      typename Last
+    , typename State
+    , typename ForwardOp
+    >
+struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp b/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
new file mode 100644
index 0000000..757a165
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
@@ -0,0 +1,228 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template<
+      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
+    , bool C5 = false
+    >
+struct lambda_or
+    : true_
+{
+};
+
+template<>
+struct lambda_or< false,false,false,false,false >
+    : false_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+    template< typename T, typename Tag, typename Protect > struct result_
+    {
+        typedef T type;
+        typedef is_placeholder<T> is_le;
+    };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef typename l1::is_le is_le1;
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+            > is_le;
+
+        typedef bind1<
+              typename F::rebind
+            , typename l1::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+            > is_le;
+
+        typedef bind2<
+              typename F::rebind
+            , typename l1::type, typename l2::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+            > is_le;
+
+        typedef bind3<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+            > is_le;
+
+        typedef bind4<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+    template< typename F, typename Tag, typename Protect > struct result_
+    {
+        typedef lambda< typename F::arg1, Tag, false_ > l1;
+        typedef lambda< typename F::arg2, Tag, false_ > l2;
+        typedef lambda< typename F::arg3, Tag, false_ > l3;
+        typedef lambda< typename F::arg4, Tag, false_ > l4;
+        typedef lambda< typename F::arg5, Tag, false_ > l5;
+        
+        typedef typename l1::is_le is_le1;
+        typedef typename l2::is_le is_le2;
+        typedef typename l3::is_le is_le3;
+        typedef typename l4::is_le is_le4;
+        typedef typename l5::is_le is_le5;
+        
+
+        typedef aux::lambda_or<
+              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+            > is_le;
+
+        typedef bind5<
+              typename F::rebind
+            , typename l1::type, typename l2::type, typename l3::type
+            , typename l4::type, typename l5::type
+            > bind_;
+
+        typedef typename if_<
+              is_le
+            , if_< Protect, mpl::protect<bind_>, bind_ >
+            , identity<F>
+            >::type type_;
+
+        typedef typename type_::type type;
+    };
+};
+
+} // namespace aux
+
+template<
+      typename T
+    , typename Tag
+    , typename Protect
+    >
+struct lambda
+{
+    /// Metafunction forwarding confuses MSVC 6.x
+    typedef typename aux::template_arity<T>::type arity_;
+    typedef typename aux::lambda_impl<arity_>
+        ::template result_< T,Tag,Protect > l_;
+
+    typedef typename l_::type type;
+    typedef typename l_::is_le is_le;
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+      typename T
+    >
+struct is_lambda_expression
+    : lambda<T>::is_le
+{
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/less.hpp b/ndnboost/mpl/aux_/preprocessed/plain/less.hpp
new file mode 100644
index 0000000..debece1
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/less.hpp
@@ -0,0 +1,92 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less
+
+    : less_impl<
+          typename less_tag<N1>::type
+        , typename less_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp b/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp
new file mode 100644
index 0000000..c18dd6a
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp
@@ -0,0 +1,92 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/less_equal.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct less_equal_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct less_equal_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct less_equal_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct less_equal_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct less_equal
+
+    : less_equal_impl<
+          typename less_equal_tag<N1>::type
+        , typename less_equal_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct less_equal_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/list.hpp b/ndnboost/mpl/aux_/preprocessed/plain/list.hpp
new file mode 100644
index 0000000..8cc8c46
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/list.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct list;
+
+template<
+     
+    >
+struct list<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list0<  >
+{
+    typedef list0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct list<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list1<T0>
+{
+    typedef typename list1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct list<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list2< T0,T1 >
+{
+    typedef typename list2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct list<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list3< T0,T1,T2 >
+{
+    typedef typename list3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct list<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list4< T0,T1,T2,T3 >
+{
+    typedef typename list4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct list<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list5< T0,T1,T2,T3,T4 >
+{
+    typedef typename list5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename list6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename list7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename list8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename list9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename list10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename list11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename list12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename list13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename list14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : list15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename list15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : list16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename list16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : list17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename list17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : list18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename list18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct list<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : list19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename list19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct list
+    : list20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename list20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/list_c.hpp b/ndnboost/mpl/aux_/preprocessed/plain/list_c.hpp
new file mode 100644
index 0000000..e43f38f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/list_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/list_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct list_c;
+
+template<
+      typename T
+    >
+struct list_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list0_c<T>
+{
+    typedef typename list0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct list_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list1_c< T,C0 >
+{
+    typedef typename list1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct list_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list2_c< T,C0,C1 >
+{
+    typedef typename list2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct list_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list3_c< T,C0,C1,C2 >
+{
+    typedef typename list3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct list_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename list4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename list5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename list6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename list7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename list8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename list9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename list10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename list11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename list12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename list13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename list14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename list15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename list16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : list17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename list17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : list18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename list18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct list_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : list19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename list19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct list_c
+    : list20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename list20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/map.hpp b/ndnboost/mpl/aux_/preprocessed/plain/map.hpp
new file mode 100644
index 0000000..7974f28
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/map.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/map.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct map;
+
+template<
+     
+    >
+struct map<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map0<  >
+{
+    typedef map0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct map<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map1<T0>
+{
+    typedef typename map1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct map<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map2< T0,T1 >
+{
+    typedef typename map2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct map<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map3< T0,T1,T2 >
+{
+    typedef typename map3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct map<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map4< T0,T1,T2,T3 >
+{
+    typedef typename map4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct map<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map5< T0,T1,T2,T3,T4 >
+{
+    typedef typename map5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename map6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename map7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename map8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename map9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename map10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename map11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename map12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename map13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename map14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : map15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename map15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : map16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename map16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : map17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename map17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : map18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename map18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct map<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : map19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename map19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct map
+    : map20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename map20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp b/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp
new file mode 100644
index 0000000..c491d53
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/minus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct minus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< minus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct minus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct minus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct minus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct minus
+    : minus< minus< minus< minus< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct minus< N1,N2,N3,N4,na >
+
+    : minus< minus< minus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct minus< N1,N2,N3,na,na >
+
+    : minus< minus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct minus< N1,N2,na,na,na >
+    : minus_impl<
+          typename minus_tag<N1>::type
+        , typename minus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , minus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct minus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp b/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp
new file mode 100644
index 0000000..7423c57
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp
@@ -0,0 +1,99 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/modulus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct modulus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< modulus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct modulus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct modulus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct modulus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct modulus
+
+    : modulus_impl<
+          typename modulus_tag<N1>::type
+        , typename modulus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct modulus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp b/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
new file mode 100644
index 0000000..1ce634d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
@@ -0,0 +1,92 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/not_equal_to.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct not_equal_to_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< not_equal_to_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct not_equal_to_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct not_equal_to_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct not_equal_to_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct not_equal_to
+
+    : not_equal_to_impl<
+          typename not_equal_to_tag<N1>::type
+        , typename not_equal_to_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+
+}}
+
+namespace ndnboost { namespace mpl {
+
+template<>
+struct not_equal_to_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/or.hpp b/ndnboost/mpl/aux_/preprocessed/plain/or.hpp
new file mode 100644
index 0000000..6c5765d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/or.hpp
@@ -0,0 +1,64 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/or.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< bool C_, typename T1, typename T2, typename T3, typename T4 >
+struct or_impl
+    : true_
+{
+};
+
+template< typename T1, typename T2, typename T3, typename T4 >
+struct or_impl< false,T1,T2,T3,T4 >
+    : or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4
+        , false_
+        >
+{
+};
+
+template<>
+struct or_impl<
+          false
+        , false_, false_, false_, false_
+        >
+    : false_
+{
+};
+
+} // namespace aux
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(T1)
+    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+    , typename T3 = false_, typename T4 = false_, typename T5 = false_
+    >
+struct or_
+
+    : aux::or_impl<
+          BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+        , T2, T3, T4, T5
+        >
+
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(
+      2
+    , 5
+    , or_
+    )
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp b/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp
new file mode 100644
index 0000000..ecd4514
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp
@@ -0,0 +1,105 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+// Copyright Peter Dimov 2001-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
+// -- DO NOT modify by hand!
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg< -1 > _;
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+}
+
+}}
+
+/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
+/// specialization
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<1> _1;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<2> _2;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<3> _3;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<4> _4;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<5> _5;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+}
+
+}}
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+typedef arg<6> _6;
+
+BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+namespace ndnboost { namespace mpl {
+
+BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+
+namespace placeholders {
+using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+}
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp b/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp
new file mode 100644
index 0000000..01a191d
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/plus.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct plus_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct plus_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct plus_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct plus_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct plus
+    : plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct plus< N1,N2,N3,N4,na >
+
+    : plus< plus< plus< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct plus< N1,N2,N3,na,na >
+
+    : plus< plus< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct plus< N1,N2,na,na,na >
+    : plus_impl<
+          typename plus_tag<N1>::type
+        , typename plus_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , plus
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct plus_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/quote.hpp b/ndnboost/mpl/aux_/preprocessed/plain/quote.hpp
new file mode 100644
index 0000000..8ce79ed
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/quote.hpp
@@ -0,0 +1,123 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/quote.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template< typename T, bool has_type_ >
+struct quote_impl
+    : T
+{
+};
+
+template< typename T >
+struct quote_impl< T,false >
+{
+    typedef T type;
+};
+
+template<
+      template< typename P1 > class F
+    , typename Tag = void_
+    >
+struct quote1
+{
+    template< typename U1 > struct apply
+
+        : quote_impl<
+              F<U1>
+            , aux::has_type< F<U1> >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2 > class F
+    , typename Tag = void_
+    >
+struct quote2
+{
+    template< typename U1, typename U2 > struct apply
+
+        : quote_impl<
+              F< U1,U2 >
+            , aux::has_type< F< U1,U2 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3 > class F
+    , typename Tag = void_
+    >
+struct quote3
+{
+    template< typename U1, typename U2, typename U3 > struct apply
+
+        : quote_impl<
+              F< U1,U2,U3 >
+            , aux::has_type< F< U1,U2,U3 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template< typename P1, typename P2, typename P3, typename P4 > class F
+    , typename Tag = void_
+    >
+struct quote4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4 >
+            , aux::has_type< F< U1,U2,U3,U4 > >::value
+            >
+
+    {
+    };
+};
+
+template<
+      template<
+          typename P1, typename P2, typename P3, typename P4
+        , typename P5
+        >
+      class F
+    , typename Tag = void_
+    >
+struct quote5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4
+        , typename U5
+        >
+    struct apply
+
+        : quote_impl<
+              F< U1,U2,U3,U4,U5 >
+            , aux::has_type< F< U1,U2,U3,U4,U5 > >::value
+            >
+
+    {
+    };
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp
new file mode 100644
index 0000000..7d3ad75
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp, fwd_state0, typename deref<iter0>::type >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp, fwd_state1, typename deref<iter1>::type >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp, fwd_state2, typename deref<iter2>::type >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp, fwd_state3, typename deref<iter3>::type >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp, bkwd_state4, typename deref<iter3>::type >::type bkwd_state3;
+    typedef typename apply2< BackwardOp, bkwd_state3, typename deref<iter2>::type >::type bkwd_state2;
+    typedef typename apply2< BackwardOp, bkwd_state2, typename deref<iter1>::type >::type bkwd_state1;
+    typedef typename apply2< BackwardOp, bkwd_state1, typename deref<iter0>::type >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , typename deref<First>::type
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp b/ndnboost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp
new file mode 100644
index 0000000..33bf508
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp
@@ -0,0 +1,231 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/reverse_iter_fold_impl.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl;
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 0,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef fwd_state0 bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter0 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    
+
+    typedef fwd_state1 bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    typedef bkwd_state0 state;
+    typedef iter1 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 2,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    
+
+    typedef fwd_state2 bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter2 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 3,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    
+
+    typedef fwd_state3 bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter3 iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< 4,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef fwd_state4 bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef iter4 iterator;
+};
+
+template<
+      long N
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+    typedef typename apply2< ForwardOp,fwd_state0,iter0 >::type fwd_state1;
+    typedef typename mpl::next<iter0>::type iter1;
+    typedef typename apply2< ForwardOp,fwd_state1,iter1 >::type fwd_state2;
+    typedef typename mpl::next<iter1>::type iter2;
+    typedef typename apply2< ForwardOp,fwd_state2,iter2 >::type fwd_state3;
+    typedef typename mpl::next<iter2>::type iter3;
+    typedef typename apply2< ForwardOp,fwd_state3,iter3 >::type fwd_state4;
+    typedef typename mpl::next<iter3>::type iter4;
+    
+
+    typedef reverse_iter_fold_impl<
+          ( (N - 4) < 0 ? 0 : N - 4 )
+        , iter4
+        , Last
+        , fwd_state4
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+
+    typedef typename nested_chunk::state bkwd_state4;
+    typedef typename apply2< BackwardOp,bkwd_state4,iter3 >::type bkwd_state3;
+    typedef typename apply2< BackwardOp,bkwd_state3,iter2 >::type bkwd_state2;
+    typedef typename apply2< BackwardOp,bkwd_state2,iter1 >::type bkwd_state1;
+    typedef typename apply2< BackwardOp,bkwd_state1,iter0 >::type bkwd_state0;
+    
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,First,Last,State,BackwardOp,ForwardOp >
+{
+    typedef reverse_iter_fold_impl<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2< ForwardOp,State,First >::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , First
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct reverse_iter_fold_impl< -1,Last,Last,State,BackwardOp,ForwardOp >
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+}}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/set.hpp b/ndnboost/mpl/aux_/preprocessed/plain/set.hpp
new file mode 100644
index 0000000..4c4ca11
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/set.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct set;
+
+template<
+     
+    >
+struct set<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set0<  >
+{
+    typedef set0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct set<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set1<T0>
+{
+    typedef typename set1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct set<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set2< T0,T1 >
+{
+    typedef typename set2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct set<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set3< T0,T1,T2 >
+{
+    typedef typename set3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct set<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set4< T0,T1,T2,T3 >
+{
+    typedef typename set4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct set<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set5< T0,T1,T2,T3,T4 >
+{
+    typedef typename set5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename set6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename set7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename set8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename set9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename set10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename set11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename set12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename set13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename set14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : set15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename set15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : set16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename set16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : set17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename set17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : set18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename set18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct set<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : set19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename set19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct set
+    : set20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename set20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/set_c.hpp b/ndnboost/mpl/aux_/preprocessed/plain/set_c.hpp
new file mode 100644
index 0000000..bef2fde
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/set_c.hpp
@@ -0,0 +1,328 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/set_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct set_c;
+
+template<
+      typename T
+    >
+struct set_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set0_c<T>
+{
+    typedef typename set0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct set_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set1_c< T,C0 >
+{
+    typedef typename set1_c< T,C0 >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct set_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set2_c< T,C0,C1 >
+{
+    typedef typename set2_c< T,C0,C1 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct set_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set3_c< T,C0,C1,C2 >
+{
+    typedef typename set3_c< T,C0,C1,C2 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct set_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set4_c< T,C0,C1,C2,C3 >
+{
+    typedef typename set4_c< T,C0,C1,C2,C3 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set5_c< T,C0,C1,C2,C3,C4 >
+{
+    typedef typename set5_c< T,C0,C1,C2,C3,C4 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set6_c< T,C0,C1,C2,C3,C4,C5 >
+{
+    typedef typename set6_c< T,C0,C1,C2,C3,C4,C5 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set7_c< T,C0,C1,C2,C3,C4,C5,C6 >
+{
+    typedef typename set7_c< T,C0,C1,C2,C3,C4,C5,C6 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >
+{
+    typedef typename set8_c< T,C0,C1,C2,C3,C4,C5,C6,C7 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >
+{
+    typedef typename set9_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >
+{
+    typedef typename set10_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >
+{
+    typedef typename set11_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >
+{
+    typedef typename set12_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >
+{
+    typedef typename set13_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set14_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        >
+{
+    typedef typename set14_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set15_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        >
+{
+    typedef typename set15_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set16_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15
+        >
+{
+    typedef typename set16_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : set17_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16
+        >
+{
+    typedef typename set17_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : set18_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17
+        >
+{
+    typedef typename set18_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17 >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct set_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : set19_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18
+        >
+{
+    typedef typename set19_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct set_c
+    : set20_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, C19
+        >
+{
+    typedef typename set20_c< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp b/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp
new file mode 100644
index 0000000..a37d3b2
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_left.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_left_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_left_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_left_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_left_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_left_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_left
+
+    : shift_left_impl<
+          typename shift_left_tag<N1>::type
+        , typename shift_left_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_left_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp b/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp
new file mode 100644
index 0000000..faa8302
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp
@@ -0,0 +1,97 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Jaap Suter 2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/shift_right.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct shift_right_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< shift_right_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct shift_right_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct shift_right_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct shift_right_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    >
+struct shift_right
+
+    : shift_right_impl<
+          typename shift_right_tag<N1>::type
+        , typename shift_right_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct shift_right_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N, typename S > struct apply
+
+        : integral_c<
+              typename N::value_type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/template_arity.hpp b/ndnboost/mpl/aux_/preprocessed/plain/template_arity.hpp
new file mode 100644
index 0000000..6cb42ae
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/template_arity.hpp
@@ -0,0 +1,11 @@
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/aux_/template_arity.hpp" header
+// -- DO NOT modify by hand!
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/times.hpp b/ndnboost/mpl/aux_/preprocessed/plain/times.hpp
new file mode 100644
index 0000000..f0e16aa
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/times.hpp
@@ -0,0 +1,141 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/times.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename Tag1
+    , typename Tag2
+    >
+struct times_impl
+    : if_c<
+          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+            )
+
+        , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
+        , aux::cast1st_impl< times_impl< Tag2,Tag2 >,Tag1, Tag2 >
+        >::type
+{
+};
+
+/// for Digital Mars C++/compilers with no CTPS/TTP support
+template<> struct times_impl< na,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< na,Tag >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename Tag > struct times_impl< Tag,na >
+{
+    template< typename U1, typename U2 > struct apply
+    {
+        typedef apply type;
+        BOOST_STATIC_CONSTANT(int, value  = 0);
+    };
+};
+
+template< typename T > struct times_tag
+{
+    typedef typename T::tag type;
+};
+
+template<
+      typename BOOST_MPL_AUX_NA_PARAM(N1)
+    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+    , typename N3 = na, typename N4 = na, typename N5 = na
+    >
+struct times
+    : times< times< times< times< N1,N2 >, N3>, N4>, N5>
+{
+};
+
+template<
+      typename N1, typename N2, typename N3, typename N4
+    >
+struct times< N1,N2,N3,N4,na >
+
+    : times< times< times< N1,N2 >, N3>, N4>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, N4, na )
+        )
+};
+
+template<
+      typename N1, typename N2, typename N3
+    >
+struct times< N1,N2,N3,na,na >
+
+    : times< times< N1,N2 >, N3>
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, N3, na, na )
+        )
+};
+
+template<
+      typename N1, typename N2
+    >
+struct times< N1,N2,na,na,na >
+    : times_impl<
+          typename times_tag<N1>::type
+        , typename times_tag<N2>::type
+        >::template apply< N1,N2 >::type
+{
+    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+          5
+        , times
+        , ( N1, N2, na, na, na )
+        )
+
+};
+
+BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+
+}}
+
+namespace ndnboost { namespace mpl {
+template<>
+struct times_impl< integral_c_tag,integral_c_tag >
+{
+    template< typename N1, typename N2 > struct apply
+
+        : integral_c<
+              typename aux::largest_int<
+                  typename N1::value_type
+                , typename N2::value_type
+                >::type
+            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+                )
+            >
+    {
+    };
+};
+
+}}
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp b/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp
new file mode 100644
index 0000000..9c9204f
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp
@@ -0,0 +1,94 @@
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/unpack_args.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+namespace aux {
+
+template< int size, typename F, typename Args >
+struct unpack_args_impl;
+
+template< typename F, typename Args >
+struct unpack_args_impl< 0,F,Args >
+    : apply0<
+          F
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 1,F,Args >
+    : apply1<
+          F
+        , typename at_c< Args,0 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 2,F,Args >
+    : apply2<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 3,F,Args >
+    : apply3<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 4,F,Args >
+    : apply4<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        >
+{
+};
+
+template< typename F, typename Args >
+struct unpack_args_impl< 5,F,Args >
+    : apply5<
+          F
+        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
+        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
+        , typename at_c< Args,4 >::type
+        >
+{
+};
+
+}
+
+template<
+      typename F
+    >
+struct unpack_args
+{
+    template< typename Args > struct apply
+
+        : aux::unpack_args_impl< size<Args>::value,F, Args >
+
+    {
+    };
+};
+
+BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/vector.hpp b/ndnboost/mpl/aux_/preprocessed/plain/vector.hpp
new file mode 100644
index 0000000..df67589
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/vector.hpp
@@ -0,0 +1,323 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
+    , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
+    , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
+    , typename T12 = na, typename T13 = na, typename T14 = na
+    , typename T15 = na, typename T16 = na, typename T17 = na
+    , typename T18 = na, typename T19 = na
+    >
+struct vector;
+
+template<
+     
+    >
+struct vector<
+          na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector0<  >
+{
+    typedef vector0<  >::type type;
+};
+
+template<
+      typename T0
+    >
+struct vector<
+          T0, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector1<T0>
+{
+    typedef typename vector1<T0>::type type;
+};
+
+template<
+      typename T0, typename T1
+    >
+struct vector<
+          T0, T1, na, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector2< T0,T1 >
+{
+    typedef typename vector2< T0,T1 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2
+    >
+struct vector<
+          T0, T1, T2, na, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector3< T0,T1,T2 >
+{
+    typedef typename vector3< T0,T1,T2 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3
+    >
+struct vector<
+          T0, T1, T2, T3, na, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector4< T0,T1,T2,T3 >
+{
+    typedef typename vector4< T0,T1,T2,T3 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    >
+struct vector<
+          T0, T1, T2, T3, T4, na, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector5< T0,T1,T2,T3,T4 >
+{
+    typedef typename vector5< T0,T1,T2,T3,T4 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, na, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector6< T0,T1,T2,T3,T4,T5 >
+{
+    typedef typename vector6< T0,T1,T2,T3,T4,T5 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, na, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector7< T0,T1,T2,T3,T4,T5,T6 >
+{
+    typedef typename vector7< T0,T1,T2,T3,T4,T5,T6 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, na, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector8< T0,T1,T2,T3,T4,T5,T6,T7 >
+{
+    typedef typename vector8< T0,T1,T2,T3,T4,T5,T6,T7 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, na, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >
+{
+    typedef typename vector9< T0,T1,T2,T3,T4,T5,T6,T7,T8 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, na, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >
+{
+    typedef typename vector10< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, na, na, na, na, na, na
+        , na, na, na
+        >
+    : vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >
+{
+    typedef typename vector11< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, na, na, na, na
+        , na, na, na, na
+        >
+    : vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >
+{
+    typedef typename vector12< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, na, na, na
+        , na, na, na, na
+        >
+    : vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >
+{
+    typedef typename vector13< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, na, na
+        , na, na, na, na
+        >
+    : vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >
+{
+    typedef typename vector14< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, na
+        , na, na, na, na
+        >
+    : vector15<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        >
+{
+    typedef typename vector15< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, na, na, na, na
+        >
+    : vector16<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15
+        >
+{
+    typedef typename vector16< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, na, na, na
+        >
+    : vector17<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16
+        >
+{
+    typedef typename vector17< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, na, na
+        >
+    : vector18<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17
+        >
+{
+    typedef typename vector18< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17 >::type type;
+};
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18
+    >
+struct vector<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, na
+        >
+    : vector19<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18
+        >
+{
+    typedef typename vector19< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18 >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T0, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename T6, typename T7, typename T8, typename T9
+    , typename T10, typename T11, typename T12, typename T13, typename T14
+    , typename T15, typename T16, typename T17, typename T18, typename T19
+    >
+struct vector
+    : vector20<
+          T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
+        , T15, T16, T17, T18, T19
+        >
+{
+    typedef typename vector20< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessed/plain/vector_c.hpp b/ndnboost/mpl/aux_/preprocessed/plain/vector_c.hpp
new file mode 100644
index 0000000..e2fbdb4
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessed/plain/vector_c.hpp
@@ -0,0 +1,309 @@
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+
+// Preprocessed version of "ndnboost/mpl/vector_c.hpp" header
+// -- DO NOT modify by hand!
+
+namespace ndnboost { namespace mpl {
+
+template<
+      typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
+    , long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
+    , long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
+    , long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
+    , long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
+    , long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
+    , long C18 = LONG_MAX, long C19 = LONG_MAX
+    >
+struct vector_c;
+
+template<
+      typename T
+    >
+struct vector_c<
+          T, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector0_c<T>
+{
+    typedef typename vector0_c<T>::type type;
+};
+
+template<
+      typename T, long C0
+    >
+struct vector_c<
+          T, C0, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector1_c< T, T(C0) >
+{
+    typedef typename vector1_c< T, T(C0) >::type type;
+};
+
+template<
+      typename T, long C0, long C1
+    >
+struct vector_c<
+          T, C0, C1, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector2_c< T, T(C0), T(C1) >
+{
+    typedef typename vector2_c< T, T(C0), T(C1) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2
+    >
+struct vector_c<
+          T, C0, C1, C2, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector3_c< T, T(C0), T(C1), T(C2) >
+{
+    typedef typename vector3_c< T, T(C0), T(C1), T(C2) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector4_c< T, T(C0), T(C1), T(C2), T(C3) >
+{
+    typedef typename vector4_c< T, T(C0), T(C1), T(C2), T(C3) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >
+{
+    typedef typename vector5_c< T, T(C0), T(C1), T(C2), T(C3), T(C4) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >
+{
+    typedef typename vector6_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >
+{
+    typedef typename vector7_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX
+        >
+    : vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >
+{
+    typedef typename vector8_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >
+{
+    typedef typename vector9_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        , LONG_MAX
+        >
+    : vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >
+{
+    typedef typename vector10_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, LONG_MAX, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >
+{
+    typedef typename vector11_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >
+{
+    typedef typename vector12_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, LONG_MAX
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >
+{
+    typedef typename vector13_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >
+{
+    typedef typename vector14_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >
+{
+    typedef typename vector15_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, LONG_MAX, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >
+{
+    typedef typename vector16_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, LONG_MAX, LONG_MAX, LONG_MAX
+        >
+    : vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >
+{
+    typedef typename vector17_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, LONG_MAX, LONG_MAX
+        >
+    : vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >
+{
+    typedef typename vector18_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17) >::type type;
+};
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18
+    >
+struct vector_c<
+          T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
+        , C15, C16, C17, C18, LONG_MAX
+        >
+    : vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >
+{
+    typedef typename vector19_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18) >::type type;
+};
+
+/// primary template (not a specialization!)
+
+template<
+      typename T, long C0, long C1, long C2, long C3, long C4, long C5
+    , long C6, long C7, long C8, long C9, long C10, long C11, long C12
+    , long C13, long C14, long C15, long C16, long C17, long C18, long C19
+    >
+struct vector_c
+    : vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >
+{
+    typedef typename vector20_c< T, T(C0), T(C1), T(C2), T(C3), T(C4), T(C5), T(C6), T(C7), T(C8), T(C9), T(C10), T(C11), T(C12), T(C13), T(C14), T(C15), T(C16), T(C17), T(C18), T(C19) >::type type;
+};
+
+}}
+
diff --git a/ndnboost/mpl/aux_/preprocessor/add.hpp b/ndnboost/mpl/aux_/preprocessor/add.hpp
new file mode 100644
index 0000000..bd5abc6
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessor/add.hpp
@@ -0,0 +1,65 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: add.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/preprocessor.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+#   include <ndnboost/mpl/aux_/preprocessor/tuple.hpp>
+
+#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
+#   include <ndnboost/preprocessor/cat.hpp>
+
+#   define BOOST_MPL_PP_ADD(i,j) \
+    BOOST_MPL_PP_ADD_DELAY(i,j) \
+    /**/
+
+#   define BOOST_MPL_PP_ADD_DELAY(i,j) \
+    BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_ADD_##j) \
+    /**/
+#else
+#   define BOOST_MPL_PP_ADD(i,j) \
+    BOOST_MPL_PP_ADD_DELAY(i,j) \
+    /**/
+
+#   define BOOST_MPL_PP_ADD_DELAY(i,j) \
+    BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_ADD_##j \
+    /**/
+#endif
+
+#   define BOOST_MPL_PP_ADD_0 (0,1,2,3,4,5,6,7,8,9,10)
+#   define BOOST_MPL_PP_ADD_1 (1,2,3,4,5,6,7,8,9,10,0)
+#   define BOOST_MPL_PP_ADD_2 (2,3,4,5,6,7,8,9,10,0,0)
+#   define BOOST_MPL_PP_ADD_3 (3,4,5,6,7,8,9,10,0,0,0)
+#   define BOOST_MPL_PP_ADD_4 (4,5,6,7,8,9,10,0,0,0,0)
+#   define BOOST_MPL_PP_ADD_5 (5,6,7,8,9,10,0,0,0,0,0)
+#   define BOOST_MPL_PP_ADD_6 (6,7,8,9,10,0,0,0,0,0,0)
+#   define BOOST_MPL_PP_ADD_7 (7,8,9,10,0,0,0,0,0,0,0)
+#   define BOOST_MPL_PP_ADD_8 (8,9,10,0,0,0,0,0,0,0,0)
+#   define BOOST_MPL_PP_ADD_9 (9,10,0,0,0,0,0,0,0,0,0)
+#   define BOOST_MPL_PP_ADD_10 (10,0,0,0,0,0,0,0,0,0,0)
+
+#else
+
+#   include <ndnboost/preprocessor/arithmetic/add.hpp>
+
+#   define BOOST_MPL_PP_ADD(i,j) \
+    BOOST_PP_ADD(i,j) \
+    /**/
+    
+#endif 
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/preprocessor/default_params.hpp b/ndnboost/mpl/aux_/preprocessor/default_params.hpp
new file mode 100644
index 0000000..a82d692
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessor/default_params.hpp
@@ -0,0 +1,67 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: default_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/preprocessor.hpp>
+
+// BOOST_MPL_PP_DEFAULT_PARAMS(0,T,int): <nothing>
+// BOOST_MPL_PP_DEFAULT_PARAMS(1,T,int): T1 = int
+// BOOST_MPL_PP_DEFAULT_PARAMS(2,T,int): T1 = int, T2 = int
+// BOOST_MPL_PP_DEFAULT_PARAMS(n,T,int): T1 = int, T2 = int, .., Tn = int
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+#   include <ndnboost/preprocessor/cat.hpp>
+
+#   define BOOST_MPL_PP_DEFAULT_PARAMS(n,p,v) \
+    BOOST_PP_CAT(BOOST_MPL_PP_DEFAULT_PARAMS_,n)(p,v) \
+    /**/
+    
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_0(p,v)
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_1(p,v) p##1=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_2(p,v) p##1=v,p##2=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_3(p,v) p##1=v,p##2=v,p##3=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_4(p,v) p##1=v,p##2=v,p##3=v,p##4=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_5(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_6(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_7(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_8(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v,p##8=v
+#   define BOOST_MPL_PP_DEFAULT_PARAMS_9(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v,p##6=v,p##7=v,p##8=v,p##9=v
+
+#else
+
+#   include <ndnboost/preprocessor/tuple/elem.hpp>
+#   include <ndnboost/preprocessor/comma_if.hpp>
+#   include <ndnboost/preprocessor/repeat.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+#   define BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC(unused, i, pv) \
+    BOOST_PP_COMMA_IF(i) \
+    BOOST_PP_CAT( BOOST_PP_TUPLE_ELEM(2,0,pv), BOOST_PP_INC(i) ) \
+        = BOOST_PP_TUPLE_ELEM(2,1,pv) \
+    /**/
+
+#   define BOOST_MPL_PP_DEFAULT_PARAMS(n, param, value) \
+    BOOST_PP_REPEAT( \
+          n \
+        , BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC \
+        , (param,value) \
+        ) \
+    /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/preprocessor/ext_params.hpp b/ndnboost/mpl/aux_/preprocessor/ext_params.hpp
new file mode 100644
index 0000000..3f01b1b
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessor/ext_params.hpp
@@ -0,0 +1,78 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: ext_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/preprocessor.hpp>
+
+// BOOST_MPL_PP_EXT_PARAMS(2,2,T): <nothing>
+// BOOST_MPL_PP_EXT_PARAMS(2,3,T): T2
+// BOOST_MPL_PP_EXT_PARAMS(2,4,T): T2, T3
+// BOOST_MPL_PP_EXT_PARAMS(2,n,T): T2, T3, .., Tn-1
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+#   include <ndnboost/mpl/aux_/preprocessor/filter_params.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/sub.hpp>
+
+#   define BOOST_MPL_PP_EXT_PARAMS(i,j,p) \
+    BOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,BOOST_MPL_PP_SUB(j,i),p) \
+    /**/
+
+#   define BOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,n,p) \
+    BOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
+    /**/
+
+#   define BOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
+    BOOST_MPL_PP_EXT_PARAMS_##i(n,p) \
+    /**/
+
+#   define BOOST_MPL_PP_EXT_PARAMS_1(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9)
+#   define BOOST_MPL_PP_EXT_PARAMS_2(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1)
+#   define BOOST_MPL_PP_EXT_PARAMS_3(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1,p2)
+#   define BOOST_MPL_PP_EXT_PARAMS_4(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4,p##5,p##6,p##7,p##8,p##9,p1,p2,p3)
+#   define BOOST_MPL_PP_EXT_PARAMS_5(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5,p##6,p##7,p##8,p##9,p1,p2,p3,p4)
+#   define BOOST_MPL_PP_EXT_PARAMS_6(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6,p##7,p##8,p##9,p1,p2,p3,p4,p5)
+#   define BOOST_MPL_PP_EXT_PARAMS_7(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7,p##8,p##9,p1,p2,p3,p4,p5,p6)
+#   define BOOST_MPL_PP_EXT_PARAMS_8(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8,p##9,p1,p2,p3,p4,p5,p6,p7)
+#   define BOOST_MPL_PP_EXT_PARAMS_9(i,p) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9,p1,p2,p3,p4,p5,p6,p7,p8)
+
+#else
+
+#   include <ndnboost/preprocessor/arithmetic/add.hpp>
+#   include <ndnboost/preprocessor/arithmetic/sub.hpp>
+#   include <ndnboost/preprocessor/comma_if.hpp>
+#   include <ndnboost/preprocessor/repeat.hpp>
+#   include <ndnboost/preprocessor/tuple/elem.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+#   define BOOST_MPL_PP_AUX_EXT_PARAM_FUNC(unused, i, op) \
+    BOOST_PP_COMMA_IF(i) \
+    BOOST_PP_CAT( \
+          BOOST_PP_TUPLE_ELEM(2,1,op) \
+        , BOOST_PP_ADD_D(1, i, BOOST_PP_TUPLE_ELEM(2,0,op)) \
+        ) \
+    /**/
+
+#   define BOOST_MPL_PP_EXT_PARAMS(i, j, param) \
+    BOOST_PP_REPEAT( \
+          BOOST_PP_SUB_D(1,j,i) \
+        , BOOST_MPL_PP_AUX_EXT_PARAM_FUNC \
+        , (i,param) \
+        ) \
+    /**/
+
+#endif
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp b/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp
new file mode 100644
index 0000000..df13235
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp
@@ -0,0 +1,32 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: partial_spec_params.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/limits/arity.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/enum.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/sub.hpp>
+#include <ndnboost/preprocessor/comma_if.hpp>
+
+#define BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+BOOST_MPL_PP_PARAMS(n, param) \
+BOOST_PP_COMMA_IF(BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,n)) \
+BOOST_MPL_PP_ENUM( \
+      BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,n) \
+    , def \
+    ) \
+/**/
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/preprocessor/range.hpp b/ndnboost/mpl/aux_/preprocessor/range.hpp
new file mode 100644
index 0000000..497c9fb
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessor/range.hpp
@@ -0,0 +1,23 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: range.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/preprocessor/seq/subseq.hpp>
+
+#define BOOST_MPL_PP_RANGE(first, length) \
+    BOOST_PP_SEQ_SUBSEQ((0)(1)(2)(3)(4)(5)(6)(7)(8)(9), first, length) \
+/**/
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/preprocessor/repeat.hpp b/ndnboost/mpl/aux_/preprocessor/repeat.hpp
new file mode 100644
index 0000000..9b36136
--- /dev/null
+++ b/ndnboost/mpl/aux_/preprocessor/repeat.hpp
@@ -0,0 +1,51 @@
+
+#ifndef BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+#define BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2002-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: repeat.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/preprocessor.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+
+#   include <ndnboost/preprocessor/cat.hpp>
+
+#   define BOOST_MPL_PP_REPEAT(n,f,param) \
+    BOOST_PP_CAT(BOOST_MPL_PP_REPEAT_,n)(f,param) \
+    /**/
+    
+#   define BOOST_MPL_PP_REPEAT_0(f,p)
+#   define BOOST_MPL_PP_REPEAT_1(f,p) f(0,0,p)
+#   define BOOST_MPL_PP_REPEAT_2(f,p) f(0,0,p) f(0,1,p)
+#   define BOOST_MPL_PP_REPEAT_3(f,p) f(0,0,p) f(0,1,p) f(0,2,p)
+#   define BOOST_MPL_PP_REPEAT_4(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p)
+#   define BOOST_MPL_PP_REPEAT_5(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p)
+#   define BOOST_MPL_PP_REPEAT_6(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p)
+#   define BOOST_MPL_PP_REPEAT_7(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p)
+#   define BOOST_MPL_PP_REPEAT_8(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p)
+#   define BOOST_MPL_PP_REPEAT_9(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p) f(0,8,p)
+#   define BOOST_MPL_PP_REPEAT_10(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p) f(0,4,p) f(0,5,p) f(0,6,p) f(0,7,p) f(0,8,p) f(0,9,p)
+
+#else 
+
+#   include <ndnboost/preprocessor/repeat.hpp>
+
+#   define BOOST_MPL_PP_REPEAT(n,f,param) \
+    BOOST_PP_REPEAT(n,f,param) \
+    /**/
+
+#endif 
+
+#define BOOST_MPL_PP_REPEAT_IDENTITY_FUNC(unused1, unused2, x) x
+
+#endif // BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/push_back_impl.hpp b/ndnboost/mpl/aux_/push_back_impl.hpp
new file mode 100644
index 0000000..b2234ad
--- /dev/null
+++ b/ndnboost/mpl/aux_/push_back_impl.hpp
@@ -0,0 +1,70 @@
+
+#ifndef BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: push_back_impl.hpp 55679 2009-08-20 07:50:16Z agurtovoy $
+// $Date: 2009-08-20 00:50:16 -0700 (Thu, 20 Aug 2009) $
+// $Revision: 55679 $
+
+#include <ndnboost/mpl/push_back_fwd.hpp>
+#include <ndnboost/mpl/assert.hpp>
+#include <ndnboost/mpl/aux_/has_type.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/forwarding.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+
+#include <ndnboost/type_traits/is_same.hpp>
+
+namespace ndnboost { namespace mpl {
+
+struct has_push_back_arg {};
+
+// agurt 05/feb/04: no default implementation; the stub definition is needed 
+// to enable the default 'has_push_back' implementation below
+template< typename Tag >
+struct push_back_impl
+{
+    template< typename Sequence, typename T > struct apply
+    {
+        // should be instantiated only in the context of 'has_push_back_impl';
+        // if you've got an assert here, you are requesting a 'push_back' 
+        // specialization that doesn't exist.
+        BOOST_MPL_ASSERT_MSG(
+              ( ndnboost::is_same< T, has_push_back_arg >::value )
+            , REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST
+            , ( Sequence )
+            );
+    };
+};
+
+template< typename Tag >
+struct has_push_back_impl
+{
+    template< typename Seq > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+        : aux::has_type< push_back< Seq, has_push_back_arg > >
+    {
+#else
+    {
+        typedef aux::has_type< push_back< Seq, has_push_back_arg > > type;
+        BOOST_STATIC_CONSTANT(bool, value = 
+              (aux::has_type< push_back< Seq, has_push_back_arg > >::value)
+            );
+#endif
+    };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, push_back_impl)
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, has_push_back_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/push_front_impl.hpp b/ndnboost/mpl/aux_/push_front_impl.hpp
new file mode 100644
index 0000000..8ef53f8
--- /dev/null
+++ b/ndnboost/mpl/aux_/push_front_impl.hpp
@@ -0,0 +1,71 @@
+
+#ifndef BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: push_front_impl.hpp 55679 2009-08-20 07:50:16Z agurtovoy $
+// $Date: 2009-08-20 00:50:16 -0700 (Thu, 20 Aug 2009) $
+// $Revision: 55679 $
+
+#include <ndnboost/mpl/push_front_fwd.hpp>
+#include <ndnboost/mpl/assert.hpp>
+#include <ndnboost/mpl/aux_/has_type.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/forwarding.hpp>
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+
+#include <ndnboost/type_traits/is_same.hpp>
+
+namespace ndnboost { namespace mpl {
+
+struct has_push_front_arg {};
+
+// agurt 05/feb/04: no default implementation; the stub definition is needed 
+// to enable the default 'has_push_front' implementation below
+
+template< typename Tag >
+struct push_front_impl
+{
+    template< typename Sequence, typename T > struct apply
+    {
+        // should be instantiated only in the context of 'has_push_front_impl';
+        // if you've got an assert here, you are requesting a 'push_front' 
+        // specialization that doesn't exist.
+        BOOST_MPL_ASSERT_MSG(
+              ( ndnboost::is_same< T, has_push_front_arg >::value )
+            , REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST
+            , ( Sequence )
+            );
+    };
+};
+
+template< typename Tag >
+struct has_push_front_impl
+{
+    template< typename Seq > struct apply
+#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+        : aux::has_type< push_front< Seq, has_push_front_arg > >
+    {
+#else
+    {
+        typedef aux::has_type< push_front< Seq, has_push_front_arg > > type;
+        BOOST_STATIC_CONSTANT(bool, value = 
+              (aux::has_type< push_front< Seq, has_push_front_arg > >::value)
+            );
+#endif
+    };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, push_front_impl)
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, has_push_front_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/reverse_fold_impl.hpp b/ndnboost/mpl/aux_/reverse_fold_impl.hpp
new file mode 100644
index 0000000..3f5e858
--- /dev/null
+++ b/ndnboost/mpl/aux_/reverse_fold_impl.hpp
@@ -0,0 +1,44 @@
+
+#ifndef BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: reverse_fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/next_prior.hpp>
+#   include <ndnboost/mpl/deref.hpp>
+#   include <ndnboost/mpl/apply.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+#       include <ndnboost/mpl/if.hpp>
+#       include <ndnboost/type_traits/is_same.hpp>
+#   endif
+#endif
+
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   define AUX778076_FOLD_IMPL_OP(iter) typename deref<iter>::type
+#   define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold
+#   include <ndnboost/mpl/aux_/reverse_fold_impl_body.hpp>
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp b/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp
new file mode 100644
index 0000000..838e63e
--- /dev/null
+++ b/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp
@@ -0,0 +1,412 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: reverse_fold_impl_body.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#   include <ndnboost/mpl/limits/unrolling.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+
+#   include <ndnboost/preprocessor/arithmetic/sub.hpp>
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/dec.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+// local macros, #undef-ined at the end of the header
+
+#   define AUX778076_ITER_FOLD_FORWARD_STEP(unused, n_, unused2) \
+    typedef typename apply2< \
+          ForwardOp \
+        , BOOST_PP_CAT(fwd_state,n_) \
+        , AUX778076_FOLD_IMPL_OP(BOOST_PP_CAT(iter,n_)) \
+        >::type BOOST_PP_CAT(fwd_state,BOOST_PP_INC(n_)); \
+    typedef typename mpl::next<BOOST_PP_CAT(iter,n_)>::type \
+        BOOST_PP_CAT(iter,BOOST_PP_INC(n_)); \
+    /**/
+
+#   define AUX778076_ITER_FOLD_BACKWARD_STEP_FUNC(n_) \
+    typedef typename apply2< \
+          BackwardOp \
+        , BOOST_PP_CAT(bkwd_state,n_) \
+        , AUX778076_FOLD_IMPL_OP(BOOST_PP_CAT(iter,BOOST_PP_DEC(n_))) \
+        >::type BOOST_PP_CAT(bkwd_state,BOOST_PP_DEC(n_)); \
+    /**/
+
+#   define AUX778076_ITER_FOLD_BACKWARD_STEP(unused, n_, j) \
+    AUX778076_ITER_FOLD_BACKWARD_STEP_FUNC( \
+          BOOST_PP_SUB_D(1,j,n_) \
+        ) \
+    /**/
+
+#   define AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(n_) \
+    typedef typename nested_chunk::state BOOST_PP_CAT(bkwd_state,n_);
+    /**/
+
+#   define AUX778076_FOLD_IMPL_NAME \
+    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \
+    /**/
+
+#   define AUX778076_FOLD_CHUNK_NAME \
+    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \
+    /**/
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+/// forward declaration
+template<
+      BOOST_MPL_AUX_NTTP_DECL(long, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME;
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+
+#   define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/reverse_fold_impl_body.hpp>))
+#   include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template<
+      BOOST_MPL_AUX_NTTP_DECL(long, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+
+    BOOST_MPL_PP_REPEAT(
+          BOOST_MPL_LIMIT_UNROLLING
+        , AUX778076_ITER_FOLD_FORWARD_STEP
+        , unused
+        )
+
+    typedef AUX778076_FOLD_IMPL_NAME<
+          ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING )
+        , BOOST_PP_CAT(iter,BOOST_MPL_LIMIT_UNROLLING)
+        , Last
+        , BOOST_PP_CAT(fwd_state,BOOST_MPL_LIMIT_UNROLLING)
+        , BackwardOp
+        , ForwardOp
+        > nested_chunk;
+        
+    AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(BOOST_MPL_LIMIT_UNROLLING)
+
+    BOOST_MPL_PP_REPEAT(
+          BOOST_MPL_LIMIT_UNROLLING
+        , AUX778076_ITER_FOLD_BACKWARD_STEP
+        , BOOST_MPL_LIMIT_UNROLLING
+        )
+
+    typedef bkwd_state0 state;
+    typedef typename nested_chunk::iterator iterator;
+};
+
+// fallback implementation for sequences of unknown size
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME<-1,First,Last,State,BackwardOp,ForwardOp>
+{
+    typedef AUX778076_FOLD_IMPL_NAME<
+          -1
+        , typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State,AUX778076_FOLD_IMPL_OP(First)>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , AUX778076_FOLD_IMPL_OP(First)
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME<-1,Last,Last,State,BackwardOp,ForwardOp>
+{
+    typedef State state;
+    typedef Last iterator;
+};
+
+#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) >
+struct AUX778076_FOLD_CHUNK_NAME;
+
+#   define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, BOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/reverse_fold_impl_body.hpp>))
+#   include BOOST_PP_ITERATE()
+
+// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+template< BOOST_MPL_AUX_NTTP_DECL(long, N) > 
+struct AUX778076_FOLD_CHUNK_NAME
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        > 
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+
+        BOOST_MPL_PP_REPEAT(
+              BOOST_MPL_LIMIT_UNROLLING
+            , AUX778076_ITER_FOLD_FORWARD_STEP
+            , unused
+            )
+
+        typedef AUX778076_FOLD_IMPL_NAME<
+              ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING )
+            , BOOST_PP_CAT(iter,BOOST_MPL_LIMIT_UNROLLING)
+            , Last
+            , BOOST_PP_CAT(fwd_state,BOOST_MPL_LIMIT_UNROLLING)
+            , BackwardOp
+            , ForwardOp
+            > nested_chunk;
+            
+        AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(BOOST_MPL_LIMIT_UNROLLING)
+
+        BOOST_MPL_PP_REPEAT(
+              BOOST_MPL_LIMIT_UNROLLING
+            , AUX778076_ITER_FOLD_BACKWARD_STEP
+            , BOOST_MPL_LIMIT_UNROLLING
+            )
+
+        typedef bkwd_state0 state;
+        typedef typename nested_chunk::iterator iterator;
+    };
+};
+
+// fallback implementation for sequences of unknown size
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step);
+
+template<
+      typename Last
+    , typename State
+    >
+struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)
+{
+    typedef Last iterator;
+    typedef State state;
+};
+
+template<> 
+struct AUX778076_FOLD_CHUNK_NAME<-1>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        > 
+    struct result_
+    {
+        typedef typename if_<
+              typename is_same<First,Last>::type
+            , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)<Last,State>
+            , BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)<First,Last,State,BackwardOp,ForwardOp>
+            >::type res_;
+
+        typedef typename res_::state state;
+        typedef typename res_::iterator iterator;
+    };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+    /// ETI workaround
+    template<> struct result_<int,int,int,int,int>
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+#endif
+};
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)
+{
+    typedef AUX778076_FOLD_CHUNK_NAME<-1>::template result_<
+          typename mpl::next<First>::type
+        , Last
+        , typename apply2<ForwardOp,State,AUX778076_FOLD_IMPL_OP(First)>::type
+        , BackwardOp
+        , ForwardOp
+        > nested_step;
+
+    typedef typename apply2<
+          BackwardOp
+        , typename nested_step::state
+        , AUX778076_FOLD_IMPL_OP(First)
+        >::type state;
+
+    typedef typename nested_step::iterator iterator;
+};
+
+template<
+      BOOST_MPL_AUX_NTTP_DECL(long, N)
+    , typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    > 
+struct AUX778076_FOLD_IMPL_NAME
+    : AUX778076_FOLD_CHUNK_NAME<N>
+        ::template result_<First,Last,State,BackwardOp,ForwardOp>
+{
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+}}}
+
+#   undef AUX778076_FIRST_BACKWARD_STATE_TYPEDEF
+#   undef AUX778076_ITER_FOLD_BACKWARD_STEP
+#   undef AUX778076_ITER_FOLD_BACKWARD_STEP_FUNC
+#   undef AUX778076_ITER_FOLD_FORWARD_STEP
+
+#undef AUX778076_FOLD_IMPL_OP
+#undef AUX778076_FOLD_IMPL_NAME_PREFIX
+
+///// iteration
+
+#else
+
+#   define n_ BOOST_PP_FRAME_ITERATION(1)
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+
+template<
+      typename First
+    , typename Last
+    , typename State
+    , typename BackwardOp
+    , typename ForwardOp
+    >
+struct AUX778076_FOLD_IMPL_NAME<n_,First,Last,State,BackwardOp,ForwardOp>
+{
+    typedef First iter0;
+    typedef State fwd_state0;
+
+    BOOST_MPL_PP_REPEAT(
+          n_
+        , AUX778076_ITER_FOLD_FORWARD_STEP
+        , unused
+        )
+
+    typedef BOOST_PP_CAT(fwd_state,n_) BOOST_PP_CAT(bkwd_state,n_);
+
+    BOOST_MPL_PP_REPEAT(
+          n_
+        , AUX778076_ITER_FOLD_BACKWARD_STEP
+        , n_
+        )
+
+    typedef bkwd_state0 state;
+    typedef BOOST_PP_CAT(iter,n_) iterator;
+};
+
+#else
+
+template<> struct AUX778076_FOLD_CHUNK_NAME<n_>
+{
+    template<
+          typename First
+        , typename Last
+        , typename State
+        , typename BackwardOp
+        , typename ForwardOp
+        >
+    struct result_
+    {
+        typedef First iter0;
+        typedef State fwd_state0;
+
+        BOOST_MPL_PP_REPEAT(
+              n_
+            , AUX778076_ITER_FOLD_FORWARD_STEP
+            , unused
+            )
+
+        typedef BOOST_PP_CAT(fwd_state,n_) BOOST_PP_CAT(bkwd_state,n_);
+
+        BOOST_MPL_PP_REPEAT(
+              n_
+            , AUX778076_ITER_FOLD_BACKWARD_STEP
+            , n_
+            )
+
+        typedef bkwd_state0 state;
+        typedef BOOST_PP_CAT(iter,n_) iterator;
+    };
+
+#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+    /// ETI workaround
+    template<> struct result_<int,int,int,int,int>
+    {
+        typedef int state;
+        typedef int iterator;
+    };
+#endif
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#   undef n_
+
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/sequence_wrapper.hpp b/ndnboost/mpl/aux_/sequence_wrapper.hpp
new file mode 100644
index 0000000..8ec8f09
--- /dev/null
+++ b/ndnboost/mpl/aux_/sequence_wrapper.hpp
@@ -0,0 +1,292 @@
+
+// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: sequence_wrapper.hpp 49271 2008-10-11 06:46:00Z agurtovoy $
+// $Date: 2008-10-10 23:46:00 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49271 $
+
+#   include <ndnboost/mpl/aux_/config/ctps.hpp>
+#   include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+
+#   include <ndnboost/preprocessor/arithmetic/sub.hpp>
+#   include <ndnboost/preprocessor/tuple/elem.hpp>
+#   include <ndnboost/preprocessor/enum_params_with_a_default.hpp>
+#   include <ndnboost/preprocessor/enum_params.hpp>
+#   include <ndnboost/preprocessor/enum.hpp>
+#   include <ndnboost/preprocessor/repeat.hpp>
+#   include <ndnboost/preprocessor/comma_if.hpp>
+#   include <ndnboost/preprocessor/iterate.hpp>
+
+#if defined(BOOST_MPL_PREPROCESSING_MODE)
+#   undef LONG_MAX
+#endif
+
+namespace ndnboost { namespace mpl {
+
+#if !defined(AUX778076_SEQUENCE_BASE_NAME)
+#   define AUX778076_SEQUENCE_BASE_NAME AUX778076_SEQUENCE_NAME
+#endif
+
+#if !defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
+
+#   define AUX778076_SEQUENCE_PARAM_NAME T
+#   define AUX778076_SEQUENCE_TEMPLATE_PARAM typename T
+#   define AUX778076_SEQUENCE_DEFAULT na
+
+#   define AUX778076_SEQUENCE_NAME_N(n) \
+    BOOST_PP_CAT(AUX778076_SEQUENCE_BASE_NAME,n) \
+    /**/
+
+#   define AUX778076_SEQUENCE_PARAMS() \
+    BOOST_PP_ENUM_PARAMS( \
+          AUX778076_SEQUENCE_LIMIT \
+        , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+        ) \
+    /**/
+
+#   define AUX778076_SEQUENCE_ARGS() \
+    BOOST_PP_ENUM_PARAMS( \
+          AUX778076_SEQUENCE_LIMIT \
+        , T \
+        ) \
+    /**/
+
+#   define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
+     BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
+          AUX778076_SEQUENCE_LIMIT \
+        , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+        , AUX778076_SEQUENCE_DEFAULT \
+        ) \
+    /**/
+
+#   define AUX778076_SEQUENCE_N_PARAMS(n) \
+    BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
+    /**/
+
+#   define AUX778076_SEQUENCE_N_ARGS(n) \
+    BOOST_PP_ENUM_PARAMS(n, T) \
+    /**/
+
+#   define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \
+    BOOST_PP_ENUM_PARAMS(n, T) \
+    BOOST_PP_COMMA_IF(n) \
+    BOOST_PP_ENUM( \
+          BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
+        , BOOST_PP_TUPLE_ELEM_3_2 \
+        , AUX778076_SEQUENCE_DEFAULT \
+        ) \
+    /**/
+
+#else // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
+
+#   define AUX778076_SEQUENCE_PARAM_NAME C
+#   define AUX778076_SEQUENCE_TEMPLATE_PARAM BOOST_MPL_AUX_NTTP_DECL(long, C)
+#   define AUX778076_SEQUENCE_DEFAULT LONG_MAX
+
+#   define AUX778076_SEQUENCE_PARAMS() \
+    typename T, BOOST_PP_ENUM_PARAMS( \
+          AUX778076_SEQUENCE_LIMIT \
+        , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+        ) \
+    /**/
+
+#   define AUX778076_SEQUENCE_ARGS() \
+    T, BOOST_PP_ENUM_PARAMS( \
+          AUX778076_SEQUENCE_LIMIT \
+        , C \
+        ) \
+    /**/
+
+#   define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
+    typename T, \
+    BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
+          AUX778076_SEQUENCE_LIMIT \
+        , AUX778076_SEQUENCE_TEMPLATE_PARAM \
+        , AUX778076_SEQUENCE_DEFAULT \
+        ) \
+    /**/
+
+#   define AUX778076_SEQUENCE_N_PARAMS(n) \
+    typename T BOOST_PP_COMMA_IF(n) \
+    BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
+    /**/
+
+#   if !defined(AUX778076_SEQUENCE_CONVERT_CN_TO)
+#       define AUX778076_SEQUENCE_CONVERT_CN_TO(z,n,TARGET) BOOST_PP_CAT(C,n)
+#   endif
+
+#   define AUX778076_SEQUENCE_N_ARGS(n) \
+    T BOOST_PP_COMMA_IF(n) \
+    BOOST_PP_ENUM(n,AUX778076_SEQUENCE_CONVERT_CN_TO,T) \
+    /**/
+
+#   define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \
+    T, BOOST_PP_ENUM_PARAMS(n, C) \
+    BOOST_PP_COMMA_IF(n) \
+    BOOST_PP_ENUM( \
+          BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
+        , BOOST_PP_TUPLE_ELEM_3_2 \
+        , AUX778076_SEQUENCE_DEFAULT \
+        ) \
+    /**/
+
+#endif // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
+
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+// forward declaration
+template<
+      AUX778076_SEQUENCE_DEFAULT_PARAMS()
+    >
+struct AUX778076_SEQUENCE_NAME;
+#else
+namespace aux {
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > 
+struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser);
+}
+#endif
+
+#define BOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, AUX778076_SEQUENCE_LIMIT, <ndnboost/mpl/aux_/sequence_wrapper.hpp>))
+#include BOOST_PP_ITERATE()
+
+// real C++ version is already taken care of
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+namespace aux {
+// ???_count_args
+#define AUX778076_COUNT_ARGS_PREFIX         AUX778076_SEQUENCE_NAME
+#define AUX778076_COUNT_ARGS_DEFAULT        AUX778076_SEQUENCE_DEFAULT
+#define AUX778076_COUNT_ARGS_PARAM_NAME     AUX778076_SEQUENCE_PARAM_NAME
+#define AUX778076_COUNT_ARGS_TEMPLATE_PARAM AUX778076_SEQUENCE_TEMPLATE_PARAM
+#define AUX778076_COUNT_ARGS_ARITY          AUX778076_SEQUENCE_LIMIT
+#define AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
+#include <ndnboost/mpl/aux_/count_args.hpp>
+
+template<
+      AUX778076_SEQUENCE_PARAMS()
+    >
+struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)
+{
+    typedef aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_count_args)<
+          BOOST_PP_ENUM_PARAMS(AUX778076_SEQUENCE_LIMIT, AUX778076_SEQUENCE_PARAM_NAME)
+        > arg_num_;
+    
+    typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)< arg_num_::value >
+        ::template result_< AUX778076_SEQUENCE_ARGS() >::type type;
+};
+
+} // namespace aux
+
+template<
+      AUX778076_SEQUENCE_DEFAULT_PARAMS()
+    >
+struct AUX778076_SEQUENCE_NAME
+    : aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
+          AUX778076_SEQUENCE_ARGS()
+        >::type
+{
+    typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
+          AUX778076_SEQUENCE_ARGS()
+        >::type type;
+};
+
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#   undef AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS
+#   undef AUX778076_SEQUENCE_N_ARGS
+#   undef AUX778076_SEQUENCE_CONVERT_CN_TO
+#   undef AUX778076_SEQUENCE_N_PARAMS
+#   undef AUX778076_SEQUENCE_DEFAULT_PARAMS
+#   undef AUX778076_SEQUENCE_ARGS
+#   undef AUX778076_SEQUENCE_PARAMS
+#   undef AUX778076_SEQUENCE_NAME_N
+#   undef AUX778076_SEQUENCE_DEFAULT
+#   undef AUX778076_SEQUENCE_TEMPLATE_PARAM
+#   undef AUX778076_SEQUENCE_PARAM_NAME
+#   undef AUX778076_SEQUENCE_LIMIT
+#   undef AUX778076_SEQUENCE_BASE_NAME
+#   undef AUX778076_SEQUENCE_NAME
+#   undef AUX778076_SEQUENCE_INTEGRAL_WRAPPER
+
+}}
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+
+#if i_ == AUX778076_SEQUENCE_LIMIT
+
+/// primary template (not a specialization!)
+template<
+      AUX778076_SEQUENCE_N_PARAMS(i_)
+    >
+struct AUX778076_SEQUENCE_NAME
+    : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >
+{
+    typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
+};
+
+#else
+
+template<
+      AUX778076_SEQUENCE_N_PARAMS(i_)
+    >
+struct AUX778076_SEQUENCE_NAME< AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(i_) >
+    : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >
+{
+#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
+    typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
+#else
+    typedef AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
+#endif
+};
+
+#endif // i_ == AUX778076_SEQUENCE_LIMIT
+
+#   else
+
+namespace aux {
+
+template<>
+struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)<i_>
+{
+    template<
+          AUX778076_SEQUENCE_PARAMS()
+        >
+    struct result_
+    {
+#if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
+        typedef typename AUX778076_SEQUENCE_NAME_N(i_)<
+              AUX778076_SEQUENCE_N_ARGS(i_)
+            >::type type;
+#else
+        typedef AUX778076_SEQUENCE_NAME_N(i_)<
+              AUX778076_SEQUENCE_N_ARGS(i_)
+            >::type type;
+#endif
+    };
+};
+
+} // namespace aux
+
+#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/size_impl.hpp b/ndnboost/mpl/aux_/size_impl.hpp
new file mode 100644
index 0000000..bf467f7
--- /dev/null
+++ b/ndnboost/mpl/aux_/size_impl.hpp
@@ -0,0 +1,52 @@
+
+#ifndef BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
+#define BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: size_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/size_fwd.hpp>
+#include <ndnboost/mpl/begin_end.hpp>
+#include <ndnboost/mpl/distance.hpp>
+#include <ndnboost/mpl/aux_/traits_lambda_spec.hpp>
+#include <ndnboost/mpl/aux_/config/workaround.hpp>
+
+namespace ndnboost { namespace mpl {
+
+// default implementation; conrete sequences might override it by 
+// specializing either the 'size_impl' or the primary 'size' template
+
+template< typename Tag >
+struct size_impl
+{
+    template< typename Sequence > struct apply
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561))
+        : distance<
+              typename begin<Sequence>::type
+            , typename end<Sequence>::type
+            >
+    {
+#else
+    {
+        typedef typename distance<
+              typename begin<Sequence>::type
+            , typename end<Sequence>::type
+            >::type type;
+#endif
+    };
+};
+
+BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, size_impl)
+
+}}
+
+#endif // BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/template_arity.hpp b/ndnboost/mpl/aux_/template_arity.hpp
new file mode 100644
index 0000000..47a8398
--- /dev/null
+++ b/ndnboost/mpl/aux_/template_arity.hpp
@@ -0,0 +1,189 @@
+
+#if !defined(BOOST_PP_IS_ITERATING)
+
+///// header body
+
+#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+#define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: template_arity.hpp 61584 2010-04-26 18:48:26Z agurtovoy $
+// $Date: 2010-04-26 11:48:26 -0700 (Mon, 26 Apr 2010) $
+// $Revision: 61584 $
+
+#include <ndnboost/mpl/aux_/config/ttp.hpp>
+#include <ndnboost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#   include <ndnboost/mpl/aux_/template_arity_fwd.hpp>
+#   include <ndnboost/mpl/int.hpp>
+#   if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+#       include <ndnboost/mpl/aux_/type_wrapper.hpp>
+#   endif
+#   else
+#       include <ndnboost/mpl/aux_/has_rebind.hpp>
+#   endif
+#endif
+
+#include <ndnboost/mpl/aux_/config/static_constant.hpp>
+#include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+
+#   define BOOST_MPL_PREPROCESSED_HEADER template_arity.hpp
+#   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
+
+#else
+
+#   if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+
+#   include <ndnboost/mpl/limits/arity.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/range.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/repeat.hpp>
+#   include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#   include <ndnboost/mpl/aux_/nttp_decl.hpp>
+
+#   include <ndnboost/preprocessor/seq/fold_left.hpp>
+#   include <ndnboost/preprocessor/comma_if.hpp>
+#   include <ndnboost/preprocessor/iterate.hpp>
+#   include <ndnboost/preprocessor/inc.hpp>
+#   include <ndnboost/preprocessor/cat.hpp>
+
+#   define AUX778076_ARITY BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
+{
+    typedef char (&type)[N + 1];
+};
+
+#   define AUX778076_MAX_ARITY_OP(unused, state, i_) \
+    ( BOOST_PP_CAT(C,i_) > 0 ? BOOST_PP_CAT(C,i_) : state ) \
+/**/
+
+template<
+      BOOST_MPL_PP_PARAMS(AUX778076_ARITY, BOOST_MPL_AUX_NTTP_DECL(int, C))
+    >
+struct max_arity
+{
+    BOOST_STATIC_CONSTANT(int, value = 
+          BOOST_PP_SEQ_FOLD_LEFT(
+              AUX778076_MAX_ARITY_OP
+            , -1
+            , BOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
+            )
+        );
+};
+
+#   undef AUX778076_MAX_ARITY_OP
+
+arity_tag<0>::type arity_helper(...);
+
+#   define BOOST_PP_ITERATION_LIMITS (1, AUX778076_ARITY)
+#   define BOOST_PP_FILENAME_1 <ndnboost/mpl/aux_/template_arity.hpp>
+#   include BOOST_PP_ITERATE()
+
+template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
+struct template_arity_impl
+{
+    BOOST_STATIC_CONSTANT(int, value = 
+          sizeof(::ndnboost::mpl::aux::arity_helper(type_wrapper<F>(),arity_tag<N>())) - 1
+        );
+};
+
+#   define AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION(unused, i_, F) \
+    BOOST_PP_COMMA_IF(i_) template_arity_impl<F,BOOST_PP_INC(i_)>::value \
+/**/
+
+template< typename F >
+struct template_arity
+{
+    BOOST_STATIC_CONSTANT(int, value = (
+          max_arity< BOOST_MPL_PP_REPEAT(
+              AUX778076_ARITY
+            , AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
+            , F
+            ) >::value
+        ));
+        
+    typedef mpl::int_<value> type;
+};
+
+#   undef AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
+
+#   undef AUX778076_ARITY
+
+}}}
+
+#   endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
+#   else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+#   include <ndnboost/mpl/aux_/config/eti.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< bool >
+struct template_arity_impl
+{
+    template< typename F > struct result_
+        : mpl::int_<-1>
+    {
+    };
+};
+
+template<>
+struct template_arity_impl<true>
+{
+    template< typename F > struct result_
+        : F::arity
+    {
+    };
+};
+
+template< typename F >
+struct template_arity
+    : template_arity_impl< ::ndnboost::mpl::aux::has_rebind<F>::value >
+        ::template result_<F>
+{
+};
+
+#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+template<>
+struct template_arity<int>
+    : mpl::int_<-1>
+{
+};
+#endif
+
+}}}
+
+#   endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+
+///// iteration
+
+#else
+#define i_ BOOST_PP_FRAME_ITERATION(1)
+
+template<
+      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
+    , BOOST_MPL_PP_PARAMS(i_, typename T)
+    >
+typename arity_tag<i_>::type
+arity_helper(type_wrapper< F<BOOST_MPL_PP_PARAMS(i_, T)> >, arity_tag<i_>);
+
+#undef i_
+#endif // BOOST_PP_IS_ITERATING
diff --git a/ndnboost/mpl/aux_/traits_lambda_spec.hpp b/ndnboost/mpl/aux_/traits_lambda_spec.hpp
new file mode 100644
index 0000000..a3ab41f
--- /dev/null
+++ b/ndnboost/mpl/aux_/traits_lambda_spec.hpp
@@ -0,0 +1,63 @@
+
+#ifndef BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+#define BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2008
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: traits_lambda_spec.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/sequence_tag_fwd.hpp>
+#include <ndnboost/mpl/void.hpp>
+#include <ndnboost/mpl/aux_/preprocessor/params.hpp>
+#include <ndnboost/mpl/aux_/config/lambda.hpp>
+
+#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+
+#   define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) /**/
+
+#elif !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+
+#   define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+template<> struct trait<void_> \
+{ \
+    template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+    { \
+    }; \
+}; \
+/**/
+
+#else
+
+#   define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+template<> struct trait<void_> \
+{ \
+    template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+    { \
+    }; \
+}; \
+template<> struct trait<int> \
+{ \
+    template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+    { \
+        typedef int type; \
+    }; \
+}; \
+/**/
+
+#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+
+
+#define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i, trait) \
+    BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+    template<> struct trait<non_sequence_tag> {}; \
+/**/
+
+#endif // BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
diff --git a/ndnboost/mpl/aux_/type_wrapper.hpp b/ndnboost/mpl/aux_/type_wrapper.hpp
new file mode 100644
index 0000000..11139c3
--- /dev/null
+++ b/ndnboost/mpl/aux_/type_wrapper.hpp
@@ -0,0 +1,47 @@
+
+#ifndef BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+#define BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+
+// Copyright Aleksey Gurtovoy 2000-2004
+// Copyright Peter Dimov 2000-2003
+//
+// Distributed under the Boost Software License, Version 1.0. 
+// (See accompanying file LICENSE_1_0.txt or copy at 
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/mpl for documentation.
+
+// $Id: type_wrapper.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
+// $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
+// $Revision: 49267 $
+
+#include <ndnboost/mpl/aux_/config/ctps.hpp>
+
+namespace ndnboost { namespace mpl { namespace aux {
+
+template< typename T > struct type_wrapper
+{
+    typedef T type;
+};
+
+#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+// agurt 08/may/03: a complicated way to extract the wrapped type; need it 
+// mostly for the sake of GCC (3.2.x), which ICEs if you try to extract the 
+// nested 'type' from 'type_wrapper<T>' when the latter was the result of a
+// 'typeof' expression
+template< typename T > struct wrapped_type;
+
+template< typename T > struct wrapped_type< type_wrapper<T> >
+{
+    typedef T type;
+};
+#else
+template< typename W > struct wrapped_type
+{
+    typedef typename W::type type;
+};
+#endif
+
+}}}
+
+#endif // BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED