diff --git a/include/ndnboost/mpl/O1_size.hpp b/include/ndnboost/mpl/O1_size.hpp
index 675b05f..d6a4633 100644
--- a/include/ndnboost/mpl/O1_size.hpp
+++ b/include/ndnboost/mpl/O1_size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_O1_SIZE_HPP_INCLUDED
-#define BOOST_MPL_O1_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_O1_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_O1_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,17 +24,17 @@
 
 // returns sequence size if it's an O(1) operation; otherwise returns -1
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct O1_size
     : O1_size_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, O1_size, (Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, O1_size, (Sequence))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, O1_size)
+NDNBOOST_MPL_AUX_NA_SPEC(1, O1_size)
 
 }}
 
-#endif // BOOST_MPL_O1_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_O1_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/O1_size_fwd.hpp b/include/ndnboost/mpl/O1_size_fwd.hpp
index 23542c6..4a97863 100644
--- a/include/ndnboost/mpl/O1_size_fwd.hpp
+++ b/include/ndnboost/mpl/O1_size_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
-#define BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_O1_SIZE_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/advance.hpp b/include/ndnboost/mpl/advance.hpp
index 6cfd7ac..6d00835 100644
--- a/include/ndnboost/mpl/advance.hpp
+++ b/include/ndnboost/mpl/advance.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ADVANCE_HPP_INCLUDED
-#define BOOST_MPL_ADVANCE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ADVANCE_HPP_INCLUDED
+#define NDNBOOST_MPL_ADVANCE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -40,8 +40,8 @@
 
         typedef typename if_<
               backward_
-            , aux::advance_backward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value >
-            , aux::advance_forward< BOOST_MPL_AUX_VALUE_WKND(offset_)::value >
+            , aux::advance_backward< NDNBOOST_MPL_AUX_VALUE_WKND(offset_)::value >
+            , aux::advance_forward< NDNBOOST_MPL_AUX_VALUE_WKND(offset_)::value >
             >::type f_;
 
         typedef typename apply_wrap1<f_,Iterator>::type type;
@@ -50,8 +50,8 @@
 
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Iterator)
-    , typename BOOST_MPL_AUX_NA_PARAM(N)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Iterator)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N)
     >
 struct advance
     : advance_impl< typename tag<Iterator>::type >
@@ -61,7 +61,7 @@
 
 template<
       typename Iterator
-    , BOOST_MPL_AUX_NTTP_DECL(long, N)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, N)
     >
 struct advance_c
     : advance_impl< typename tag<Iterator>::type >
@@ -69,8 +69,8 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, advance)
+NDNBOOST_MPL_AUX_NA_SPEC(2, advance)
 
 }}
 
-#endif // BOOST_MPL_ADVANCE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ADVANCE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/advance_fwd.hpp b/include/ndnboost/mpl/advance_fwd.hpp
index 0f6864d..1d25862 100644
--- a/include/ndnboost/mpl/advance_fwd.hpp
+++ b/include/ndnboost/mpl/advance_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
-#define BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,11 +18,11 @@
 
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_COMMON_NAME_WKND(advance)
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(advance)
 
 template< typename Tag > struct advance_impl;
 template< typename Iterator, typename N > struct advance;
 
 }}
 
-#endif // BOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ADVANCE_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/always.hpp b/include/ndnboost/mpl/always.hpp
index 7c37f0d..eeba646 100644
--- a/include/ndnboost/mpl/always.hpp
+++ b/include/ndnboost/mpl/always.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ALWAYS_HPP_INCLUDED
-#define BOOST_MPL_ALWAYS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ALWAYS_HPP_INCLUDED
+#define NDNBOOST_MPL_ALWAYS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -24,7 +24,7 @@
 {
     template<
           typename T
-        BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(1, typename T, na)
+        NDNBOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(1, typename T, na)
         >
     struct apply
     {
@@ -32,8 +32,8 @@
     };
 };
 
-BOOST_MPL_AUX_ARITY_SPEC(1, always)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, always)
 
 }}
 
-#endif // BOOST_MPL_ALWAYS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ALWAYS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/and.hpp b/include/ndnboost/mpl/and.hpp
index c23a6b7..3bc9d48 100644
--- a/include/ndnboost/mpl/and.hpp
+++ b/include/ndnboost/mpl/and.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AND_HPP_INCLUDED
-#define BOOST_MPL_AND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AND_HPP_INCLUDED
+#define NDNBOOST_MPL_AND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,8 +16,8 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
 #   include <ndnboost/mpl/bool.hpp>
 #   include <ndnboost/mpl/aux_/nested_type_wknd.hpp>
@@ -38,7 +38,7 @@
 #endif
 #endif
 
-#   define BOOST_MPL_PREPROCESSED_HEADER and.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER and.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #if defined(_MSC_VER)
@@ -56,5 +56,5 @@
 #   define AUX778076_OP_VALUE2 true
 #   include <ndnboost/mpl/aux_/logical_op.hpp>
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/apply.hpp b/include/ndnboost/mpl/apply.hpp
index fa18a98..0fd6612 100644
--- a/include/ndnboost/mpl/apply.hpp
+++ b/include/ndnboost/mpl/apply.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_APPLY_HPP_INCLUDED
-#define BOOST_MPL_APPLY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_APPLY_HPP_INCLUDED
+#define NDNBOOST_MPL_APPLY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,7 +18,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/apply_fwd.hpp>
 #   include <ndnboost/mpl/apply_wrap.hpp>
 #   include <ndnboost/mpl/placeholders.hpp>
@@ -29,10 +29,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER apply.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER apply.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -58,52 +58,52 @@
 
 // local macros, #undef-ined at the end of the header
 #   define AUX778076_APPLY_PARAMS(param) \
-    BOOST_MPL_PP_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         ) \
     /**/
 
 #   define AUX778076_APPLY_DEF_PARAMS(param, value) \
-    BOOST_MPL_PP_DEFAULT_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_DEFAULT_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         , value \
         ) \
     /**/
 
 #   define AUX778076_APPLY_N_PARAMS(n, param) \
-    BOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_MPL_PP_PARAMS(n, param) \
     /**/
 
 #   define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
-    BOOST_PP_COMMA_IF(n) \
-    BOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_MPL_PP_PARAMS(n, param) \
     /**/
 
 #   define AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(n, param, def) \
-    BOOST_PP_COMMA_IF(n) \
-    BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+    NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
     /**/
     
 #   define AUX778076_APPLY_N_SPEC_PARAMS(n, param) \
-    BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
+    NDNBOOST_MPL_PP_ENUM(NDNBOOST_PP_INC(n), param) \
     /**/
 
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/apply.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/apply.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
-#   if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+#   if !defined(NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE)
 // real C++ version is already taken care of
-#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 namespace aux {
 // apply_count_args
 #define AUX778076_COUNT_ARGS_PREFIX apply
 #define AUX778076_COUNT_ARGS_DEFAULT na
-#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#define AUX778076_COUNT_ARGS_ARITY NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 #include <ndnboost/mpl/aux_/count_args.hpp>
 }
 
@@ -118,8 +118,8 @@
 {
 };
 
-#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#   endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+#   endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   endif // NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE
 
 #   undef AUX778076_APPLY_N_SPEC_PARAMS
 #   undef AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS
@@ -130,62 +130,62 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_APPLY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_APPLY_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
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
 
-#   define i_ BOOST_PP_FRAME_ITERATION(1)
+#   define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<
       typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply,i_)
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-    : BOOST_PP_CAT(apply_wrap,i_)< 
+struct NDNBOOST_PP_CAT(apply,i_)
+#if !NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
+    : NDNBOOST_PP_CAT(apply_wrap,i_)< 
           typename lambda<F>::type
         AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
         >
 {
 #else
 {
-    typedef typename BOOST_PP_CAT(apply_wrap,i_)< 
+    typedef typename NDNBOOST_PP_CAT(apply_wrap,i_)< 
           typename lambda<F>::type
         AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
         >::type type;
 #endif
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
-          BOOST_PP_INC(i_)
-        , BOOST_PP_CAT(apply,i_)
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
+          NDNBOOST_PP_INC(i_)
+        , NDNBOOST_PP_CAT(apply,i_)
         , (F AUX778076_APPLY_N_COMMA_PARAMS(i_,T))
         )
 };
 
 
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
 /// workaround for ETI bug
 template<>
-struct BOOST_PP_CAT(apply,i_)<AUX778076_APPLY_N_SPEC_PARAMS(i_, int)>
+struct NDNBOOST_PP_CAT(apply,i_)<AUX778076_APPLY_N_SPEC_PARAMS(i_, int)>
 {
     typedef int type;
 };
 #endif
 
-#   if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   if !defined(NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+#   if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
-#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#if i_ == NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 /// primary template (not a specialization!)
 template<
       typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
     >
 struct apply
-    : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
+    : NDNBOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
 {
 };
 #else
@@ -193,14 +193,14 @@
       typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
     >
 struct apply< F AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(i_, T, na) >
-    : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
+    : NDNBOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
 {
 };
 #endif
 
-#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+#if !defined(NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE)
 namespace aux {
 
 template<>
@@ -211,7 +211,7 @@
         >
     struct result_
     {
-        typedef BOOST_PP_CAT(apply,i_)<
+        typedef NDNBOOST_PP_CAT(apply,i_)<
               F AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
             > type;
     };
@@ -220,10 +220,10 @@
 } // namespace aux
 #endif
 
-#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#   endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+#   endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   endif // NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE
 
 #   undef i_
 
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/apply_fwd.hpp b/include/ndnboost/mpl/apply_fwd.hpp
index fa53006..0477e06 100644
--- a/include/ndnboost/mpl/apply_fwd.hpp
+++ b/include/ndnboost/mpl/apply_fwd.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_APPLY_FWD_HPP_INCLUDED
-#define BOOST_MPL_APPLY_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_APPLY_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_APPLY_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,16 +18,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/aux_/na.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -44,29 +44,29 @@
 
 // agurt, 15/jan/02: top-level 'apply' template gives an ICE on MSVC
 // (for known reasons)
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-#   define BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
+#   define NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE
 #endif
 
 namespace ndnboost { namespace mpl {
 
 // local macro, #undef-ined at the end of the header
 #   define AUX778076_APPLY_DEF_PARAMS(param, value) \
-    BOOST_MPL_PP_DEFAULT_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_DEFAULT_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         , value \
         ) \
     /**/
 
 #   define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
-    BOOST_PP_COMMA_IF(n) \
-    BOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_MPL_PP_PARAMS(n, param) \
     /**/
 
-#   if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
+#   if !defined(NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE)
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 // forward declaration
 template<
       typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
@@ -74,15 +74,15 @@
 struct apply;
 #else
 namespace aux {
-template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
+template< NDNBOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
 }
 #endif
 
-#   endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
+#   endif // NDNBOOST_MPL_CFG_NO_APPLY_TEMPLATE
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/apply_fwd.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/apply_fwd.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 
 #   undef AUX778076_APPLY_N_COMMA_PARAMS
@@ -90,18 +90,18 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_APPLY_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_APPLY_FWD_HPP_INCLUDED
 
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<
       typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply,i_);
+struct NDNBOOST_PP_CAT(apply,i_);
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/apply_wrap.hpp b/include/ndnboost/mpl/apply_wrap.hpp
index 1f17eb0..5e7c042 100644
--- a/include/ndnboost/mpl/apply_wrap.hpp
+++ b/include/ndnboost/mpl/apply_wrap.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
-#define BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_APPLY_WRAP_HPP_INCLUDED
+#define NDNBOOST_MPL_APPLY_WRAP_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -18,7 +18,7 @@
 // $Date: 2008-10-10 23:50:46 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49272 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/aux_/arity.hpp>
 #   include <ndnboost/mpl/aux_/has_apply.hpp>
 #   include <ndnboost/mpl/aux_/na.hpp>
@@ -27,10 +27,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER apply_wrap.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER apply_wrap.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -56,17 +56,17 @@
 
 // local macros, #undef-ined at the end of the header
 #   define AUX778076_APPLY_WRAP_PARAMS(n, param) \
-    BOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_MPL_PP_PARAMS(n, param) \
     /**/
 
 #   define AUX778076_APPLY_WRAP_SPEC_PARAMS(n, param) \
-    BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
+    NDNBOOST_MPL_PP_ENUM(NDNBOOST_PP_INC(n), param) \
     /**/
 
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/apply_wrap.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/apply_wrap.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 
 #   undef AUX778076_APPLY_WRAP_SPEC_PARAMS
@@ -74,57 +74,57 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_APPLY_WRAP_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_APPLY_WRAP_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
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
 
-#   define i_ BOOST_PP_FRAME_ITERATION(1)
+#   define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-#   if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#   if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
 // MSVC version
 
-#define AUX778076_MSVC_DTW_NAME BOOST_PP_CAT(msvc_apply,i_)
+#define AUX778076_MSVC_DTW_NAME NDNBOOST_PP_CAT(msvc_apply,i_)
 #define AUX778076_MSVC_DTW_ORIGINAL_NAME apply
 #define AUX778076_MSVC_DTW_ARITY i_
 #include <ndnboost/mpl/aux_/msvc_dtw.hpp>
 
 template<
-      typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+      typename F NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply_wrap,i_)
+struct NDNBOOST_PP_CAT(apply_wrap,i_)
 {
     // Metafunction forwarding confuses vc6
-    typedef typename BOOST_PP_CAT(msvc_apply,i_)<F>::template result_<
+    typedef typename NDNBOOST_PP_CAT(msvc_apply,i_)<F>::template result_<
           AUX778076_APPLY_WRAP_PARAMS(i_, T)
         >::type type;
 };
 
-#   elif defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#   elif defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 // MWCW/Borland version
 
 template<
-      int N, typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+      int N, typename F NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply_wrap_impl,i_);
+struct NDNBOOST_PP_CAT(apply_wrap_impl,i_);
 
-#define BOOST_PP_ITERATION_PARAMS_2 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY - i_, <ndnboost/mpl/apply_wrap.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_2 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY - i_, <ndnboost/mpl/apply_wrap.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 template<
-      typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+      typename F NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply_wrap,i_)
-    : BOOST_PP_CAT(apply_wrap_impl,i_)<
+struct NDNBOOST_PP_CAT(apply_wrap,i_)
+    : NDNBOOST_PP_CAT(apply_wrap_impl,i_)<
           ::ndnboost::mpl::aux::arity<F,i_>::value
         , F
-        BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
+        NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
         >::type
 {
 };
@@ -133,14 +133,14 @@
 // ISO98 C++, with minor concession to vc7
 
 template<
-      typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+      typename F NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
 #if i_ == 0
     , typename has_apply_ = typename aux::has_apply<F>::type
 #endif
     >
-struct BOOST_PP_CAT(apply_wrap,i_)
+struct NDNBOOST_PP_CAT(apply_wrap,i_)
 // metafunction forwarding confuses MSVC 7.0
-#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#if !NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
     : F::template apply< AUX778076_APPLY_WRAP_PARAMS(i_, T) >
 {
 #else
@@ -151,9 +151,9 @@
 #endif
 };
 
-#if i_ == 0 && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if i_ == 0 && !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 template< typename F >
-struct BOOST_PP_CAT(apply_wrap,i_)<F,true_>
+struct NDNBOOST_PP_CAT(apply_wrap,i_)<F,true_>
     : F::apply
 {
 };
@@ -161,10 +161,10 @@
 
 #   endif // workarounds
 
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
 /// workaround for ETI bug
 template<>
-struct BOOST_PP_CAT(apply_wrap,i_)<AUX778076_APPLY_WRAP_SPEC_PARAMS(i_, int)>
+struct NDNBOOST_PP_CAT(apply_wrap,i_)<AUX778076_APPLY_WRAP_SPEC_PARAMS(i_, int)>
 {
     typedef int type;
 };
@@ -174,13 +174,13 @@
 
 ///// iteration, depth == 2
 
-#elif BOOST_PP_ITERATION_DEPTH() == 2
+#elif NDNBOOST_PP_ITERATION_DEPTH() == 2
 
-#   define j_ BOOST_PP_FRAME_ITERATION(2)
+#   define j_ NDNBOOST_PP_FRAME_ITERATION(2)
 
 #if i_ == 0 && j_ == 0 \
-    && defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS) \
-    && !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
+    && defined(NDNBOOST_MPL_CFG_BCC590_WORKAROUNDS) \
+    && !defined(NDNBOOST_MPL_CFG_NO_HAS_APPLY)
 
 template< typename F, bool F_has_apply >
 struct apply_wrap_impl0_bcb {
@@ -193,12 +193,12 @@
 };
 
 template<
-      typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+      typename F NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply_wrap_impl,i_)<
-          BOOST_MPL_PP_ADD(i_, j_)
+struct NDNBOOST_PP_CAT(apply_wrap_impl,i_)<
+          NDNBOOST_MPL_PP_ADD(i_, j_)
         , F
-        BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
+        NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
         >
 {
     typedef apply_wrap_impl0_bcb< F, aux::has_apply< F >::value >::type type;
@@ -206,12 +206,12 @@
 #else
 
 template<
-      typename F BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
+      typename F NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(apply_wrap_impl,i_)<
-          BOOST_MPL_PP_ADD(i_, j_)
+struct NDNBOOST_PP_CAT(apply_wrap_impl,i_)<
+          NDNBOOST_MPL_PP_ADD(i_, j_)
         , F
-        BOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
+        NDNBOOST_PP_COMMA_IF(i_) AUX778076_APPLY_WRAP_PARAMS(i_, T)
         >
 {
     typedef typename F::template apply<
@@ -221,7 +221,7 @@
 /// metafunction classes
         na
 #else
-        BOOST_PP_COMMA_IF(BOOST_PP_AND(i_, j_)) BOOST_MPL_PP_ENUM(j_, na)
+        NDNBOOST_PP_COMMA_IF(NDNBOOST_PP_AND(i_, j_)) NDNBOOST_MPL_PP_ENUM(j_, na)
 #endif
         > type;
 };
@@ -230,5 +230,5 @@
 
 #   undef j_
 
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/arg.hpp b/include/ndnboost/mpl/arg.hpp
index e3bc249..440164a 100644
--- a/include/ndnboost/mpl/arg.hpp
+++ b/include/ndnboost/mpl/arg.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_ARG_HPP_INCLUDED
-#define BOOST_MPL_ARG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ARG_HPP_INCLUDED
+#define NDNBOOST_MPL_ARG_HPP_INCLUDED
 
 // Copyright Peter Dimov 2001-2002
 // Copyright Aleksey Gurtovoy 2001-2004
@@ -19,7 +19,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/arg_fwd.hpp>
 #   include <ndnboost/mpl/aux_/na.hpp>
 #   include <ndnboost/mpl/aux_/na_assert.hpp>
@@ -30,10 +30,10 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER arg.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER arg.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -49,61 +49,61 @@
 #   include <ndnboost/preprocessor/inc.hpp>
 #   include <ndnboost/preprocessor/cat.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 // local macro, #undef-ined at the end of the header
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#if !defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 #   define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
-    BOOST_MPL_PP_DEFAULT_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_DEFAULT_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         , value \
         ) \
     /**/
 #else
 #   define AUX778076_ARG_N_DEFAULT_PARAMS(param,value) \
-    BOOST_MPL_PP_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         ) \
     /**/
 #endif
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/arg.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/arg.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 
 #   undef AUX778076_ARG_N_DEFAULT_PARAMS
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int,arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int,arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_ARG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_ARG_HPP_INCLUDED
 
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 #if i_ > 0
 
 template<> struct arg<i_>
 {
-    BOOST_STATIC_CONSTANT(int, value = i_);
-    typedef arg<BOOST_PP_INC(i_)> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_STATIC_CONSTANT(int, value = i_);
+    typedef arg<NDNBOOST_PP_INC(i_)> next;
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
         >
     struct apply
     {
-        typedef BOOST_PP_CAT(U,i_) type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        typedef NDNBOOST_PP_CAT(U,i_) type;
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
@@ -111,9 +111,9 @@
 
 template<> struct arg<-1>
 {
-    BOOST_STATIC_CONSTANT(int, value = -1);
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_STATIC_CONSTANT(int, value = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           AUX778076_ARG_N_DEFAULT_PARAMS(typename U, na)
@@ -121,11 +121,11 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 #endif // i_ > 0
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/arg_fwd.hpp b/include/ndnboost/mpl/arg_fwd.hpp
index 9aec30d..adc8ee3 100644
--- a/include/ndnboost/mpl/arg_fwd.hpp
+++ b/include/ndnboost/mpl/arg_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ARG_FWD_HPP_INCLUDED
-#define BOOST_MPL_ARG_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ARG_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_ARG_FWD_HPP_INCLUDED
 
 // Copyright Peter Dimov 2001-2002
 // Copyright Aleksey Gurtovoy 2001-2004
@@ -18,11 +18,11 @@
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 #include <ndnboost/mpl/aux_/nttp_decl.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arg;
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) > struct arg;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(arg)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(arg)
 
-#endif // BOOST_MPL_ARG_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ARG_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/assert.hpp b/include/ndnboost/mpl/assert.hpp
index 6d14b2f..b3d5deb 100644
--- a/include/ndnboost/mpl/assert.hpp
+++ b/include/ndnboost/mpl/assert.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ASSERT_HPP_INCLUDED
-#define BOOST_MPL_ASSERT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ASSERT_HPP_INCLUDED
+#define NDNBOOST_MPL_ASSERT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2006
 //
@@ -34,42 +34,42 @@
 #include <ndnboost/config.hpp> // make sure 'size_t' is placed into 'std'
 #include <cstddef>
 
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1700)
 #include <ndnboost/mpl/if.hpp>
 #endif
 
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-    || (BOOST_MPL_CFG_GCC != 0) \
-    || BOOST_WORKAROUND(__IBMCPP__, <= 600)
-#   define BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
+#if NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
+    || (NDNBOOST_MPL_CFG_GCC != 0) \
+    || NDNBOOST_WORKAROUND(__IBMCPP__, <= 600)
+#   define NDNBOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
 #endif
 
-#if BOOST_WORKAROUND(__MWERKS__, < 0x3202) \
-    || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
-    || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-    || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-#   define BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
+#if NDNBOOST_WORKAROUND(__MWERKS__, < 0x3202) \
+    || NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
+    || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
+    || NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
+#   define NDNBOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
 #endif
 
 // agurt, 10/nov/06: use enums for Borland (which cannot cope with static constants) 
 // and GCC (which issues "unused variable" warnings when static constants are used 
 // at a function scope)
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-    || (BOOST_MPL_CFG_GCC != 0)
-#   define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
+#if NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
+    || (NDNBOOST_MPL_CFG_GCC != 0)
+#   define NDNBOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) enum { expr }
 #else
-#   define BOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) BOOST_STATIC_CONSTANT(T, expr)
+#   define NDNBOOST_MPL_AUX_ASSERT_CONSTANT(T, expr) NDNBOOST_STATIC_CONSTANT(T, expr)
 #endif
 
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 struct failed {};
 
 // agurt, 24/aug/04: MSVC 7.1 workaround here and below: return/accept 
 // 'assert<false>' by reference; can't apply it unconditionally -- apparently it
 // degrades the quality of GCC diagnostics
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1310)
 #   define AUX778076_ASSERT_ARG(x) x&
 #else
 #   define AUX778076_ASSERT_ARG(x) x
@@ -95,7 +95,7 @@
 
 struct assert_
 {
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#if !defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
     template< typename T1, typename T2 = na, typename T3 = na, typename T4 = na > struct types {};
 #endif
     static assert_ const arg;
@@ -103,7 +103,7 @@
 };
 
 
-#if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
+#if !defined(NDNBOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
 
 bool operator==( failed, failed );
 bool operator!=( failed, failed );
@@ -114,14 +114,14 @@
 
 #if defined(__EDG_VERSION__)
 template< bool (*)(failed, failed), long x, long y > struct assert_relation {};
-#   define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<r,x,y>
+#   define NDNBOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<r,x,y>
 #else
-template< BOOST_MPL_AUX_NTTP_DECL(long, x), BOOST_MPL_AUX_NTTP_DECL(long, y), bool (*)(failed, failed) > 
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, x), NDNBOOST_MPL_AUX_NTTP_DECL(long, y), bool (*)(failed, failed) > 
 struct assert_relation {};
-#   define BOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<x,y,r>
+#   define NDNBOOST_MPL_AUX_ASSERT_RELATION(x, y, r) assert_relation<x,y,r>
 #endif
 
-#else // BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
+#else // NDNBOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
 
 ndnboost::mpl::aux::weighted_tag<1>::type operator==( assert_, assert_ );
 ndnboost::mpl::aux::weighted_tag<2>::type operator!=( assert_, assert_ );
@@ -134,7 +134,7 @@
 
 #endif 
 
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1700)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, >= 1700)
 
 template<class Pred>
 struct extract_assert_pred;
@@ -165,7 +165,7 @@
 template< typename T >
 T make_assert_arg();
 
-#elif !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+#elif !defined(NDNBOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
 
 template< bool > struct assert_arg_pred_impl { typedef int type; };
 template<> struct assert_arg_pred_impl<true> { typedef void* type; };
@@ -179,7 +179,7 @@
 template< typename P > struct assert_arg_pred_not
 {
     typedef typename P::type p_type;
-    BOOST_MPL_AUX_ASSERT_CONSTANT( bool, p = !p_type::value );
+    NDNBOOST_MPL_AUX_ASSERT_CONSTANT( bool, p = !p_type::value );
     typedef typename assert_arg_pred_impl<p>::type type;
 };
 
@@ -202,7 +202,7 @@
 assert_not_arg( void (*)(Pred), typename assert_arg_pred<Pred>::type );
 
 
-#else // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
+#else // NDNBOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
         
 template< bool c, typename Pred > struct assert_arg_type_impl
 {
@@ -216,7 +216,7 @@
 };
 
 template< typename Pred > struct assert_arg_type
-    : assert_arg_type_impl< BOOST_MPL_AUX_VALUE_WKND(BOOST_MPL_AUX_NESTED_TYPE_WKND(Pred))::value, Pred >
+    : assert_arg_type_impl< NDNBOOST_MPL_AUX_VALUE_WKND(NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(Pred))::value, Pred >
 {
 };
 
@@ -228,30 +228,30 @@
 typename assert_arg_type< ndnboost::mpl::not_<Pred> >::type 
 assert_not_arg(void (*)(Pred), int);
 
-#   if !defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
+#   if !defined(NDNBOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
 template< long x, long y, bool (*r)(failed, failed) >
-typename assert_arg_type_impl< false,BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) >::type
-assert_rel_arg( BOOST_MPL_AUX_ASSERT_RELATION(x,y,r) );
+typename assert_arg_type_impl< false,NDNBOOST_MPL_AUX_ASSERT_RELATION(x,y,r) >::type
+assert_rel_arg( NDNBOOST_MPL_AUX_ASSERT_RELATION(x,y,r) );
 #   else
 template< assert_::relations r, long x, long y >
 typename assert_arg_type_impl< false,assert_relation<r,x,y> >::type
 assert_rel_arg( assert_relation<r,x,y> );
 #   endif
 
-#endif // BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
+#endif // NDNBOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER
 
 #undef AUX778076_ASSERT_ARG
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1700)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1700)
 
-// BOOST_MPL_ASSERT((pred<x,...>))
+// NDNBOOST_MPL_ASSERT((pred<x,...>))
 
-#define BOOST_MPL_ASSERT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#define NDNBOOST_MPL_ASSERT(pred) \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
           ndnboost::mpl::assertion_failed<false>( \
               ndnboost::mpl::make_assert_arg< \
                   typename ndnboost::mpl::eval_assert<void pred>::type \
@@ -261,12 +261,12 @@
     ) \
 /**/
 
-// BOOST_MPL_ASSERT_NOT((pred<x,...>))
+// NDNBOOST_MPL_ASSERT_NOT((pred<x,...>))
 
-#define BOOST_MPL_ASSERT_NOT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#define NDNBOOST_MPL_ASSERT_NOT(pred) \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
           ndnboost::mpl::assertion_failed<false>( \
               ndnboost::mpl::make_assert_arg< \
                   typename ndnboost::mpl::eval_assert_not<void pred>::type \
@@ -278,12 +278,12 @@
 
 #else
 
-// BOOST_MPL_ASSERT((pred<x,...>))
+// NDNBOOST_MPL_ASSERT((pred<x,...>))
 
-#define BOOST_MPL_ASSERT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#define NDNBOOST_MPL_ASSERT(pred) \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
           ndnboost::mpl::assertion_failed<false>( \
               ndnboost::mpl::assert_arg( (void (*) pred)0, 1 ) \
             ) \
@@ -291,12 +291,12 @@
     ) \
 /**/
 
-// BOOST_MPL_ASSERT_NOT((pred<x,...>))
+// NDNBOOST_MPL_ASSERT_NOT((pred<x,...>))
 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-#   define BOOST_MPL_ASSERT_NOT(pred) \
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
+#   define NDNBOOST_MPL_ASSERT_NOT(pred) \
 enum { \
-      BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+      NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
           ndnboost::mpl::assertion<false>::failed( \
               ndnboost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
             ) \
@@ -304,10 +304,10 @@
 }\
 /**/
 #else
-#   define BOOST_MPL_ASSERT_NOT(pred) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#   define NDNBOOST_MPL_ASSERT_NOT(pred) \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
           ndnboost::mpl::assertion_failed<false>( \
               ndnboost::mpl::assert_not_arg( (void (*) pred)0, 1 ) \
             ) \
@@ -318,18 +318,18 @@
 
 #endif
 
-// BOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
+// NDNBOOST_MPL_ASSERT_RELATION(x, ==|!=|<=|<|>=|>, y)
 
-#if defined(BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
+#if defined(NDNBOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES)
 
-#   if !defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+#   if !defined(NDNBOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
 // agurt, 9/nov/06: 'enum' below is a workaround for gcc 4.0.4/4.1.1 bugs #29522 and #29518
-#   define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y)      \
-enum { BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) }; \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#   define NDNBOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y)      \
+enum { NDNBOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) }; \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
-        ndnboost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+        ndnboost::mpl::assertion_failed<NDNBOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
             (ndnboost::mpl::failed ************ ( ndnboost::mpl::assert_relation< \
                   ndnboost::mpl::assert_::relations( sizeof( \
                       ndnboost::mpl::assert_::arg rel ndnboost::mpl::assert_::arg \
@@ -341,20 +341,20 @@
     ) \
 /**/
 #   else
-#   define BOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y)    \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#   define NDNBOOST_MPL_ASSERT_RELATION_IMPL(counter, x, rel, y)    \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assert_rel,counter) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assert_rel,counter) = sizeof( \
           ndnboost::mpl::assert_::arg rel ndnboost::mpl::assert_::arg \
         ) \
     ); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( bool, BOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) ); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( bool, NDNBOOST_PP_CAT(mpl_assert_rel_value,counter) = (x rel y) ); \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
-        ndnboost::mpl::assertion_failed<BOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+        ndnboost::mpl::assertion_failed<NDNBOOST_PP_CAT(mpl_assert_rel_value,counter)>( \
               ndnboost::mpl::assert_rel_arg( ndnboost::mpl::assert_relation< \
-                  ndnboost::mpl::assert_::relations(BOOST_PP_CAT(mpl_assert_rel,counter)) \
+                  ndnboost::mpl::assert_::relations(NDNBOOST_PP_CAT(mpl_assert_rel,counter)) \
                 , x \
                 , y \
                 >() ) \
@@ -364,30 +364,30 @@
 /**/
 #   endif
 
-#   define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
-BOOST_MPL_ASSERT_RELATION_IMPL(BOOST_MPL_AUX_PP_COUNTER(), x, rel, y) \
+#   define NDNBOOST_MPL_ASSERT_RELATION(x, rel, y) \
+NDNBOOST_MPL_ASSERT_RELATION_IMPL(NDNBOOST_MPL_AUX_PP_COUNTER(), x, rel, y) \
 /**/
 
-#else // !BOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
+#else // !NDNBOOST_MPL_CFG_ASSERT_USE_RELATION_NAMES
 
-#   if defined(BOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
-#   define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#   if defined(NDNBOOST_MPL_CFG_ASSERT_BROKEN_POINTER_TO_POINTER_TO_MEMBER)
+#   define NDNBOOST_MPL_ASSERT_RELATION(x, rel, y) \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
         ndnboost::mpl::assertion_failed<(x rel y)>( ndnboost::mpl::assert_rel_arg( \
-              ndnboost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&ndnboost::mpl::operator rel))() \
+              ndnboost::mpl::NDNBOOST_MPL_AUX_ASSERT_RELATION(x,y,(&ndnboost::mpl::operator rel))() \
             ) ) \
         ) \
     ) \
 /**/
 #   else
-#   define BOOST_MPL_ASSERT_RELATION(x, rel, y) \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+#   define NDNBOOST_MPL_ASSERT_RELATION(x, rel, y) \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,BOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,NDNBOOST_MPL_AUX_PP_COUNTER()) = sizeof( \
         ndnboost::mpl::assertion_failed<(x rel y)>( (ndnboost::mpl::failed ************ ( \
-            ndnboost::mpl::BOOST_MPL_AUX_ASSERT_RELATION(x,y,(&ndnboost::mpl::operator rel))::************))0 ) \
+            ndnboost::mpl::NDNBOOST_MPL_AUX_ASSERT_RELATION(x,y,(&ndnboost::mpl::operator rel))::************))0 ) \
         ) \
     ) \
 /**/
@@ -396,43 +396,43 @@
 #endif
 
 
-// BOOST_MPL_ASSERT_MSG( (pred<x,...>::value), USER_PROVIDED_MESSAGE, (types<x,...>) ) 
+// NDNBOOST_MPL_ASSERT_MSG( (pred<x,...>::value), USER_PROVIDED_MESSAGE, (types<x,...>) ) 
 
-#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202))
-#   define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \
+#if NDNBOOST_WORKAROUND(__MWERKS__, NDNBOOST_TESTED_AT(0x3202))
+#   define NDNBOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ ) \
 struct msg; \
-typedef struct BOOST_PP_CAT(msg,counter) : ndnboost::mpl::assert_ \
+typedef struct NDNBOOST_PP_CAT(msg,counter) : ndnboost::mpl::assert_ \
 { \
     using ndnboost::mpl::assert_::types; \
     static ndnboost::mpl::failed ************ (msg::************ assert_arg()) types_ \
     { return 0; } \
-} BOOST_PP_CAT(mpl_assert_arg,counter); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+} NDNBOOST_PP_CAT(mpl_assert_arg,counter); \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
-        ndnboost::mpl::assertion<(c)>::failed( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+        ndnboost::mpl::assertion<(c)>::failed( NDNBOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
         ) \
     ) \
 /**/
 #else
-#   define BOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ )  \
+#   define NDNBOOST_MPL_ASSERT_MSG_IMPL( counter, c, msg, types_ )  \
 struct msg; \
-typedef struct BOOST_PP_CAT(msg,counter) : ndnboost::mpl::assert_ \
+typedef struct NDNBOOST_PP_CAT(msg,counter) : ndnboost::mpl::assert_ \
 { \
     static ndnboost::mpl::failed ************ (msg::************ assert_arg()) types_ \
     { return 0; } \
-} BOOST_PP_CAT(mpl_assert_arg,counter); \
-BOOST_MPL_AUX_ASSERT_CONSTANT( \
+} NDNBOOST_PP_CAT(mpl_assert_arg,counter); \
+NDNBOOST_MPL_AUX_ASSERT_CONSTANT( \
       std::size_t \
-    , BOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
-        ndnboost::mpl::assertion_failed<(c)>( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
+    , NDNBOOST_PP_CAT(mpl_assertion_in_line_,counter) = sizeof( \
+        ndnboost::mpl::assertion_failed<(c)>( NDNBOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
         ) \
     ) \
 /**/
 #endif
 
-#define BOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
-BOOST_MPL_ASSERT_MSG_IMPL( BOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \
+#define NDNBOOST_MPL_ASSERT_MSG( c, msg, types_ ) \
+NDNBOOST_MPL_ASSERT_MSG_IMPL( NDNBOOST_MPL_AUX_PP_COUNTER(), c, msg, types_ ) \
 /**/
 
-#endif // BOOST_MPL_ASSERT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ASSERT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/at.hpp b/include/ndnboost/mpl/at.hpp
index e875e9d..c3d8968 100644
--- a/include/ndnboost/mpl/at.hpp
+++ b/include/ndnboost/mpl/at.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AT_HPP_INCLUDED
-#define BOOST_MPL_AT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AT_HPP_INCLUDED
+#define NDNBOOST_MPL_AT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -25,19 +25,19 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(N)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N)
     >
 struct at
     : at_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence,N >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,at,(Sequence,N))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,at,(Sequence,N))
 };
 
 template<
       typename Sequence
-    , BOOST_MPL_AUX_NTTP_DECL(long, N)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, N)
     >
 struct at_c
     : at_impl< typename sequence_tag<Sequence>::type >
@@ -45,8 +45,8 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, at)
+NDNBOOST_MPL_AUX_NA_SPEC(2, at)
 
 }}
 
-#endif // BOOST_MPL_AT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/at_fwd.hpp b/include/ndnboost/mpl/at_fwd.hpp
index d391547..4a802e2 100644
--- a/include/ndnboost/mpl/at_fwd.hpp
+++ b/include/ndnboost/mpl/at_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AT_FWD_HPP_INCLUDED
-#define BOOST_MPL_AT_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AT_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_AT_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_AT_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AT_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/O1_size_impl.hpp b/include/ndnboost/mpl/aux_/O1_size_impl.hpp
index 2b2cf08..75da92c 100644
--- a/include/ndnboost/mpl/aux_/O1_size_impl.hpp
+++ b/include/ndnboost/mpl/aux_/O1_size_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
-#define BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -29,8 +29,8 @@
 // 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))
+#   if !NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300) \
+    && !NDNBOOST_WORKAROUND(__MWERKS__, NDNBOOST_TESTED_AT(0x3003))
 
 namespace aux {
 template< typename Sequence > struct O1_size_impl
@@ -43,7 +43,7 @@
 struct O1_size_impl
 {
     template< typename Sequence > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : if_<
               aux::has_size<Sequence>
             , aux::O1_size_impl<Sequence>
@@ -58,7 +58,7 @@
             , long_<-1>
             >::type type;
 
-        BOOST_STATIC_CONSTANT(long, value =
+        NDNBOOST_STATIC_CONSTANT(long, value =
               (if_<
                   aux::has_size<Sequence>
                 , aux::O1_size_impl<Sequence>
@@ -69,7 +69,7 @@
     };
 };
 
-#   else // BOOST_MSVC
+#   else // NDNBOOST_MSVC
 
 template< typename Tag >
 struct O1_size_impl
@@ -84,4 +84,4 @@
 
 }}
 
-#endif // BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/adl_barrier.hpp b/include/ndnboost/mpl/aux_/adl_barrier.hpp
index cb25ebc..70ad2f7 100644
--- a/include/ndnboost/mpl/aux_/adl_barrier.hpp
+++ b/include/ndnboost/mpl/aux_/adl_barrier.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
-#define BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -18,31 +18,31 @@
 #include <ndnboost/mpl/aux_/config/gcc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
+#if !defined(NDNBOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
 
-#   define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE mpl_
-#   define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace mpl_ {
-#   define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }
-#   define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) \
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE mpl_
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace mpl_ {
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(type) \
     namespace ndnboost { namespace mpl { \
-    using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
+    using ::NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
     } } \
 /**/
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE { namespace aux {} }
-namespace ndnboost { namespace mpl { using namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE; 
-namespace aux { using namespace BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux; }
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
+namespace NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE { namespace aux {} }
+namespace ndnboost { namespace mpl { using namespace NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE; 
+namespace aux { using namespace NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux; }
 }}
 #endif
 
-#else // BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
+#else // NDNBOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
 
-#   define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE ndnboost::mpl
-#   define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace ndnboost { namespace mpl {
-#   define BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }}
-#   define BOOST_MPL_AUX_ADL_BARRIER_DECL(type) /**/
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE ndnboost::mpl
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN namespace ndnboost { namespace mpl {
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE }}
+#   define NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(type) /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_ADL_BARRIER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/advance_backward.hpp b/include/ndnboost/mpl/aux_/advance_backward.hpp
index 123df81..9e629f0 100644
--- a/include/ndnboost/mpl/aux_/advance_backward.hpp
+++ b/include/ndnboost/mpl/aux_/advance_backward.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
-#define BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,17 +18,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_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)
+#if    !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER advance_backward.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER advance_backward.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -44,28 +44,28 @@
 namespace ndnboost { namespace mpl { namespace aux {
 
 // forward declaration
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_backward;
+template< NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/advance_backward.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) >
+// implementation for N that exceeds NDNBOOST_MPL_LIMIT_UNROLLING
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, N) >
 struct advance_backward
 {
     template< typename Iterator > struct apply
     {
         typedef typename apply_wrap1<
-              advance_backward<BOOST_MPL_LIMIT_UNROLLING>
+              advance_backward<NDNBOOST_MPL_LIMIT_UNROLLING>
             , Iterator
             >::type chunk_result_;
 
         typedef typename apply_wrap1<
               advance_backward<(
-                (N - BOOST_MPL_LIMIT_UNROLLING) < 0
+                (N - NDNBOOST_MPL_LIMIT_UNROLLING) < 0
                     ? 0
-                    : N - BOOST_MPL_LIMIT_UNROLLING
+                    : N - NDNBOOST_MPL_LIMIT_UNROLLING
                     )>
             , chunk_result_
             >::type type;
@@ -74,34 +74,34 @@
 
 }}}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX778076_ADVANCE_BACKWARD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_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)
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<>
-struct advance_backward< BOOST_PP_FRAME_ITERATION(1) >
+struct advance_backward< NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_2 \
+    (3,(1, NDNBOOST_PP_FRAME_ITERATION(1), <ndnboost/mpl/aux_/advance_backward.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 #endif
 
-        typedef BOOST_PP_CAT(iter,BOOST_PP_FRAME_ITERATION(1)) type;
+        typedef NDNBOOST_PP_CAT(iter,NDNBOOST_PP_FRAME_ITERATION(1)) type;
     };
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
     /// ETI workaround
     template<> struct apply<int>
     {
@@ -114,15 +114,15 @@
 
 ///// iteration, depth == 2
 
-#elif BOOST_PP_ITERATION_DEPTH() == 2
+#elif NDNBOOST_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))
+#   define AUX778076_ITER_0 NDNBOOST_PP_CAT(iter,NDNBOOST_PP_DEC(NDNBOOST_PP_FRAME_ITERATION(2)))
+#   define AUX778076_ITER_1 NDNBOOST_PP_CAT(iter,NDNBOOST_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
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/advance_forward.hpp b/include/ndnboost/mpl/aux_/advance_forward.hpp
index 5561c26..a91a26a 100644
--- a/include/ndnboost/mpl/aux_/advance_forward.hpp
+++ b/include/ndnboost/mpl/aux_/advance_forward.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
-#define BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,17 +18,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_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)
+#if    !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER advance_forward.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER advance_forward.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -44,28 +44,28 @@
 namespace ndnboost { namespace mpl { namespace aux {
 
 // forward declaration
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct advance_forward;
+template< NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/advance_forward.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) > 
+// implementation for N that exceeds NDNBOOST_MPL_LIMIT_UNROLLING
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, N) > 
 struct advance_forward
 {
     template< typename Iterator > struct apply
     {
         typedef typename apply_wrap1<
-              advance_forward<BOOST_MPL_LIMIT_UNROLLING>
+              advance_forward<NDNBOOST_MPL_LIMIT_UNROLLING>
             , Iterator
             >::type chunk_result_;
 
         typedef typename apply_wrap1<
               advance_forward<(
-                (N - BOOST_MPL_LIMIT_UNROLLING) < 0
+                (N - NDNBOOST_MPL_LIMIT_UNROLLING) < 0
                     ? 0
-                    : N - BOOST_MPL_LIMIT_UNROLLING
+                    : N - NDNBOOST_MPL_LIMIT_UNROLLING
                     )>
             , chunk_result_
             >::type type;
@@ -74,33 +74,33 @@
 
 }}}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_ADVANCE_FORWARD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_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)
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<>
-struct advance_forward< BOOST_PP_FRAME_ITERATION(1) >
+struct advance_forward< NDNBOOST_PP_FRAME_ITERATION(1) >
 {
     template< typename Iterator > struct apply
     {
         typedef Iterator iter0;
 
 #if i_ > 0
-#   define BOOST_PP_ITERATION_PARAMS_2 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_2 \
     (3,(1, i_, <ndnboost/mpl/aux_/advance_forward.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 #endif
-        typedef BOOST_PP_CAT(iter,i_) type;
+        typedef NDNBOOST_PP_CAT(iter,i_) type;
     };
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
     /// ETI workaround
     template<> struct apply<int>
     {
@@ -113,15 +113,15 @@
 
 ///// iteration, depth == 2
 
-#elif BOOST_PP_ITERATION_DEPTH() == 2
+#elif NDNBOOST_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))
+#   define AUX778076_ITER_0 NDNBOOST_PP_CAT(iter,NDNBOOST_PP_DEC(NDNBOOST_PP_FRAME_ITERATION(2)))
+#   define AUX778076_ITER_1 NDNBOOST_PP_CAT(iter,NDNBOOST_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
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/arg_typedef.hpp b/include/ndnboost/mpl/aux_/arg_typedef.hpp
index 797842e..9d9a94d 100644
--- a/include/ndnboost/mpl/aux_/arg_typedef.hpp
+++ b/include/ndnboost/mpl/aux_/arg_typedef.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
-#define BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -17,15 +17,15 @@
 #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))
+#if defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+    || NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
     
-#   define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) typedef T name;
+#   define NDNBOOST_MPL_AUX_ARG_TYPEDEF(T, name) typedef T name;
 
 #else
 
-#   define BOOST_MPL_AUX_ARG_TYPEDEF(T, name) /**/
+#   define NDNBOOST_MPL_AUX_ARG_TYPEDEF(T, name) /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_ARG_TYPEDEF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/arithmetic_op.hpp b/include/ndnboost/mpl/aux_/arithmetic_op.hpp
index 58f2568..117d3ab 100644
--- a/include/ndnboost/mpl/aux_/arithmetic_op.hpp
+++ b/include/ndnboost/mpl/aux_/arithmetic_op.hpp
@@ -13,7 +13,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/integral_c.hpp>
 #   include <ndnboost/mpl/aux_/largest_int.hpp>
 #   include <ndnboost/mpl/aux_/value_wknd.hpp>
@@ -27,10 +27,10 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -41,12 +41,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+#if defined(NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
 namespace aux {
 template< typename T, T n1, T n2 >
-struct BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)
+struct NDNBOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)
 {
-    BOOST_STATIC_CONSTANT(T, value = (n1 AUX778076_OP_TOKEN n2));
+    NDNBOOST_STATIC_CONSTANT(T, value = (n1 AUX778076_OP_TOKEN n2));
     typedef integral_c<T,value> type;
 };
 }
@@ -56,18 +56,18 @@
 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)
+#if !defined(NDNBOOST_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
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  AUX778076_OP_TOKEN NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
 #else
-        : aux::BOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)<
+        : aux::NDNBOOST_PP_CAT(AUX778076_OP_PREFIX,_wknd)<
               typename aux::largest_int<
                   typename N1::value_type
                 , typename N2::value_type
@@ -82,7 +82,7 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
 #undef AUX778076_OP_TAG_NAME
 #undef AUX778076_OP_IMPL_NAME
diff --git a/include/ndnboost/mpl/aux_/arity.hpp b/include/ndnboost/mpl/aux_/arity.hpp
index 68c708e..a28f564 100644
--- a/include/ndnboost/mpl/aux_/arity.hpp
+++ b/include/ndnboost/mpl/aux_/arity.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_ARITY_HPP_INCLUDED
-#define BOOST_MPL_AUX_ARITY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ARITY_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ARITY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,7 +16,7 @@
 
 #include <ndnboost/mpl/aux_/config/dtp.hpp>
 
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#if defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 
 #   include <ndnboost/mpl/aux_/nttp_decl.hpp>
 #   include <ndnboost/mpl/aux_/config/static_constant.hpp>
@@ -26,14 +26,14 @@
 // agurt, 15/mar/02: it's possible to implement the template so that it will 
 // "just work" and do not require any specialization, but not on the compilers
 // that require the arity workaround in the first place
-template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
+template< typename F, NDNBOOST_MPL_AUX_NTTP_DECL(int, N) >
 struct arity
 {
-    BOOST_STATIC_CONSTANT(int, value = N);
+    NDNBOOST_STATIC_CONSTANT(int, value = N);
 };
 
 }}}
 
-#endif // BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
+#endif // NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
 
-#endif // BOOST_MPL_AUX_ARITY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_ARITY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/arity_spec.hpp b/include/ndnboost/mpl/aux_/arity_spec.hpp
index 29c10ba..f10ee11 100644
--- a/include/ndnboost/mpl/aux_/arity_spec.hpp
+++ b/include/ndnboost/mpl/aux_/arity_spec.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
-#define BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -24,44 +24,44 @@
 #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) \
+#if defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define NDNBOOST_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) > \
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N), NDNBOOST_MPL_PP_PARAMS(i,type T) > \
 struct arity< \
-      name< BOOST_MPL_PP_PARAMS(i,T) > \
+      name< NDNBOOST_MPL_PP_PARAMS(i,T) > \
     , N \
     > \
 { \
-    BOOST_STATIC_CONSTANT(int \
-        , value = BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_STATIC_CONSTANT(int \
+        , value = NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         ); \
 }; \
 } \
 /**/
 #else
-#   define BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(i,type,name) /**/
+#   define NDNBOOST_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) \
+#   define NDNBOOST_MPL_AUX_ARITY_SPEC(i,name) \
+    NDNBOOST_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) \
+#if defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+    && !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   define NDNBOOST_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)> > \
+template< NDNBOOST_MPL_PP_PARAMS(i,typename T) > \
+struct template_arity< name<NDNBOOST_MPL_PP_PARAMS(i,T)> > \
     : int_<i> \
 { \
 }; \
 } \
 /**/
 #else
-#   define BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
+#   define NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(i, name) /**/
 #endif
 
 
-#endif // BOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_ARITY_SPEC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/at_impl.hpp b/include/ndnboost/mpl/aux_/at_impl.hpp
index 5d2f235..2028731 100644
--- a/include/ndnboost/mpl/aux_/at_impl.hpp
+++ b/include/ndnboost/mpl/aux_/at_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -38,8 +38,8 @@
     };
 };
 
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, at_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, at_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_AT_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/begin_end_impl.hpp b/include/ndnboost/mpl/aux_/begin_end_impl.hpp
index e57ef71..ee567ac 100644
--- a/include/ndnboost/mpl/aux_/begin_end_impl.hpp
+++ b/include/ndnboost/mpl/aux_/begin_end_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -93,9 +93,9 @@
 #   undef AUX778076_IMPL_SPEC
 
 
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,begin_impl)
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,end_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,begin_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(1,end_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/clear_impl.hpp b/include/ndnboost/mpl/aux_/clear_impl.hpp
index f55dfa3..0ae5568 100644
--- a/include/ndnboost/mpl/aux_/clear_impl.hpp
+++ b/include/ndnboost/mpl/aux_/clear_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -28,8 +28,8 @@
     template< typename Sequence > struct apply;
 };
 
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, clear_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, clear_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CLEAR_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/common_name_wknd.hpp b/include/ndnboost/mpl/aux_/common_name_wknd.hpp
index 4d7c128..454a71a 100644
--- a/include/ndnboost/mpl/aux_/common_name_wknd.hpp
+++ b/include/ndnboost/mpl/aux_/common_name_wknd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
-#define BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,10 +16,10 @@
 
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x561)
+#if NDNBOOST_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) \
+#   define NDNBOOST_MPL_AUX_COMMON_NAME_WKND(name) \
 namespace name_##wknd { \
 template< typename > void name(); \
 } \
@@ -27,8 +27,8 @@
 
 #else
 
-#   define BOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
+#   define NDNBOOST_MPL_AUX_COMMON_NAME_WKND(name) /**/
 
 #endif // __BORLANDC__
 
-#endif // BOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_COMMON_NAME_WKND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/comparison_op.hpp b/include/ndnboost/mpl/aux_/comparison_op.hpp
index 3082724..3bed6a4 100644
--- a/include/ndnboost/mpl/aux_/comparison_op.hpp
+++ b/include/ndnboost/mpl/aux_/comparison_op.hpp
@@ -13,7 +13,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/bool.hpp>
 #   include <ndnboost/mpl/aux_/value_wknd.hpp>
 #endif
@@ -28,10 +28,10 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER AUX778076_OP_PREFIX.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -44,12 +44,12 @@
 // 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 ) \
+    ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_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 \
+    ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value \
+          AUX778076_OP_TOKEN NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value \
         ) \
 /**/
 #endif
@@ -58,12 +58,12 @@
 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)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
         : bool_< AUX778076_OP(N1, N2) >
     {
 #else
     {
-        BOOST_STATIC_CONSTANT(bool, value = AUX778076_OP(N1, N2));
+        NDNBOOST_STATIC_CONSTANT(bool, value = AUX778076_OP(N1, N2));
         typedef bool_<value> type;
 #endif
     };
@@ -73,7 +73,7 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
 #undef AUX778076_OP_TAG_NAME
 #undef AUX778076_OP_IMPL_NAME
diff --git a/include/ndnboost/mpl/aux_/config/adl.hpp b/include/ndnboost/mpl/aux_/config/adl.hpp
index 5257305..b5794d4 100644
--- a/include/ndnboost/mpl/aux_/config/adl.hpp
+++ b/include/ndnboost/mpl/aux_/config/adl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -25,16 +25,16 @@
 // of template instantiation symbols, so we apply the workaround on all 
 // platforms that can handle it
 
-#if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \
-    && (   BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
-        || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-        || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
-        || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
-        || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+#if !defined(NDNBOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE) \
+    && (   NDNBOOST_WORKAROUND(NDNBOOST_MSVC, NDNBOOST_TESTED_AT(1400)) \
+        || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
+        || NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840)) \
+        || NDNBOOST_WORKAROUND(__MWERKS__, NDNBOOST_TESTED_AT(0x3202)) \
+        || NDNBOOST_WORKAROUND(NDNBOOST_INTEL_CXX_VERSION, NDNBOOST_TESTED_AT(810)) \
         )
 
-#   define BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
+#   define NDNBOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_ADL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/arrays.hpp b/include/ndnboost/mpl/aux_/config/arrays.hpp
index 673631d..c71af34 100644
--- a/include/ndnboost/mpl/aux_/config/arrays.hpp
+++ b/include/ndnboost/mpl/aux_/config/arrays.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 //
@@ -17,14 +17,14 @@
 #include <ndnboost/mpl/aux_/config/msvc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if    !defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && ( BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-        || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+#if    !defined(NDNBOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && ( NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
+        || NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) \
         )
 
-#   define BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES
+#   define NDNBOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_ARRAYS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/bcc.hpp b/include/ndnboost/mpl/aux_/config/bcc.hpp
index b742125..c035570 100644
--- a/include/ndnboost/mpl/aux_/config/bcc.hpp
+++ b/include/ndnboost/mpl/aux_/config/bcc.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2008
 //
@@ -16,13 +16,13 @@
 
 #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))
+#if    !defined(NDNBOOST_MPL_CFG_BCC590_WORKAROUNDS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, >= 0x590) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
 
-#   define BOOST_MPL_CFG_BCC590_WORKAROUNDS
+#   define NDNBOOST_MPL_CFG_BCC590_WORKAROUNDS
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_BCC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/bind.hpp b/include/ndnboost/mpl/aux_/config/bind.hpp
index bf6c05e..168d582 100644
--- a/include/ndnboost/mpl/aux_/config/bind.hpp
+++ b/include/ndnboost/mpl/aux_/config/bind.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
 
 // Copyright David Abrahams 2002
 // Copyright Aleksey Gurtovoy 2002-2004
@@ -18,16 +18,16 @@
 #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)) \
+#if    !defined(NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && (   NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) \
+        || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
         )
 
-#   define BOOST_MPL_CFG_NO_BIND_TEMPLATE
+#   define NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE
 
 #endif
 
-//#define BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+//#define NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 
-#endif // BOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_BIND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/compiler.hpp b/include/ndnboost/mpl/aux_/config/compiler.hpp
index 8a52441..646e73b 100644
--- a/include/ndnboost/mpl/aux_/config/compiler.hpp
+++ b/include/ndnboost/mpl/aux_/config/compiler.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2008
 //
@@ -14,7 +14,7 @@
 // $Date: 2009-05-22 13:07:55 -0700 (Fri, 22 May 2009) $
 // $Revision: 53189 $
 
-#if !defined(BOOST_MPL_CFG_COMPILER_DIR)
+#if !defined(NDNBOOST_MPL_CFG_COMPILER_DIR)
 
 #   include <ndnboost/mpl/aux_/config/dtp.hpp>
 #   include <ndnboost/mpl/aux_/config/ttp.hpp>
@@ -23,44 +23,44 @@
 #   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
+#   if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
+#       define NDNBOOST_MPL_CFG_COMPILER_DIR msvc60
 
-#   elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
-#       define BOOST_MPL_CFG_COMPILER_DIR msvc70
+#   elif NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
+#       define NDNBOOST_MPL_CFG_COMPILER_DIR msvc70
 
-#   elif BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304))
-#       define BOOST_MPL_CFG_COMPILER_DIR gcc
+#   elif NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, NDNBOOST_TESTED_AT(0x0304))
+#       define NDNBOOST_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
+#   elif NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
+#       if !defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#           define NDNBOOST_MPL_CFG_COMPILER_DIR bcc551
+#       elif NDNBOOST_WORKAROUND(__BORLANDC__, >= 0x590)
+#           define NDNBOOST_MPL_CFG_COMPILER_DIR bcc
 #       else
-#           define BOOST_MPL_CFG_COMPILER_DIR bcc_pre590
+#           define NDNBOOST_MPL_CFG_COMPILER_DIR bcc_pre590
 #       endif
 
-#   elif BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-#       define BOOST_MPL_CFG_COMPILER_DIR dmc
+#   elif NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
+#       define NDNBOOST_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
+#       if defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#           define NDNBOOST_MPL_CFG_COMPILER_DIR mwcw
 #       else
-#           define BOOST_MPL_CFG_COMPILER_DIR plain
+#           define NDNBOOST_MPL_CFG_COMPILER_DIR plain
 #       endif
 
-#   elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-#       define BOOST_MPL_CFG_COMPILER_DIR no_ctps
+#   elif defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#       define NDNBOOST_MPL_CFG_COMPILER_DIR no_ctps
 
-#   elif defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
-#       define BOOST_MPL_CFG_COMPILER_DIR no_ttp
+#   elif defined(NDNBOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
+#       define NDNBOOST_MPL_CFG_COMPILER_DIR no_ttp
 
 #   else
-#       define BOOST_MPL_CFG_COMPILER_DIR plain
+#       define NDNBOOST_MPL_CFG_COMPILER_DIR plain
 #   endif
 
-#endif // BOOST_MPL_CFG_COMPILER_DIR
+#endif // NDNBOOST_MPL_CFG_COMPILER_DIR
 
-#endif // BOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_COMPILER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/ctps.hpp b/include/ndnboost/mpl/aux_/config/ctps.hpp
index 908a311..c6a50a3 100644
--- a/include/ndnboost/mpl/aux_/config/ctps.hpp
+++ b/include/ndnboost/mpl/aux_/config/ctps.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,14 +17,14 @@
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 #include <ndnboost/config.hpp>
 
-#if    !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && BOOST_WORKAROUND(__BORLANDC__, < 0x582)
+#if    !defined(NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, < 0x582)
 
-#   define BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC
+#   define NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC
 
 #endif
 
-// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION is defined in <ndnboost/config.hpp>
+// NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION is defined in <ndnboost/config.hpp>
 
-#endif // BOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_CTPS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp b/include/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
index 1f54ae6..919626f 100644
--- a/include/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/config/dmc_ambiguous_ctps.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -16,12 +16,12 @@
 
 #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))
+#if    !defined(NDNBOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
 
-#   define BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS
+#   define NDNBOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_DMC_AMBIGUOUS_CTPS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/dtp.hpp b/include/ndnboost/mpl/aux_/config/dtp.hpp
index 4796289..9f75a9c 100644
--- a/include/ndnboost/mpl/aux_/config/dtp.hpp
+++ b/include/ndnboost/mpl/aux_/config/dtp.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -22,25 +22,25 @@
 // the owner class is a class template), and Borland 5.6 isn't even
 // able to compile a definition of nested class template with DTP
 
-#if    !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && BOOST_WORKAROUND(__BORLANDC__, >= 0x560) \
-    && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+#if    !defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, >= 0x560) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
 
-#   define BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
+#   define NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
 
 #endif
 
 
-#if    !defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && (   BOOST_WORKAROUND(__MWERKS__, <= 0x3001) \
-        || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-        || defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
+#if    !defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && (   NDNBOOST_WORKAROUND(__MWERKS__, <= 0x3001) \
+        || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
+        || defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES) \
         )
         
-#   define BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
+#   define NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_DTP_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/eti.hpp b/include/ndnboost/mpl/aux_/config/eti.hpp
index 9f2f29c..ce89016 100644
--- a/include/ndnboost/mpl/aux_/config/eti.hpp
+++ b/include/ndnboost/mpl/aux_/config/eti.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -18,30 +18,30 @@
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
 // flags for MSVC 6.5's so-called "early template instantiation bug"
-#if    !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if    !defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
 
-#   define BOOST_MPL_CFG_MSVC_60_ETI_BUG
+#   define NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG
 
 #endif
 
-#if    !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#if    !defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
 
-#   define BOOST_MPL_CFG_MSVC_70_ETI_BUG
+#   define NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG
 
 #endif
 
-#if    !defined(BOOST_MPL_CFG_MSVC_ETI_BUG) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && ( defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG) \
-        || defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG) \
+#if    !defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && ( defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG) \
+        || defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG) \
         )
 
-#   define BOOST_MPL_CFG_MSVC_ETI_BUG
+#   define NDNBOOST_MPL_CFG_MSVC_ETI_BUG
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_ETI_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/forwarding.hpp b/include/ndnboost/mpl/aux_/config/forwarding.hpp
index 167e832..057e5ec 100644
--- a/include/ndnboost/mpl/aux_/config/forwarding.hpp
+++ b/include/ndnboost/mpl/aux_/config/forwarding.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -16,12 +16,12 @@
 
 #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))
+#if    !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
 
-#   define BOOST_MPL_CFG_NO_NESTED_FORWARDING
+#   define NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_FORWARDING_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/gcc.hpp b/include/ndnboost/mpl/aux_/config/gcc.hpp
index b9d8f7d..09644c1 100644
--- a/include/ndnboost/mpl/aux_/config/gcc.hpp
+++ b/include/ndnboost/mpl/aux_/config/gcc.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -15,9 +15,9 @@
 // $Revision: 49267 $
 
 #if defined(__GNUC__) && !defined(__EDG_VERSION__)
-#   define BOOST_MPL_CFG_GCC ((__GNUC__ << 8) | __GNUC_MINOR__)
+#   define NDNBOOST_MPL_CFG_GCC ((__GNUC__ << 8) | __GNUC_MINOR__)
 #else
-#   define BOOST_MPL_CFG_GCC 0
+#   define NDNBOOST_MPL_CFG_GCC 0
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_GCC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/has_apply.hpp b/include/ndnboost/mpl/aux_/config/has_apply.hpp
index 0daed5a..08dd160 100644
--- a/include/ndnboost/mpl/aux_/config/has_apply.hpp
+++ b/include/ndnboost/mpl/aux_/config/has_apply.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -18,15 +18,15 @@
 #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)) \
+#if !defined(NDNBOOST_MPL_CFG_NO_HAS_APPLY) \
+    && (   defined(NDNBOOST_MPL_CFG_NO_HAS_XXX) \
+        || NDNBOOST_WORKAROUND(__EDG_VERSION__, < 300) \
+        || NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) \
+        || NDNBOOST_WORKAROUND(__MWERKS__, NDNBOOST_TESTED_AT(0x3202)) \
         )
 
-#   define BOOST_MPL_CFG_NO_HAS_APPLY
+#   define NDNBOOST_MPL_CFG_NO_HAS_APPLY
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_HAS_APPLY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/has_xxx.hpp b/include/ndnboost/mpl/aux_/config/has_xxx.hpp
index 1cff8af..cf9a112 100644
--- a/include/ndnboost/mpl/aux_/config/has_xxx.hpp
+++ b/include/ndnboost/mpl/aux_/config/has_xxx.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 // Copyright David Abrahams 2002-2003
@@ -20,15 +20,15 @@
 
 // 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)) \
+#if !defined(NDNBOOST_MPL_CFG_NO_HAS_XXX) \
+    && (   defined(NDNBOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
+        || NDNBOOST_WORKAROUND(__GNUC__, <= 2) \
+        || NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840)) \
         )
 
-#   define BOOST_MPL_CFG_NO_HAS_XXX
-#   define BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+#   define NDNBOOST_MPL_CFG_NO_HAS_XXX
+#   define NDNBOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_HAS_XXX_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/integral.hpp b/include/ndnboost/mpl/aux_/config/integral.hpp
index a8cbd7d..c25bf09 100644
--- a/include/ndnboost/mpl/aux_/config/integral.hpp
+++ b/include/ndnboost/mpl/aux_/config/integral.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -17,22 +17,22 @@
 #include <ndnboost/mpl/aux_/config/msvc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if    !defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
+#if    !defined(NDNBOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
 
-#   define BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
+#   define NDNBOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
 
 #endif
 
-#if    !defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
-        || BOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
+#if    !defined(NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && ( NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) \
+        || NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238) \
         )
 
-#   define BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC
+#   define NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_INTEGRAL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/intel.hpp b/include/ndnboost/mpl/aux_/config/intel.hpp
index e14dc9e..d97ab6d 100644
--- a/include/ndnboost/mpl/aux_/config/intel.hpp
+++ b/include/ndnboost/mpl/aux_/config/intel.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -15,7 +15,7 @@
 // $Revision: 49267 $
 
 
-// BOOST_INTEL_CXX_VERSION is defined here:
+// NDNBOOST_INTEL_CXX_VERSION is defined here:
 #include <ndnboost/config.hpp>
 
-#endif // BOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_INTEL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/lambda.hpp b/include/ndnboost/mpl/aux_/config/lambda.hpp
index 808385a..66e1bba 100644
--- a/include/ndnboost/mpl/aux_/config/lambda.hpp
+++ b/include/ndnboost/mpl/aux_/config/lambda.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -20,13 +20,13 @@
 // agurt, 15/jan/02: full-fledged implementation requires both 
 // template template parameters _and_ partial specialization
 
-#if    !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
-    && (   defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
-        || defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+#if    !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+    && (   defined(NDNBOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+        || defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
         )
 
-#   define BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+#   define NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_LAMBDA_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/msvc.hpp b/include/ndnboost/mpl/aux_/config/msvc.hpp
index 32a69ec..ef7fcac 100644
--- a/include/ndnboost/mpl/aux_/config/msvc.hpp
+++ b/include/ndnboost/mpl/aux_/config/msvc.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -15,7 +15,7 @@
 // $Revision: 49267 $
 
 
-// BOOST_MSVC is defined here:
+// NDNBOOST_MSVC is defined here:
 #include <ndnboost/config.hpp>
 
-#endif // BOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_MSVC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/msvc_typename.hpp b/include/ndnboost/mpl/aux_/config/msvc_typename.hpp
index d5fab00..d706a97 100644
--- a/include/ndnboost/mpl/aux_/config/msvc_typename.hpp
+++ b/include/ndnboost/mpl/aux_/config/msvc_typename.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,10 +17,10 @@
 #include <ndnboost/mpl/aux_/config/msvc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
-#   define BOOST_MSVC_TYPENAME
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
+#   define NDNBOOST_MSVC_TYPENAME
 #else
-#   define BOOST_MSVC_TYPENAME typename
+#   define NDNBOOST_MSVC_TYPENAME typename
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_MSVC_TYPENAME_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/nttp.hpp b/include/ndnboost/mpl/aux_/config/nttp.hpp
index 6c17d43..9c74018 100644
--- a/include/ndnboost/mpl/aux_/config/nttp.hpp
+++ b/include/ndnboost/mpl/aux_/config/nttp.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -30,12 +30,12 @@
 //    template< int > struct arg;
 //    }}
 
-#if    !defined(BOOST_MPL_CFG_NTTP_BUG) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if    !defined(NDNBOOST_MPL_CFG_NTTP_BUG) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
 
-#   define BOOST_MPL_CFG_NTTP_BUG
+#   define NDNBOOST_MPL_CFG_NTTP_BUG
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_NTTP_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/overload_resolution.hpp b/include/ndnboost/mpl/aux_/config/overload_resolution.hpp
index a3a7932..78ab5f0 100644
--- a/include/ndnboost/mpl/aux_/config/overload_resolution.hpp
+++ b/include/ndnboost/mpl/aux_/config/overload_resolution.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,14 +16,14 @@
 
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if    !defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && (   BOOST_WORKAROUND(__BORLANDC__, < 0x590) \
-        || BOOST_WORKAROUND(__MWERKS__, < 0x3001) \
+#if    !defined(NDNBOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && (   NDNBOOST_WORKAROUND(__BORLANDC__, < 0x590) \
+        || NDNBOOST_WORKAROUND(__MWERKS__, < 0x3001) \
         )
 
-#   define BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION
+#   define NDNBOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_OVERLOAD_RESOLUTION_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/pp_counter.hpp b/include/ndnboost/mpl/aux_/config/pp_counter.hpp
index 52c4319..c5f3ac7 100644
--- a/include/ndnboost/mpl/aux_/config/pp_counter.hpp
+++ b/include/ndnboost/mpl/aux_/config/pp_counter.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2006
 //
@@ -14,13 +14,13 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_AUX_PP_COUNTER)
+#if !defined(NDNBOOST_MPL_AUX_PP_COUNTER)
 #   include <ndnboost/mpl/aux_/config/msvc.hpp>
-#   if BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
-#       define BOOST_MPL_AUX_PP_COUNTER() __COUNTER__
+#   if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, >= 1300)
+#       define NDNBOOST_MPL_AUX_PP_COUNTER() __COUNTER__
 #   else
-#       define BOOST_MPL_AUX_PP_COUNTER() __LINE__
+#       define NDNBOOST_MPL_AUX_PP_COUNTER() __LINE__
 #   endif
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_PP_COUNTER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/preprocessor.hpp b/include/ndnboost/mpl/aux_/config/preprocessor.hpp
index 342088e..625e6bb 100644
--- a/include/ndnboost/mpl/aux_/config/preprocessor.hpp
+++ b/include/ndnboost/mpl/aux_/config/preprocessor.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,24 +16,24 @@
 
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if !defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \
-    && (   BOOST_WORKAROUND(__MWERKS__, <= 0x3003) \
-        || BOOST_WORKAROUND(__BORLANDC__, < 0x582) \
-        || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
+#if !defined(NDNBOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION) \
+    && (   NDNBOOST_WORKAROUND(__MWERKS__, <= 0x3003) \
+        || NDNBOOST_WORKAROUND(__BORLANDC__, < 0x582) \
+        || NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(502)) \
         )
 
-#   define BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION
+#   define NDNBOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION
 
 #endif
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
-#   define BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
+#if !defined(NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#   define NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
 #endif
 
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) \
-    && BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-#   define BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
+#if !defined(NDNBOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING) \
+    && NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
+#   define NDNBOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING
 #endif
 
 
-#endif // BOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_PREPROCESSOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/static_constant.hpp b/include/ndnboost/mpl/aux_/config/static_constant.hpp
index 749397e..8421b89 100644
--- a/include/ndnboost/mpl/aux_/config/static_constant.hpp
+++ b/include/ndnboost/mpl/aux_/config/static_constant.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,12 +14,12 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-// BOOST_STATIC_CONSTANT is defined here:
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
+// NDNBOOST_STATIC_CONSTANT is defined here:
 #   include <ndnboost/config.hpp>
 #else
 // undef the macro for the preprocessing mode
-#   undef BOOST_STATIC_CONSTANT
+#   undef NDNBOOST_STATIC_CONSTANT
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_STATIC_CONSTANT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/ttp.hpp b/include/ndnboost/mpl/aux_/config/ttp.hpp
index 485c82f..cda9560 100644
--- a/include/ndnboost/mpl/aux_/config/ttp.hpp
+++ b/include/ndnboost/mpl/aux_/config/ttp.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,24 +18,24 @@
 #include <ndnboost/mpl/aux_/config/gcc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
-    && ( defined(BOOST_NO_TEMPLATE_TEMPLATES) \
-      || BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x590) ) \
+#if !defined(NDNBOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+    && ( defined(NDNBOOST_NO_TEMPLATE_TEMPLATES) \
+      || NDNBOOST_WORKAROUND( __BORLANDC__, NDNBOOST_TESTED_AT( 0x590) ) \
        )
 
-#   define BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS
+#   define NDNBOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS
 
 #endif
 
 
-#if    !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && (   BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0302)) \
-        || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
+#if    !defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && (   NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, NDNBOOST_TESTED_AT(0x0302)) \
+        || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610)) \
         )
 
-#   define BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
+#   define NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_TTP_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/typeof.hpp b/include/ndnboost/mpl/aux_/config/typeof.hpp
index b9425f9..ec2b715 100644
--- a/include/ndnboost/mpl/aux_/config/typeof.hpp
+++ b/include/ndnboost/mpl/aux_/config/typeof.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 //
@@ -16,23 +16,23 @@
 
 #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 \
+#if !defined(NDNBOOST_MPL_CFG_HAS_TYPEOF) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && (   defined(NDNBOOST_MPL_CFG_GCC) && NDNBOOST_MPL_CFG_GCC >= 0x0302 \
         || defined(__MWERKS__) && __MWERKS__ >= 0x3000 \
         )
 
-#   define BOOST_MPL_CFG_HAS_TYPEOF
+#   define NDNBOOST_MPL_CFG_HAS_TYPEOF
 
 #endif
 
 
-#if !defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE) \
-    && defined(BOOST_MPL_CFG_HAS_TYPEOF)
+#if !defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE) \
+    && defined(NDNBOOST_MPL_CFG_HAS_TYPEOF)
 
-#   define BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#   define NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 #endif
 
-#endif // BOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_TYPEOF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/use_preprocessed.hpp b/include/ndnboost/mpl/aux_/config/use_preprocessed.hpp
index 4494366..df810e5 100644
--- a/include/ndnboost/mpl/aux_/config/use_preprocessed.hpp
+++ b/include/ndnboost/mpl/aux_/config/use_preprocessed.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,6 +14,6 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-// #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+// #define NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_USE_PREPROCESSED_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/config/workaround.hpp b/include/ndnboost/mpl/aux_/config/workaround.hpp
index 3e2da98..880eaba 100644
--- a/include/ndnboost/mpl/aux_/config/workaround.hpp
+++ b/include/ndnboost/mpl/aux_/config/workaround.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,4 +16,4 @@
 
 #include <ndnboost/detail/workaround.hpp>
 
-#endif // BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/contains_impl.hpp b/include/ndnboost/mpl/aux_/contains_impl.hpp
index 53ec122..cb5ed0c 100644
--- a/include/ndnboost/mpl/aux_/contains_impl.hpp
+++ b/include/ndnboost/mpl/aux_/contains_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
 
 // Copyright Eric Friedman 2002
 // Copyright Aleksey Gurtovoy 2004
@@ -31,7 +31,7 @@
 struct contains_impl
 {
     template< typename Sequence, typename T > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : not_< is_same<
               typename find<Sequence,T>::type
             , typename end<Sequence>::type
@@ -44,7 +44,7 @@
             , typename end<Sequence>::type
             > > type;
 
-        BOOST_STATIC_CONSTANT(bool, value = 
+        NDNBOOST_STATIC_CONSTANT(bool, value = 
               (not_< is_same<
                   typename find<Sequence,T>::type
                 , typename end<Sequence>::type
@@ -54,8 +54,8 @@
     };
 };
 
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,contains_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,contains_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/count_args.hpp b/include/ndnboost/mpl/aux_/count_args.hpp
index 59852b0..28e6374 100644
--- a/include/ndnboost/mpl/aux_/count_args.hpp
+++ b/include/ndnboost/mpl/aux_/count_args.hpp
@@ -32,9 +32,9 @@
 #   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_REPEAT NDNBOOST_MPL_PP_REPEAT
 #   define AUX778076_COUNT_ARGS_PARAMS(param) \
-    BOOST_MPL_PP_PARAMS( \
+    NDNBOOST_MPL_PP_PARAMS( \
           AUX778076_COUNT_ARGS_ARITY \
         , param \
         ) \
@@ -46,10 +46,10 @@
 #   include <ndnboost/preprocessor/repeat.hpp>
 #   include <ndnboost/preprocessor/inc.hpp>
 
-#   define AUX778076_COUNT_ARGS_REPEAT BOOST_PP_REPEAT
+#   define AUX778076_COUNT_ARGS_REPEAT NDNBOOST_PP_REPEAT
 #   define AUX778076_COUNT_ARGS_PARAMS(param) \
-    BOOST_PP_ENUM_SHIFTED_PARAMS( \
-          BOOST_PP_INC(AUX778076_COUNT_ARGS_ARITY) \
+    NDNBOOST_PP_ENUM_SHIFTED_PARAMS( \
+          NDNBOOST_PP_INC(AUX778076_COUNT_ARGS_ARITY) \
         , param \
         ) \
     /**/
@@ -58,34 +58,34 @@
 
 
 #define AUX778076_IS_ARG_TEMPLATE_NAME \
-    BOOST_PP_CAT(is_,BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_arg)) \
+    NDNBOOST_PP_CAT(is_,NDNBOOST_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 \
+    NDNBOOST_PP_EXPR_IF(i, +) \
+    AUX778076_IS_ARG_TEMPLATE_NAME<NDNBOOST_PP_CAT(param,NDNBOOST_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);
+    NDNBOOST_STATIC_CONSTANT(bool, value = true);
 };
 
 template<>
 struct AUX778076_IS_ARG_TEMPLATE_NAME<AUX778076_COUNT_ARGS_DEFAULT>
 {
-    BOOST_STATIC_CONSTANT(bool, value = false);
+    NDNBOOST_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)
+struct NDNBOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX,_count_args)
 {
-    BOOST_STATIC_CONSTANT(int, value = AUX778076_COUNT_ARGS_REPEAT(
+    NDNBOOST_STATIC_CONSTANT(int, value = AUX778076_COUNT_ARGS_REPEAT(
           AUX778076_COUNT_ARGS_ARITY
         , AUX778076_COUNT_ARGS_FUNC
         , AUX778076_COUNT_ARGS_PARAM_NAME
diff --git a/include/ndnboost/mpl/aux_/find_if_pred.hpp b/include/ndnboost/mpl/aux_/find_if_pred.hpp
index 65c8786..cf2b3c3 100644
--- a/include/ndnboost/mpl/aux_/find_if_pred.hpp
+++ b/include/ndnboost/mpl/aux_/find_if_pred.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
-#define BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 // Copyright Eric Friedman 2002
@@ -28,4 +28,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_FIND_IF_PRED_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/fold_impl.hpp b/include/ndnboost/mpl/aux_/fold_impl.hpp
index 339e296..9e7d34d 100644
--- a/include/ndnboost/mpl/aux_/fold_impl.hpp
+++ b/include/ndnboost/mpl/aux_/fold_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,12 +14,12 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_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)
+#   if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 #       include <ndnboost/mpl/if.hpp>
 #       include <ndnboost/type_traits/is_same.hpp>
 #   endif
@@ -27,10 +27,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER fold_impl.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER fold_impl.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -39,5 +39,5 @@
 #   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
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AUX_FOLD_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/fold_impl_body.hpp b/include/ndnboost/mpl/aux_/fold_impl_body.hpp
index b698dbe..67c4b9a 100644
--- a/include/ndnboost/mpl/aux_/fold_impl_body.hpp
+++ b/include/ndnboost/mpl/aux_/fold_impl_body.hpp
@@ -1,7 +1,7 @@
 
 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,26 +31,26 @@
 #   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)); \
+        , NDNBOOST_PP_CAT(state,i) \
+        , AUX778076_FOLD_IMPL_OP(NDNBOOST_PP_CAT(iter,i)) \
+        >::type NDNBOOST_PP_CAT(state,NDNBOOST_PP_INC(i)); \
+    typedef typename mpl::next<NDNBOOST_PP_CAT(iter,i)>::type \
+        NDNBOOST_PP_CAT(iter,NDNBOOST_PP_INC(i)); \
     /**/
 
 #   define AUX778076_FOLD_IMPL_NAME \
-    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \
+    NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \
     /**/
 
 #   define AUX778076_FOLD_CHUNK_NAME \
-    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \
+    NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \
     /**/
 
 namespace ndnboost { namespace mpl { namespace aux {
 
 /// forward declaration
 template<
-      BOOST_MPL_AUX_NTTP_DECL(int, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(int, N)
     , typename First
     , typename Last
     , typename State
@@ -58,17 +58,17 @@
     > 
 struct AUX778076_FOLD_IMPL_NAME;
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
-#   if !BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+#   if !NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/fold_impl_body.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+// implementation for N that exceeds NDNBOOST_MPL_LIMIT_UNROLLING
 template<
-      BOOST_MPL_AUX_NTTP_DECL(int, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(int, N)
     , typename First
     , typename Last
     , typename State
@@ -77,7 +77,7 @@
 struct AUX778076_FOLD_IMPL_NAME
 {
     typedef AUX778076_FOLD_IMPL_NAME<
-          BOOST_MPL_LIMIT_UNROLLING
+          NDNBOOST_MPL_LIMIT_UNROLLING
         , First
         , Last
         , State
@@ -85,7 +85,7 @@
         > chunk_;
 
     typedef AUX778076_FOLD_IMPL_NAME<
-          ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING )
+          ( (N - NDNBOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - NDNBOOST_MPL_LIMIT_UNROLLING )
         , typename chunk_::iterator
         , Last
         , typename chunk_::state
@@ -125,12 +125,12 @@
     typedef Last iterator;
 };
 
-#   else // BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+#   else // NDNBOOST_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)
+      NDNBOOST_MPL_AUX_NTTP_DECL(int, N)
     , typename First
     , typename Last
     , typename State
@@ -152,7 +152,7 @@
 };
 
 template<
-      BOOST_MPL_AUX_NTTP_DECL(int, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(int, N)
      , typename Last
     , typename State
     , typename ForwardOp
@@ -164,19 +164,19 @@
     typedef state type;
 };
 
-#   endif // BOOST_WORKAROUND(__BORLANDC__, < 0x600)
+#   endif // NDNBOOST_WORKAROUND(__BORLANDC__, < 0x600)
  
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+template< NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/fold_impl_body.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > 
+// implementation for N that exceeds NDNBOOST_MPL_LIMIT_UNROLLING
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) > 
 struct AUX778076_FOLD_CHUNK_NAME
 {
     template<
@@ -188,7 +188,7 @@
     struct result_
     {
         typedef AUX778076_FOLD_IMPL_NAME<
-              BOOST_MPL_LIMIT_UNROLLING
+              NDNBOOST_MPL_LIMIT_UNROLLING
             , First
             , Last
             , State
@@ -196,7 +196,7 @@
             > chunk_;
 
         typedef AUX778076_FOLD_IMPL_NAME<
-              ( (N - BOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - BOOST_MPL_LIMIT_UNROLLING )
+              ( (N - NDNBOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - NDNBOOST_MPL_LIMIT_UNROLLING )
             , typename chunk_::iterator
             , Last
             , typename chunk_::state
@@ -215,13 +215,13 @@
     , typename State
     , typename ForwardOp
     > 
-struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step);
+struct NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step);
 
 template<
       typename Last
     , typename State
     >
-struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)
+struct NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)
 {
     typedef Last iterator;
     typedef State state;
@@ -240,15 +240,15 @@
     {
         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>
+            , NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)<Last,State>
+            , NDNBOOST_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)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
     /// ETI workaround
     template<> struct result_<int,int,int,int>
     {
@@ -264,7 +264,7 @@
     , typename State
     , typename ForwardOp
     > 
-struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)
+struct NDNBOOST_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_<
@@ -279,7 +279,7 @@
 };
 
 template<
-      BOOST_MPL_AUX_NTTP_DECL(int, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(int, N)
     , typename First
     , typename Last
     , typename State
@@ -291,7 +291,7 @@
 {
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 }}}
 
@@ -306,9 +306,9 @@
 
 #else
 
-#   define n_ BOOST_PP_FRAME_ITERATION(1)
+#   define n_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template<
       typename First
@@ -321,10 +321,10 @@
     typedef First iter0;
     typedef State state0;
 
-    BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused)
+    NDNBOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused)
 
-    typedef BOOST_PP_CAT(state,n_) state;
-    typedef BOOST_PP_CAT(iter,n_) iterator;
+    typedef NDNBOOST_PP_CAT(state,n_) state;
+    typedef NDNBOOST_PP_CAT(iter,n_) iterator;
 };
 
 #else
@@ -342,13 +342,13 @@
         typedef First iter0;
         typedef State state0;
 
-        BOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused)
+        NDNBOOST_MPL_PP_REPEAT(n_, AUX778076_ITER_FOLD_STEP, unused)
 
-        typedef BOOST_PP_CAT(state,n_) state;
-        typedef BOOST_PP_CAT(iter,n_) iterator;
+        typedef NDNBOOST_PP_CAT(state,n_) state;
+        typedef NDNBOOST_PP_CAT(iter,n_) iterator;
     };
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
     /// ETI workaround
     template<> struct result_<int,int,int,int>
     {
@@ -358,8 +358,8 @@
 #endif
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 #   undef n_
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/full_lambda.hpp b/include/ndnboost/mpl/aux_/full_lambda.hpp
index 5a1ba5f..0a3284d 100644
--- a/include/ndnboost/mpl/aux_/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/full_lambda.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
-#define BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -18,7 +18,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/lambda_fwd.hpp>
 #   include <ndnboost/mpl/bind_fwd.hpp>
 #   include <ndnboost/mpl/protect.hpp>
@@ -29,7 +29,7 @@
 #   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)
+#   if defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 #       include <ndnboost/mpl/if.hpp>
 #   endif
 #endif
@@ -37,10 +37,10 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER full_lambda.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER full_lambda.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -61,31 +61,31 @@
 
 // local macros, #undef-ined at the end of the header
 #   define AUX778076_LAMBDA_PARAMS(i_, param) \
-    BOOST_MPL_PP_PARAMS(i_, param) \
+    NDNBOOST_MPL_PP_PARAMS(i_, param) \
     /**/
 
 #   define AUX778076_BIND_PARAMS(param) \
-    BOOST_MPL_PP_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         ) \
     /**/
 
 #   define AUX778076_BIND_N_PARAMS(i_, param) \
-    BOOST_PP_COMMA_IF(i_) \
-    BOOST_MPL_PP_PARAMS(i_, param) \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    NDNBOOST_MPL_PP_PARAMS(i_, param) \
     /**/
 
 #   define AUX778076_ARITY_PARAM(param) \
-    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) \
+    NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) \
     /**/
 
 
-#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#define n_ NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 namespace aux {
 
 template<
-      BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
+      NDNBOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
     >
 struct lambda_or
     : true_
@@ -93,7 +93,7 @@
 };
 
 template<>
-struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
+struct lambda_or< NDNBOOST_MPL_PP_ENUM(n_,false) >
     : false_
 {
 };
@@ -131,9 +131,9 @@
 };
 
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/aux_/full_lambda.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/aux_/full_lambda.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 /// special case for 'protect'
 template< typename T, typename Tag >
@@ -152,7 +152,7 @@
 struct lambda<
           bind<F,AUX778076_BIND_PARAMS(T)>
         , Tag
-        AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)>)
+        AUX778076_ARITY_PARAM(int_<NDNBOOST_PP_INC(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY)>)
         >
 {
     typedef false_ is_le;
@@ -161,7 +161,7 @@
 };
 
 
-#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+#if defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 
 template<
       typename F
@@ -187,7 +187,7 @@
     typedef typename le_result_::type type;
 };
 
-#elif !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+#elif !defined(NDNBOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 
 /// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
 template<
@@ -214,37 +214,37 @@
 #   undef AUX778076_BIND_PARAMS
 #   undef AUX778076_LAMBDA_PARAMS
 
-#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+#if !defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 #else
-BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
 #endif
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_FULL_LAMBDA_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_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)
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
+#define i_ NDNBOOST_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_ \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    typename NDNBOOST_PP_CAT(T, NDNBOOST_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 \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    typename NDNBOOST_PP_CAT(T, NDNBOOST_PP_INC(i_))::type \
     /**/
 
 template<
@@ -252,10 +252,10 @@
     , template< AUX778076_LAMBDA_PARAMS(i_, typename P) > class F
     , AUX778076_LAMBDA_PARAMS(i_, typename L)
     >
-struct BOOST_PP_CAT(le_result,i_)
+struct NDNBOOST_PP_CAT(le_result,i_)
 {
     typedef F<
-          BOOST_MPL_PP_REPEAT(i_, AUX778076_TYPE, L)
+          NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_TYPE, L)
         > result_;
     
     typedef result_ type;
@@ -266,11 +266,11 @@
     , 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) >
+struct NDNBOOST_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)
+    typedef NDNBOOST_PP_CAT(bind,i_)<
+          NDNBOOST_PP_CAT(quote,i_)<F,Tag>
+        , NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_RESULT, L)
         > result_;
 
     typedef mpl::protect<result_> type;
@@ -283,18 +283,18 @@
 
 
 #   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_)); \
+    typedef lambda< NDNBOOST_PP_CAT(T, NDNBOOST_PP_INC(i_)), Tag > \
+        NDNBOOST_PP_CAT(l,NDNBOOST_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_)); \
+    typedef typename NDNBOOST_PP_CAT(l,NDNBOOST_PP_INC(i_))::is_le \
+        NDNBOOST_PP_CAT(is_le,NDNBOOST_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 \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    NDNBOOST_PP_CAT(is_le,NDNBOOST_PP_INC(i_))::value \
 /**/
 
 template<
@@ -308,14 +308,14 @@
         AUX778076_ARITY_PARAM(int_<i_>)
         >
 {
-    BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, T)
-    BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
+    NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, T)
+    NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
 
     typedef typename aux::lambda_or<
-          BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
+          NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
         >::type is_le;
 
-    typedef aux::BOOST_PP_CAT(le_result,i_)<
+    typedef aux::NDNBOOST_PP_CAT(le_result,i_)<
           is_le, Tag, F, AUX778076_LAMBDA_PARAMS(i_, l)
         > le_result_;
     
@@ -335,13 +335,13 @@
     , typename Tag
     >
 struct lambda<
-          BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_, T)>
+          NDNBOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_, T)>
         , Tag
-        AUX778076_ARITY_PARAM(int_<BOOST_PP_INC(i_)>)
+        AUX778076_ARITY_PARAM(int_<NDNBOOST_PP_INC(i_)>)
         >
 {
     typedef false_ is_le;
-    typedef BOOST_PP_CAT(bind,i_)<
+    typedef NDNBOOST_PP_CAT(bind,i_)<
           F
         AUX778076_BIND_N_PARAMS(i_, T)
         > result_;
@@ -350,5 +350,5 @@
 };
 
 #undef i_
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/has_apply.hpp b/include/ndnboost/mpl/aux_/has_apply.hpp
index d86ce53..329011e 100644
--- a/include/ndnboost/mpl/aux_/has_apply.hpp
+++ b/include/ndnboost/mpl/aux_/has_apply.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -18,8 +18,8 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_HAS_APPLY)
+NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false)
 #else
 template< typename T, typename fallback_ = false_ >
 struct has_apply
@@ -29,4 +29,4 @@
 #endif
 }}}
 
-#endif // BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/has_begin.hpp b/include/ndnboost/mpl/aux_/has_begin.hpp
index fca5610..62c173e 100644
--- a/include/ndnboost/mpl/aux_/has_begin.hpp
+++ b/include/ndnboost/mpl/aux_/has_begin.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/has_xxx.hpp>
 
 namespace ndnboost { namespace mpl { namespace aux {
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_begin, begin, true)
+NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_begin, begin, true)
 }}}
 
-#endif // BOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_HAS_BEGIN_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/has_rebind.hpp b/include/ndnboost/mpl/aux_/has_rebind.hpp
index 043e252..90b66e7 100644
--- a/include/ndnboost/mpl/aux_/has_rebind.hpp
+++ b/include/ndnboost/mpl/aux_/has_rebind.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -18,14 +18,14 @@
 #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)
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(NDNBOOST_INTEL_CXX_VERSION)
 #   include <ndnboost/mpl/has_xxx.hpp>
-#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#elif NDNBOOST_WORKAROUND(NDNBOOST_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))
+#elif NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
 #   include <ndnboost/mpl/if.hpp>
 #   include <ndnboost/mpl/bool.hpp>
 #   include <ndnboost/mpl/aux_/yes_no.hpp>
@@ -39,13 +39,13 @@
 
 namespace ndnboost { namespace mpl { namespace aux {
 
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(NDNBOOST_INTEL_CXX_VERSION)
 
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind, rebind, false)
+NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind, rebind, false)
 
-#elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#elif NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
 
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind_impl, rebind, false)
+NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_rebind_impl, rebind, false)
 
 template< typename T >
 struct has_rebind
@@ -62,12 +62,12 @@
 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))
+#   if !NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
 template< typename T >
 struct has_rebind
 {
     static has_rebind_tag<T>* get();
-    BOOST_STATIC_CONSTANT(bool, value = 
+    NDNBOOST_STATIC_CONSTANT(bool, value = 
           sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
         );
 };
@@ -76,7 +76,7 @@
 struct has_rebind_impl
 {
     static T* get();
-    BOOST_STATIC_CONSTANT(bool, value = 
+    NDNBOOST_STATIC_CONSTANT(bool, value = 
           sizeof(has_rebind_tag<int>() | get()) == sizeof(yes_tag)
         );
 };
@@ -96,4 +96,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_HAS_REBIND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/has_size.hpp b/include/ndnboost/mpl/aux_/has_size.hpp
index 5bb77f6..915e932 100644
--- a/include/ndnboost/mpl/aux_/has_size.hpp
+++ b/include/ndnboost/mpl/aux_/has_size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/has_xxx.hpp>
 
 namespace ndnboost { namespace mpl { namespace aux {
-BOOST_MPL_HAS_XXX_TRAIT_DEF(size)
+NDNBOOST_MPL_HAS_XXX_TRAIT_DEF(size)
 }}}
 
-#endif // BOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_HAS_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/has_tag.hpp b/include/ndnboost/mpl/aux_/has_tag.hpp
index 620923f..ec60867 100644
--- a/include/ndnboost/mpl/aux_/has_tag.hpp
+++ b/include/ndnboost/mpl/aux_/has_tag.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/has_xxx.hpp>
 
 namespace ndnboost { namespace mpl { namespace aux {
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_tag, tag, false)
+NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_tag, tag, false)
 }}}
 
-#endif // BOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_HAS_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/has_type.hpp b/include/ndnboost/mpl/aux_/has_type.hpp
index d99fef3..fa5fe23 100644
--- a/include/ndnboost/mpl/aux_/has_type.hpp
+++ b/include/ndnboost/mpl/aux_/has_type.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/has_xxx.hpp>
 
 namespace ndnboost { namespace mpl { namespace aux {
-BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_type, type, true)
+NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_type, type, true)
 }}}
 
-#endif // BOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_HAS_TYPE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/include_preprocessed.hpp b/include/ndnboost/mpl/aux_/include_preprocessed.hpp
index ca47e08..0357031 100644
--- a/include/ndnboost/mpl/aux_/include_preprocessed.hpp
+++ b/include/ndnboost/mpl/aux_/include_preprocessed.hpp
@@ -19,24 +19,24 @@
 #include <ndnboost/preprocessor/cat.hpp>
 #include <ndnboost/preprocessor/stringize.hpp>
 
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+#if !defined(NDNBOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 #   define AUX778076_PREPROCESSED_HEADER \
-    BOOST_MPL_CFG_COMPILER_DIR/BOOST_MPL_PREPROCESSED_HEADER \
+    NDNBOOST_MPL_CFG_COMPILER_DIR/NDNBOOST_MPL_PREPROCESSED_HEADER \
 /**/
 #else
 #   define AUX778076_PREPROCESSED_HEADER \
-    BOOST_PP_CAT(BOOST_MPL_CFG_COMPILER_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
+    NDNBOOST_PP_CAT(NDNBOOST_MPL_CFG_COMPILER_DIR,/)##NDNBOOST_MPL_PREPROCESSED_HEADER \
 /**/
 #endif
 
-#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
-#   define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(ndnboost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
+#if NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(700))
+#   define AUX778076_INCLUDE_STRING NDNBOOST_PP_STRINGIZE(ndnboost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
 #   include AUX778076_INCLUDE_STRING
 #   undef AUX778076_INCLUDE_STRING
 #else
-#   include BOOST_PP_STRINGIZE(ndnboost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
+#   include NDNBOOST_PP_STRINGIZE(ndnboost/mpl/aux_/preprocessed/AUX778076_PREPROCESSED_HEADER)
 #endif
 
 #   undef AUX778076_PREPROCESSED_HEADER
 
-#undef BOOST_MPL_PREPROCESSED_HEADER
+#undef NDNBOOST_MPL_PREPROCESSED_HEADER
diff --git a/include/ndnboost/mpl/aux_/inserter_algorithm.hpp b/include/ndnboost/mpl/aux_/inserter_algorithm.hpp
index cfbe84e..3a75978 100644
--- a/include/ndnboost/mpl/aux_/inserter_algorithm.hpp
+++ b/include/ndnboost/mpl/aux_/inserter_algorithm.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
-#define BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 // Copyright David Abrahams 2003-2004
@@ -33,29 +33,29 @@
 
 #include <ndnboost/preprocessor/arithmetic/dec.hpp>
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
-#   define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \
-BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
+#   define NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(name) \
 template< \
-      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+      NDNBOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
     > \
 struct name \
-    : aux::name##_impl<BOOST_MPL_PP_PARAMS(arity, P)> \
+    : aux::name##_impl<NDNBOOST_MPL_PP_PARAMS(arity, P)> \
 { \
 }; \
 \
 template< \
-      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+      NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), typename P) \
     > \
-struct name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \
+struct name< NDNBOOST_MPL_PP_PARAMS(NDNBOOST_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) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , back_inserter< typename clear<P1>::type > \
             > \
         , aux::reverse_##name##_impl< \
-              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , front_inserter< typename clear<P1>::type > \
             > \
         >::type \
@@ -63,48 +63,48 @@
 }; \
 \
 template< \
-      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+      NDNBOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
     > \
 struct reverse_##name \
-    : aux::reverse_##name##_impl<BOOST_MPL_PP_PARAMS(arity, P)> \
+    : aux::reverse_##name##_impl<NDNBOOST_MPL_PP_PARAMS(arity, P)> \
 { \
 }; \
 \
 template< \
-      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+      NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), typename P) \
     > \
-struct reverse_##name< BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P),na > \
+struct reverse_##name< NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P),na > \
     : if_< has_push_back<P1> \
         , aux::reverse_##name##_impl< \
-              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , back_inserter< typename clear<P1>::type > \
             > \
         , aux::name##_impl< \
-              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_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) \
+NDNBOOST_MPL_AUX_NA_SPEC(arity, name) \
+NDNBOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \
 /**/
 
 #else
 
-#   define BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \
-BOOST_MPL_AUX_COMMON_NAME_WKND(name) \
+#   define NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(arity, name) \
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(name) \
 template< \
-      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+      NDNBOOST_MPL_PP_PARAMS(NDNBOOST_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) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , back_inserter< typename clear<P1>::type > \
             > \
         , aux::reverse_##name##_impl< \
-              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , front_inserter< typename clear<P1>::type > \
             > \
         >::type \
@@ -112,48 +112,48 @@
 }; \
 \
 template< \
-      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+      NDNBOOST_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)> \
+          is_na<NDNBOOST_PP_CAT(P, arity)> \
+        , def_##name##_impl<NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P)> \
+        , aux::name##_impl<NDNBOOST_MPL_PP_PARAMS(arity, P)> \
         >::type type; \
 }; \
 \
 template< \
-      BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), typename P) \
+      NDNBOOST_MPL_PP_PARAMS(NDNBOOST_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) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , back_inserter< typename clear<P1>::type > \
             > \
         , aux::name##_impl< \
-              BOOST_MPL_PP_PARAMS(BOOST_PP_DEC(arity), P) \
+              NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P) \
             , front_inserter< typename clear<P1>::type > \
             > \
         >::type \
 { \
 }; \
 template< \
-      BOOST_MPL_PP_DEFAULT_PARAMS(arity, typename P, na) \
+      NDNBOOST_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)> \
+          is_na<NDNBOOST_PP_CAT(P, arity)> \
+        , def_reverse_##name##_impl<NDNBOOST_MPL_PP_PARAMS(NDNBOOST_PP_DEC(arity), P)> \
+        , aux::reverse_##name##_impl<NDNBOOST_MPL_PP_PARAMS(arity, P)> \
         >::type type; \
 }; \
-BOOST_MPL_AUX_NA_SPEC(arity, name) \
-BOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \
+NDNBOOST_MPL_AUX_NA_SPEC(arity, name) \
+NDNBOOST_MPL_AUX_NA_SPEC(arity, reverse_##name) \
 /**/
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/integral_wrapper.hpp b/include/ndnboost/mpl/aux_/integral_wrapper.hpp
index 3ff7d82..462834a 100644
--- a/include/ndnboost/mpl/aux_/integral_wrapper.hpp
+++ b/include/ndnboost/mpl/aux_/integral_wrapper.hpp
@@ -22,30 +22,30 @@
 #include <ndnboost/preprocessor/cat.hpp>
 
 #if !defined(AUX_WRAPPER_NAME)
-#   define AUX_WRAPPER_NAME BOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
+#   define AUX_WRAPPER_NAME NDNBOOST_PP_CAT(AUX_WRAPPER_VALUE_TYPE,_)
 #endif
 
 #if !defined(AUX_WRAPPER_PARAMS)
-#   define AUX_WRAPPER_PARAMS(N) BOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
+#   define AUX_WRAPPER_PARAMS(N) NDNBOOST_MPL_AUX_NTTP_DECL(AUX_WRAPPER_VALUE_TYPE, N)
 #endif
 
 #if !defined(AUX_WRAPPER_INST)
-#   if BOOST_WORKAROUND(__MWERKS__, <= 0x2407)
+#   if NDNBOOST_WORKAROUND(__MWERKS__, <= 0x2407)
 #       define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< value >
 #   else 
-#       define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
+#       define AUX_WRAPPER_INST(value) NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
 #   endif
 #endif
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 template< AUX_WRAPPER_PARAMS(N) >
 struct AUX_WRAPPER_NAME
 {
-    BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);
+    NDNBOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);
 // agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some 
 // other compilers (e.g. MSVC) are not particulary happy about it
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
     typedef struct AUX_WRAPPER_NAME type;
 #else
     typedef AUX_WRAPPER_NAME type;
@@ -56,21 +56,21 @@
 // have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
 // while some other don't like 'value + 1' (Borland), and some don't like
 // either
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 243)
  private:
-    BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
-    BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
+    NDNBOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = NDNBOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
+    NDNBOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = NDNBOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
  public:
     typedef AUX_WRAPPER_INST(next_value) next;
     typedef AUX_WRAPPER_INST(prior_value) prior;
-#elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
-    || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(502)) \
-    || (BOOST_WORKAROUND(__HP_aCC, <= 53800) && (BOOST_WORKAROUND(__hpxstd98, != 1)))
-    typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
-    typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior;
+#elif NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x561)) \
+    || NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(502)) \
+    || (NDNBOOST_WORKAROUND(__HP_aCC, <= 53800) && (NDNBOOST_WORKAROUND(__hpxstd98, != 1)))
+    typedef AUX_WRAPPER_INST( NDNBOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)) ) next;
+    typedef AUX_WRAPPER_INST( NDNBOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)) ) prior;
 #else
-    typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
-    typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
+    typedef AUX_WRAPPER_INST( NDNBOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value + 1)) ) next;
+    typedef AUX_WRAPPER_INST( NDNBOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
 #endif
 
     // enables uniform function call syntax for families of overloaded 
@@ -80,12 +80,12 @@
     operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); } 
 };
 
-#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+#if !defined(NDNBOOST_NO_INCLASS_MEMBER_INITIALIZATION)
 template< AUX_WRAPPER_PARAMS(N) >
 AUX_WRAPPER_VALUE_TYPE const AUX_WRAPPER_INST(N)::value;
 #endif
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
 #undef AUX_WRAPPER_NAME
 #undef AUX_WRAPPER_PARAMS
diff --git a/include/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp b/include/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp
index 9ec0bcc..54a93eb 100644
--- a/include/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp
+++ b/include/ndnboost/mpl/aux_/is_msvc_eti_arg.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
-#define BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -20,17 +20,17 @@
 
 namespace ndnboost { namespace mpl { namespace aux {
 
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
 
 template< typename T >
 struct is_msvc_eti_arg
 { 
-    BOOST_STATIC_CONSTANT(bool, value = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value = false);
 };
 
-#else // BOOST_MPL_CFG_MSVC_60_ETI_BUG
+#else // NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG
 
 struct eti_int_convertible
 {
@@ -44,7 +44,7 @@
     static yes_tag test(eti_int_convertible);
     static T& get();
 
-    BOOST_STATIC_CONSTANT(bool, value = 
+    NDNBOOST_STATIC_CONSTANT(bool, value = 
           sizeof(test(get())) == sizeof(yes_tag)
         );
 };
@@ -54,11 +54,11 @@
 template<>
 struct is_msvc_eti_arg<int>
 { 
-    BOOST_STATIC_CONSTANT(bool, value = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value = true);
 };
 
-#endif // BOOST_MPL_CFG_MSVC_ETI_BUG
+#endif // NDNBOOST_MPL_CFG_MSVC_ETI_BUG
 
 }}}
 
-#endif // BOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_IS_MSVC_ETI_ARG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/iter_apply.hpp b/include/ndnboost/mpl/aux_/iter_apply.hpp
index c5a62a5..6b3b7fe 100644
--- a/include/ndnboost/mpl/aux_/iter_apply.hpp
+++ b/include/ndnboost/mpl/aux_/iter_apply.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ITER_APPLY_HPP_INCLUDED
-#define BOOST_MPL_ITER_APPLY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ITER_APPLY_HPP_INCLUDED
+#define NDNBOOST_MPL_ITER_APPLY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -44,4 +44,4 @@
 
 }}}
 
-#endif // BOOST_MPL_ITER_APPLY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ITER_APPLY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/iter_fold_if_impl.hpp
index ee90eb2..b3d93be 100644
--- a/include/ndnboost/mpl/aux_/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/iter_fold_if_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 // Copyright David Abrahams 2001-2002
@@ -15,7 +15,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/identity.hpp>
 #   include <ndnboost/mpl/next.hpp>
 #   include <ndnboost/mpl/if.hpp>
@@ -25,10 +25,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER iter_fold_if_impl.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER iter_fold_if_impl.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -94,7 +94,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp,mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -111,7 +111,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp,identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -123,34 +123,34 @@
 
 #   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 \
+          typename NDNBOOST_PP_CAT(forward_step,i)::iterator \
+        , typename NDNBOOST_PP_CAT(forward_step,i)::state \
         , ForwardOp \
         , ForwardPredicate \
-        > BOOST_PP_CAT(forward_step, BOOST_PP_INC(i)); \
+        > NDNBOOST_PP_CAT(forward_step, NDNBOOST_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 \
+          typename NDNBOOST_PP_CAT(forward_step,NDNBOOST_PP_DEC(i))::iterator \
+        , typename NDNBOOST_PP_CAT(backward_step,i)::state \
         , BackwardOp \
         , BackwardPredicate \
-        > BOOST_PP_CAT(backward_step,BOOST_PP_DEC(i)); \
+        > NDNBOOST_PP_CAT(backward_step,NDNBOOST_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) \
+        NDNBOOST_PP_SUB_D(1,NDNBOOST_MPL_LIMIT_UNROLLING,i) \
         ) \
     /**/
 
 #   define AUX_LAST_FORWARD_STEP \
-    BOOST_PP_CAT(forward_step, BOOST_MPL_LIMIT_UNROLLING) \
+    NDNBOOST_PP_CAT(forward_step, NDNBOOST_MPL_LIMIT_UNROLLING) \
     /**/
 
 #   define AUX_LAST_BACKWARD_STEP \
-    BOOST_PP_CAT(backward_step, BOOST_MPL_LIMIT_UNROLLING) \
+    NDNBOOST_PP_CAT(backward_step, NDNBOOST_MPL_LIMIT_UNROLLING) \
     /**/
 
 template<
@@ -165,8 +165,8 @@
 {
  private:
     typedef iter_fold_if_null_step<Iterator,State> forward_step0;
-    BOOST_PP_REPEAT(
-          BOOST_MPL_LIMIT_UNROLLING
+    NDNBOOST_PP_REPEAT(
+          NDNBOOST_MPL_LIMIT_UNROLLING
         , AUX_ITER_FOLD_FORWARD_STEP
         , unused
         )
@@ -187,8 +187,8 @@
             >
         >::type AUX_LAST_BACKWARD_STEP;
 
-    BOOST_PP_REPEAT(
-          BOOST_MPL_LIMIT_UNROLLING
+    NDNBOOST_PP_REPEAT(
+          NDNBOOST_MPL_LIMIT_UNROLLING
         , AUX_ITER_FOLD_BACKWARD_STEP
         , unused
         )
@@ -206,5 +206,5 @@
 
 }}}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AUX_ITER_FOLD_IF_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/iter_fold_impl.hpp b/include/ndnboost/mpl/aux_/iter_fold_impl.hpp
index c67b1e7..6154127 100644
--- a/include/ndnboost/mpl/aux_/iter_fold_impl.hpp
+++ b/include/ndnboost/mpl/aux_/iter_fold_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,11 +14,11 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_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)
+#   if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 #       include <ndnboost/mpl/if.hpp>
 #       include <ndnboost/type_traits/is_same.hpp>
 #   endif
@@ -26,10 +26,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER iter_fold_impl.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER iter_fold_impl.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -38,5 +38,5 @@
 #   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
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AUX_ITER_FOLD_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/lambda_arity_param.hpp b/include/ndnboost/mpl/aux_/lambda_arity_param.hpp
index b4d0e44..369425e 100644
--- a/include/ndnboost/mpl/aux_/lambda_arity_param.hpp
+++ b/include/ndnboost/mpl/aux_/lambda_arity_param.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,10 +16,10 @@
 
 #include <ndnboost/mpl/aux_/config/ttp.hpp>
 
-#if !defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
-#   define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param)    
+#if !defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
+#   define NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param)    
 #else
-#   define BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) , param
+#   define NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM(param) , param
 #endif
 
-#endif // BOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/lambda_no_ctps.hpp
index 0966052..8da4714 100644
--- a/include/ndnboost/mpl/aux_/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/lambda_no_ctps.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,7 +18,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/lambda_fwd.hpp>
 #   include <ndnboost/mpl/bind_fwd.hpp>
 #   include <ndnboost/mpl/protect.hpp>
@@ -34,10 +34,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if    !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if    !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER lambda_no_ctps.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER lambda_no_ctps.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -58,14 +58,14 @@
 namespace ndnboost { namespace mpl {
 
 #   define AUX778076_LAMBDA_PARAMS(i_, param) \
-    BOOST_MPL_PP_PARAMS(i_, param) \
+    NDNBOOST_MPL_PP_PARAMS(i_, param) \
     /**/
 
 namespace aux {
 
-#define n_ BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#define n_ NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 template<
-      BOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
+      NDNBOOST_MPL_PP_DEFAULT_PARAMS(n_,bool C,false)
     >
 struct lambda_or
     : true_
@@ -73,7 +73,7 @@
 };
 
 template<>
-struct lambda_or< BOOST_MPL_PP_ENUM(n_,false) >
+struct lambda_or< NDNBOOST_MPL_PP_ENUM(n_,false) >
     : false_
 {
 };
@@ -88,9 +88,9 @@
     };
 };
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/aux_/lambda_no_ctps.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(1, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/aux_/lambda_no_ctps.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 } // namespace aux
 
@@ -109,10 +109,10 @@
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
     
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
@@ -126,51 +126,51 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AUX_LAMBDA_NO_CTPS_HPP_INCLUDED
 
 ///// iteration, depth == 1
 
 #else
 
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 #   define AUX778076_LAMBDA_TYPEDEF(unused, i_, F) \
     typedef lambda< \
-          typename F::BOOST_PP_CAT(arg,BOOST_PP_INC(i_)) \
+          typename F::NDNBOOST_PP_CAT(arg,NDNBOOST_PP_INC(i_)) \
         , Tag \
         , false_ \
-        > BOOST_PP_CAT(l,BOOST_PP_INC(i_)); \
+        > NDNBOOST_PP_CAT(l,NDNBOOST_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_)); \
+    typedef typename NDNBOOST_PP_CAT(l,NDNBOOST_PP_INC(i_))::is_le \
+        NDNBOOST_PP_CAT(is_le,NDNBOOST_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 \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(NDNBOOST_PP_CAT(is_le,NDNBOOST_PP_INC(i_)))::value \
     /**/
 
 #   define AUX778076_LAMBDA_RESULT(unused, i_, unused2) \
-    , typename BOOST_PP_CAT(l,BOOST_PP_INC(i_))::type \
+    , typename NDNBOOST_PP_CAT(l,NDNBOOST_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)
+        NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_TYPEDEF, F)
+        NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LE_TYPEDEF, unused)
 
         typedef aux::lambda_or<
-              BOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
+              NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_IS_LAMBDA_EXPR, unused)
             > is_le;
 
-        typedef BOOST_PP_CAT(bind,i_)<
+        typedef NDNBOOST_PP_CAT(bind,i_)<
               typename F::rebind
-            BOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_RESULT, unused)
+            NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_LAMBDA_RESULT, unused)
             > bind_;
 
         typedef typename if_<
@@ -190,4 +190,4 @@
 
 #undef i_
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/lambda_spec.hpp b/include/ndnboost/mpl/aux_/lambda_spec.hpp
index f3e6137..6d25a35 100644
--- a/include/ndnboost/mpl/aux_/lambda_spec.hpp
+++ b/include/ndnboost/mpl/aux_/lambda_spec.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2007
 //
@@ -21,29 +21,29 @@
 #include <ndnboost/mpl/aux_/lambda_arity_param.hpp>
 #include <ndnboost/mpl/aux_/config/lambda.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 
-#   define BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) \
+#   define NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) \
 template< \
-      BOOST_MPL_PP_PARAMS(i, typename T) \
+      NDNBOOST_MPL_PP_PARAMS(i, typename T) \
     , typename Tag \
     > \
 struct lambda< \
-      name< BOOST_MPL_PP_PARAMS(i, T) > \
+      name< NDNBOOST_MPL_PP_PARAMS(i, T) > \
     , Tag \
-    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<i>) \
+    NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<i>) \
     > \
 { \
     typedef false_ is_le; \
-    typedef name< BOOST_MPL_PP_PARAMS(i, T) > result_; \
+    typedef name< NDNBOOST_MPL_PP_PARAMS(i, T) > result_; \
     typedef result_ type; \
 }; \
 /**/
 
 #else
 
-#   define BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) /**/
+#   define NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(i, name) /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_LAMBDA_SPEC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/lambda_support.hpp b/include/ndnboost/mpl/aux_/lambda_support.hpp
index 955b155..aa08f98 100644
--- a/include/ndnboost/mpl/aux_/lambda_support.hpp
+++ b/include/ndnboost/mpl/aux_/lambda_support.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
-#define BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,10 +16,10 @@
 
 #include <ndnboost/mpl/aux_/config/lambda.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) /**/
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) /**/
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(i,name,params) /**/
 
 #else
 
@@ -36,58 +36,58 @@
 #   include <ndnboost/preprocessor/inc.hpp>
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC(R,typedef_,i,param) \
-    typedef_ param BOOST_PP_CAT(arg,BOOST_PP_INC(i)); \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC(R,typedef_,i,param) \
+    typedef_ param NDNBOOST_PP_CAT(arg,NDNBOOST_PP_INC(i)); \
     /**/
 
 // agurt, 07/mar/03: restore an old revision for the sake of SGI MIPSpro C++
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238) 
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238) 
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
-    typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
-    BOOST_PP_LIST_FOR_EACH_I_R( \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+    typedef NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
+    NDNBOOST_PP_LIST_FOR_EACH_I_R( \
           1 \
-        , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+        , NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
         , typedef \
-        , BOOST_PP_TUPLE_TO_LIST(i,params) \
+        , NDNBOOST_PP_TUPLE_TO_LIST(i,params) \
         ) \
     struct rebind \
     { \
-        template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
-            : name< BOOST_MPL_PP_PARAMS(i,U) > \
+        template< NDNBOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+            : name< NDNBOOST_MPL_PP_PARAMS(i,U) > \
         { \
         }; \
     }; \
     /**/
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
     /**/
 
-#elif BOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(BOOST_INTEL_CXX_VERSION)
+#elif NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 244) && !defined(NDNBOOST_INTEL_CXX_VERSION)
 // agurt, 18/jan/03: old EDG-based compilers actually enforce 11.4 para 9
 // (in strict mode), so we have to provide an alternative to the 
 // MSVC-optimized implementation
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
-    typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
-    BOOST_PP_LIST_FOR_EACH_I_R( \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+    typedef NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
+    NDNBOOST_PP_LIST_FOR_EACH_I_R( \
           1 \
-        , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+        , NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
         , typedef \
-        , BOOST_PP_TUPLE_TO_LIST(i,params) \
+        , NDNBOOST_PP_TUPLE_TO_LIST(i,params) \
         ) \
     struct rebind; \
 /**/
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
 }; \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
-struct name<BOOST_MPL_PP_PARAMS(i,T)>::rebind \
+template< NDNBOOST_MPL_PP_PARAMS(i,typename T) > \
+struct name<NDNBOOST_MPL_PP_PARAMS(i,T)>::rebind \
 { \
-    template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
-        : name< BOOST_MPL_PP_PARAMS(i,U) > \
+    template< NDNBOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+        : name< NDNBOOST_MPL_PP_PARAMS(i,U) > \
     { \
     }; \
 /**/
@@ -98,72 +98,72 @@
 template< typename T > struct has_rebind_tag;
 }}}
 
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
-    typedef BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
-    BOOST_PP_LIST_FOR_EACH_I_R( \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+    typedef NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::int_<i> arity; \
+    NDNBOOST_PP_LIST_FOR_EACH_I_R( \
           1 \
-        , BOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
+        , NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_ARG_TYPEDEF_FUNC \
         , typedef \
-        , BOOST_PP_TUPLE_TO_LIST(i,params) \
+        , NDNBOOST_PP_TUPLE_TO_LIST(i,params) \
         ) \
-    friend class BOOST_PP_CAT(name,_rebind); \
-    typedef BOOST_PP_CAT(name,_rebind) rebind; \
+    friend class NDNBOOST_PP_CAT(name,_rebind); \
+    typedef NDNBOOST_PP_CAT(name,_rebind) rebind; \
 /**/
 
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610))
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+#if NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x610))
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+template< NDNBOOST_MPL_PP_PARAMS(i,typename T) > \
 ::ndnboost::mpl::aux::yes_tag operator|( \
       ::ndnboost::mpl::aux::has_rebind_tag<int> \
-    , name<BOOST_MPL_PP_PARAMS(i,T)>* \
+    , name<NDNBOOST_MPL_PP_PARAMS(i,T)>* \
     ); \
 ::ndnboost::mpl::aux::no_tag operator|( \
       ::ndnboost::mpl::aux::has_rebind_tag<int> \
-    , name< BOOST_MPL_PP_ENUM(i,::ndnboost::mpl::na) >* \
+    , name< NDNBOOST_MPL_PP_ENUM(i,::ndnboost::mpl::na) >* \
     ); \
 /**/
-#elif !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-template< BOOST_MPL_PP_PARAMS(i,typename T) > \
+#elif !NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+template< NDNBOOST_MPL_PP_PARAMS(i,typename T) > \
 ::ndnboost::mpl::aux::yes_tag operator|( \
       ::ndnboost::mpl::aux::has_rebind_tag<int> \
-    , ::ndnboost::mpl::aux::has_rebind_tag< name<BOOST_MPL_PP_PARAMS(i,T)> >* \
+    , ::ndnboost::mpl::aux::has_rebind_tag< name<NDNBOOST_MPL_PP_PARAMS(i,T)> >* \
     ); \
 /**/
 #else
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) /**/
 #endif
 
 #   if !defined(__BORLANDC__)
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
 }; \
-BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-class BOOST_PP_CAT(name,_rebind) \
+NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+class NDNBOOST_PP_CAT(name,_rebind) \
 { \
  public: \
-    template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
-        : name< BOOST_MPL_PP_PARAMS(i,U) > \
+    template< NDNBOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+        : name< NDNBOOST_MPL_PP_PARAMS(i,U) > \
     { \
     }; \
 /**/
 #   else
-#   define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
+#   define NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params) \
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(i, name, params) \
 }; \
-BOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
-class BOOST_PP_CAT(name,_rebind) \
+NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HAS_REBIND(i, name, params) \
+class NDNBOOST_PP_CAT(name,_rebind) \
 { \
  public: \
-    template< BOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
+    template< NDNBOOST_MPL_PP_PARAMS(i,typename U) > struct apply \
     { \
-        typedef typename name< BOOST_MPL_PP_PARAMS(i,U) >::type type; \
+        typedef typename name< NDNBOOST_MPL_PP_PARAMS(i,U) >::type type; \
     }; \
 /**/
 #   endif // __BORLANDC__
 
 #endif // __EDG_VERSION__
 
-#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+#endif // NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 
-#endif // BOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/largest_int.hpp b/include/ndnboost/mpl/aux_/largest_int.hpp
index f88ad94..6d668cc 100644
--- a/include/ndnboost/mpl/aux_/largest_int.hpp
+++ b/include/ndnboost/mpl/aux_/largest_int.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
-#define BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -27,7 +27,7 @@
 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)
+#if !defined(NDNBOOST_NO_INTRINSIC_WCHAR_T)
 template<> struct integral_rank<wchar_t>        : int_<5> {};
 #endif
 template<> struct integral_rank<short>          : int_<6> {};
@@ -37,13 +37,13 @@
 template<> struct integral_rank<long>           : int_<10> {};
 template<> struct integral_rank<unsigned long>  : int_<11> {};
 
-#if defined(BOOST_HAS_LONG_LONG)
+#if defined(NDNBOOST_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 !defined(NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
     : if_c< 
           ( integral_rank<T1>::value >= integral_rank<T2>::value )
         , T1
@@ -60,4 +60,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_LARGEST_INT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/logical_op.hpp b/include/ndnboost/mpl/aux_/logical_op.hpp
index e378e1f..4d06cc5 100644
--- a/include/ndnboost/mpl/aux_/logical_op.hpp
+++ b/include/ndnboost/mpl/aux_/logical_op.hpp
@@ -13,7 +13,7 @@
 
 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/bool.hpp>
 #   include <ndnboost/mpl/aux_/nested_type_wknd.hpp>
 #   include <ndnboost/mpl/aux_/na_spec.hpp>
@@ -36,77 +36,77 @@
 namespace ndnboost { namespace mpl {
 
 #   define AUX778076_PARAMS(param, sub) \
-    BOOST_MPL_PP_PARAMS( \
-          BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY, sub) \
+    NDNBOOST_MPL_PP_PARAMS( \
+          NDNBOOST_MPL_PP_SUB(NDNBOOST_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) \
+    NDNBOOST_MPL_PP_EXT_PARAMS( \
+          2, NDNBOOST_MPL_PP_SUB(NDNBOOST_PP_INC(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY), sub) \
         , param \
         ) \
     /**/
 
 #   define AUX778076_SPEC_PARAMS(param) \
-    BOOST_MPL_PP_ENUM( \
-          BOOST_PP_DEC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
+    NDNBOOST_MPL_PP_ENUM( \
+          NDNBOOST_PP_DEC(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
         , param \
         ) \
     /**/
 
 namespace aux {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_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,_)
+struct NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)
+    : NDNBOOST_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
+struct NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)< AUX778076_OP_VALUE2,AUX778076_PARAMS(T, 1) >
+    : NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , AUX778076_SHIFTED_PARAMS(T, 1)
-        , BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+        , NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_)
         >
 {
 };
 
 template<>
-struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+struct NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)<
           AUX778076_OP_VALUE2
-        , AUX778076_SPEC_PARAMS(BOOST_PP_CAT(AUX778076_OP_VALUE2,_))
+        , AUX778076_SPEC_PARAMS(NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_))
         >
-    : BOOST_PP_CAT(AUX778076_OP_VALUE2,_)
+    : NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_)
 {
 };
 
 #else
 
-template< bool C_ > struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)
+template< bool C_ > struct NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)
 {
     template< AUX778076_PARAMS(typename T, 1) > struct result_
-        : BOOST_PP_CAT(AUX778076_OP_VALUE1,_)
+        : NDNBOOST_PP_CAT(AUX778076_OP_VALUE1,_)
     {
     };
 };
 
-template<> struct BOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
+template<> struct NDNBOOST_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,_) >
+        : NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)< 
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+            >::template result_< AUX778076_SHIFTED_PARAMS(T,1),NDNBOOST_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,_)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
+    template<> struct result_<AUX778076_SPEC_PARAMS(NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_))>
+        : NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_)
     {
     };
 };
@@ -114,44 +114,44 @@
 };
 
 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,_)
+struct NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)<AUX778076_OP_VALUE2>
+    ::result_< AUX778076_SPEC_PARAMS(NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_)) >
+        : NDNBOOST_PP_CAT(AUX778076_OP_VALUE2,_)
 {
 };
-#endif // BOOST_MSVC == 1300
+#endif // NDNBOOST_MSVC == 1300
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_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,_))
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename T, NDNBOOST_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
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+    : aux::NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)<
+          NDNBOOST_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
+    : aux::NDNBOOST_PP_CAT(AUX778076_OP_NAME,impl)< 
+          NDNBOOST_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
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
         , AUX778076_OP_NAME
         , (AUX778076_PARAMS(T, 0))
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
-    , BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+    , NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
     , AUX778076_OP_NAME
     )
 
diff --git a/include/ndnboost/mpl/aux_/msvc_dtw.hpp b/include/ndnboost/mpl/aux_/msvc_dtw.hpp
index 90ef28d..99cd062 100644
--- a/include/ndnboost/mpl/aux_/msvc_dtw.hpp
+++ b/include/ndnboost/mpl/aux_/msvc_dtw.hpp
@@ -17,7 +17,7 @@
 
 // local macros, #undef-ined at the end of the header
 #define AUX778076_DTW_PARAMS(param) \
-    BOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \
+    NDNBOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \
 /**/
 
 #define AUX778076_DTW_ORIGINAL_NAME \
diff --git a/include/ndnboost/mpl/aux_/msvc_eti_base.hpp b/include/ndnboost/mpl/aux_/msvc_eti_base.hpp
index e7a1c4a..af5313b 100644
--- a/include/ndnboost/mpl/aux_/msvc_eti_base.hpp
+++ b/include/ndnboost/mpl/aux_/msvc_eti_base.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -21,7 +21,7 @@
 
 namespace ndnboost { namespace mpl { namespace aux {
 
-#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG)
 
 template< bool > struct msvc_eti_base_impl
 {
@@ -50,12 +50,12 @@
 {
 };
 
-#else // !BOOST_MPL_CFG_MSVC_70_ETI_BUG
+#else // !NDNBOOST_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))
+#if NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, NDNBOOST_TESTED_AT(0x0304))
     msvc_eti_base();
 #endif
     typedef T type;
@@ -74,4 +74,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_MSVC_ETI_BASE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/msvc_is_class.hpp b/include/ndnboost/mpl/aux_/msvc_is_class.hpp
index edcb8b9..b47f7d6 100644
--- a/include/ndnboost/mpl/aux_/msvc_is_class.hpp
+++ b/include/ndnboost/mpl/aux_/msvc_is_class.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -55,4 +55,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_MSVC_IS_CLASS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/msvc_never_true.hpp b/include/ndnboost/mpl/aux_/msvc_never_true.hpp
index fed531e..b9e2e02 100644
--- a/include/ndnboost/mpl/aux_/msvc_never_true.hpp
+++ b/include/ndnboost/mpl/aux_/msvc_never_true.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/aux_/config/msvc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
 
 namespace ndnboost { namespace mpl { namespace aux {
 
@@ -29,6 +29,6 @@
 
 }}}
 
-#endif // BOOST_MSVC
+#endif // NDNBOOST_MSVC
 
-#endif // BOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_MSVC_NEVER_TRUE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/msvc_type.hpp b/include/ndnboost/mpl/aux_/msvc_type.hpp
index c652ed2..b2e8fc5 100644
--- a/include/ndnboost/mpl/aux_/msvc_type.hpp
+++ b/include/ndnboost/mpl/aux_/msvc_type.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
-#define BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -19,7 +19,7 @@
 
 namespace ndnboost { namespace mpl { namespace aux {
 
-#if defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG)
 
 template< bool > struct msvc_type_impl
 {
@@ -43,7 +43,7 @@
 {
 };
 
-#else // BOOST_MPL_CFG_MSVC_70_ETI_BUG
+#else // NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG
 
 template< typename T > struct msvc_type 
 {
@@ -59,4 +59,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_MSVC_TYPE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/na.hpp b/include/ndnboost/mpl/aux_/na.hpp
index 2ab6449..eb9f81e 100644
--- a/include/ndnboost/mpl/aux_/na.hpp
+++ b/include/ndnboost/mpl/aux_/na.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NA_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NA_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NA_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -25,7 +25,7 @@
 struct is_na
     : false_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using false_::value;
 #endif
 };
@@ -34,7 +34,7 @@
 struct is_na<na>
     : true_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using true_::value;
 #endif
 };
@@ -43,7 +43,7 @@
 struct is_not_na
     : true_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using true_::value;
 #endif
 };
@@ -52,12 +52,12 @@
 struct is_not_na<na>
     : false_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using false_::value;
 #endif
 };
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 template< typename T, typename U > struct if_na
 {
     typedef T type;
@@ -92,4 +92,4 @@
 
 }}
 
-#endif // BOOST_MPL_AUX_NA_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NA_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/na_assert.hpp b/include/ndnboost/mpl/aux_/na_assert.hpp
index e0c947c..0075c4e 100644
--- a/include/ndnboost/mpl/aux_/na_assert.hpp
+++ b/include/ndnboost/mpl/aux_/na_assert.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -18,17 +18,17 @@
 #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)
+#if !NDNBOOST_WORKAROUND(_MSC_FULL_VER, <= 140050601)    \
+    && !NDNBOOST_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>)) \
+#   define NDNBOOST_MPL_AUX_ASSERT_NOT_NA(x) \
+    NDNBOOST_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) \
+#   define NDNBOOST_MPL_AUX_ASSERT_NOT_NA(x) \
+    NDNBOOST_STATIC_ASSERT(!ndnboost::mpl::is_na<x>::value) \
 /**/
 #endif
 
-#endif // BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/na_fwd.hpp b/include/ndnboost/mpl/aux_/na_fwd.hpp
index 7ad343b..c4de430 100644
--- a/include/ndnboost/mpl/aux_/na_fwd.hpp
+++ b/include/ndnboost/mpl/aux_/na_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,7 +16,7 @@
 
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 // n.a. == not available
 struct na
@@ -25,7 +25,7 @@
     enum { value = 0 };
 };
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(na)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(na)
 
-#endif // BOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NA_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/na_spec.hpp b/include/ndnboost/mpl/aux_/na_spec.hpp
index 04e2328..ed03f4c 100644
--- a/include/ndnboost/mpl/aux_/na_spec.hpp
+++ b/include/ndnboost/mpl/aux_/na_spec.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
-#define BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -14,7 +14,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/lambda_fwd.hpp>
 #   include <ndnboost/mpl/int.hpp>
 #   include <ndnboost/mpl/bool.hpp>
@@ -35,89 +35,89 @@
 #include <ndnboost/mpl/aux_/config/overload_resolution.hpp>
 
 
-#define BOOST_MPL_AUX_NA_PARAMS(i) \
-    BOOST_MPL_PP_ENUM(i, na) \
+#define NDNBOOST_MPL_AUX_NA_PARAMS(i) \
+    NDNBOOST_MPL_PP_ENUM(i, na) \
 /**/
 
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-#   define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
+#if defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define NDNBOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
 namespace aux { \
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > \
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) > \
 struct arity< \
-          name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+          name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > \
         , N \
         > \
-    : int_< BOOST_MPL_LIMIT_METAFUNCTION_ARITY > \
+    : int_< NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY > \
 { \
 }; \
 } \
 /**/
 #else
-#   define BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) /**/
+#   define NDNBOOST_MPL_AUX_NA_SPEC_ARITY(i, name) /**/
 #endif
 
-#define BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
+#define NDNBOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
 template<> \
-struct name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+struct name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > \
 { \
     template< \
-          BOOST_MPL_PP_PARAMS(i, typename T) \
-        BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
+          NDNBOOST_MPL_PP_PARAMS(i, typename T) \
+        NDNBOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, typename T, na) \
         > \
     struct apply \
-        : name< BOOST_MPL_PP_PARAMS(i, T) > \
+        : name< NDNBOOST_MPL_PP_PARAMS(i, T) > \
     { \
     }; \
 }; \
 /**/
 
-#if defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-#   define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+#if defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   define NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
 template<> \
 struct lambda< \
-      name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+      name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > \
     , void_ \
     , true_ \
     > \
 { \
     typedef false_ is_le; \
-    typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
+    typedef name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > type; \
 }; \
 template<> \
 struct lambda< \
-      name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+      name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > \
     , void_ \
     , false_ \
     > \
 { \
     typedef false_ is_le; \
-    typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
+    typedef name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > type; \
 }; \
 /**/
 #else
-#   define BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+#   define NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
 template< typename Tag > \
 struct lambda< \
-      name< BOOST_MPL_AUX_NA_PARAMS(i) > \
+      name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > \
     , Tag \
-    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
+    NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM(int_<-1>) \
     > \
 { \
     typedef false_ is_le; \
-    typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > result_; \
-    typedef name< BOOST_MPL_AUX_NA_PARAMS(i) > type; \
+    typedef name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > result_; \
+    typedef name< NDNBOOST_MPL_AUX_NA_PARAMS(i) > type; \
 }; \
 /**/
 #endif
 
-#if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
-    || defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
-        && defined(BOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
-#   define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
+#if defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING) \
+    || defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT) \
+        && defined(NDNBOOST_MPL_CFG_BROKEN_OVERLOAD_RESOLUTION)
+#   define NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
 namespace aux { \
-template< BOOST_MPL_PP_PARAMS(j, typename T) > \
+template< NDNBOOST_MPL_PP_PARAMS(j, typename T) > \
 struct template_arity< \
-          name< BOOST_MPL_PP_PARAMS(j, T) > \
+          name< NDNBOOST_MPL_PP_PARAMS(j, T) > \
         > \
     : int_<j> \
 { \
@@ -125,7 +125,7 @@
 \
 template<> \
 struct template_arity< \
-          name< BOOST_MPL_PP_ENUM(i, na) > \
+          name< NDNBOOST_MPL_PP_ENUM(i, na) > \
         > \
     : int_<-1> \
 { \
@@ -133,43 +133,43 @@
 } \
 /**/
 #else
-#   define BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) /**/
+#   define NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) /**/
 #endif
 
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
-#   define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
+#if defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
+#   define NDNBOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
 template<> \
-struct name< BOOST_MPL_PP_ENUM(i, int) > \
+struct name< NDNBOOST_MPL_PP_ENUM(i, int) > \
 { \
     typedef int type; \
     enum { value = 0 }; \
 }; \
 /**/
 #else
-#   define BOOST_MPL_AUX_NA_SPEC_ETI(i, name) /**/
+#   define NDNBOOST_MPL_AUX_NA_SPEC_ETI(i, name) /**/
 #endif
 
-#define BOOST_MPL_AUX_NA_PARAM(param) param = na
+#define NDNBOOST_MPL_AUX_NA_PARAM(param) param = na
 
-#define BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
-BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
-BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
-BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, i, name) \
+#define NDNBOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, i, name) \
 /**/
 
-#define BOOST_MPL_AUX_NA_SPEC(i, name) \
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
+#define NDNBOOST_MPL_AUX_NA_SPEC(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_NO_ETI(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
 /**/
 
-#define BOOST_MPL_AUX_NA_SPEC2(i, j, name) \
-BOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
-BOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
-BOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
-BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
+#define NDNBOOST_MPL_AUX_NA_SPEC2(i, j, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_MAIN(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_ETI(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(i, name) \
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(i, j, name) \
 /**/
 
 
-#endif // BOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NA_SPEC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/nested_type_wknd.hpp b/include/ndnboost/mpl/aux_/nested_type_wknd.hpp
index e00c76d..f366a87 100644
--- a/include/ndnboost/mpl/aux_/nested_type_wknd.hpp
+++ b/include/ndnboost/mpl/aux_/nested_type_wknd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
-#define BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,10 +17,10 @@
 #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))
+#if NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, NDNBOOST_TESTED_AT(0x0302)) \
+    || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x561)) \
+    || NDNBOOST_WORKAROUND(__SUNPRO_CC, NDNBOOST_TESTED_AT(0x530)) \
+    || NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
 
 namespace ndnboost { namespace mpl { namespace aux {
 template< typename T > struct nested_type_wknd
@@ -29,20 +29,20 @@
 };
 }}}
 
-#if BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-#   define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
+#if NDNBOOST_WORKAROUND(__DMC__, NDNBOOST_TESTED_AT(0x840))
+#   define NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
     aux::nested_type_wknd<T> \
 /**/
 #else
-#   define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
+#   define NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T) \
     ::ndnboost::mpl::aux::nested_type_wknd<T> \
 /**/
 #endif
 
-#else // !BOOST_MPL_CFG_GCC et al.
+#else // !NDNBOOST_MPL_CFG_GCC et al.
 
-#   define BOOST_MPL_AUX_NESTED_TYPE_WKND(T) T::type
+#   define NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T) T::type
 
 #endif 
 
-#endif // BOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NESTED_TYPE_WKND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/nttp_decl.hpp b/include/ndnboost/mpl/aux_/nttp_decl.hpp
index ebfe6a1..05b64ae 100644
--- a/include/ndnboost/mpl/aux_/nttp_decl.hpp
+++ b/include/ndnboost/mpl/aux_/nttp_decl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
-#define BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,7 +16,7 @@
 
 #include <ndnboost/mpl/aux_/config/nttp.hpp>
 
-#if defined(BOOST_MPL_CFG_NTTP_BUG)
+#if defined(NDNBOOST_MPL_CFG_NTTP_BUG)
 
 typedef bool        _mpl_nttp_bool;
 typedef int         _mpl_nttp_int;
@@ -24,12 +24,12 @@
 typedef long        _mpl_nttp_long;
 
 #   include <ndnboost/preprocessor/cat.hpp>
-#   define BOOST_MPL_AUX_NTTP_DECL(T, x) BOOST_PP_CAT(_mpl_nttp_,T) x /**/
+#   define NDNBOOST_MPL_AUX_NTTP_DECL(T, x) NDNBOOST_PP_CAT(_mpl_nttp_,T) x /**/
 
 #else
 
-#   define BOOST_MPL_AUX_NTTP_DECL(T, x) T x /**/
+#   define NDNBOOST_MPL_AUX_NTTP_DECL(T, x) T x /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NTTP_DECL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/numeric_cast_utils.hpp b/include/ndnboost/mpl/aux_/numeric_cast_utils.hpp
index 8f0ce0c..6021fef 100644
--- a/include/ndnboost/mpl/aux_/numeric_cast_utils.hpp
+++ b/include/ndnboost/mpl/aux_/numeric_cast_utils.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
-#define BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 //
@@ -28,10 +28,10 @@
 struct cast1st_impl
 {
     template< typename N1, typename N2 > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : apply_wrap2< 
               F
-            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
+            , typename apply_wrap1< NDNBOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
             , N2
             >
     {
@@ -39,7 +39,7 @@
     {
     typedef typename apply_wrap2< 
               F
-            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
+            , typename apply_wrap1< NDNBOOST_MPL_AUX_NUMERIC_CAST<Tag1,Tag2>,N1 >::type
             , N2
             >::type type;
 #endif
@@ -54,11 +54,11 @@
 struct cast2nd_impl
 {
     template< typename N1, typename N2 > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : apply_wrap2< 
               F
             , N1
-            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
+            , typename apply_wrap1< NDNBOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
             >
     {
 #else
@@ -66,7 +66,7 @@
         typedef typename apply_wrap2< 
               F
             , N1
-            , typename apply_wrap1< BOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
+            , typename apply_wrap1< NDNBOOST_MPL_AUX_NUMERIC_CAST<Tag2,Tag1>,N2 >::type
             >::type type;
 #endif
     };
@@ -74,4 +74,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_NUMERIC_CAST_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/numeric_op.hpp b/include/ndnboost/mpl/aux_/numeric_op.hpp
index 1acf439..07bf564 100644
--- a/include/ndnboost/mpl/aux_/numeric_op.hpp
+++ b/include/ndnboost/mpl/aux_/numeric_op.hpp
@@ -1,5 +1,5 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
@@ -17,7 +17,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/numeric_cast.hpp>
 #   include <ndnboost/mpl/apply_wrap.hpp>
 #   include <ndnboost/mpl/if.hpp>
@@ -34,8 +34,8 @@
 
 #include <ndnboost/mpl/aux_/config/static_constant.hpp>
 
-#if defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    || defined(BOOST_MPL_PREPROCESSING_MODE)
+#if defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    || defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
 #   include <ndnboost/mpl/limits/arity.hpp>
 #   include <ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp>
@@ -58,15 +58,15 @@
 
 
 #if !defined(AUX778076_OP_ARITY)
-#   define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#   define AUX778076_OP_ARITY NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 #endif
 
 #if !defined(AUX778076_OP_IMPL_NAME)
-#   define AUX778076_OP_IMPL_NAME BOOST_PP_CAT(AUX778076_OP_PREFIX,_impl)
+#   define AUX778076_OP_IMPL_NAME NDNBOOST_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)
+#   define AUX778076_OP_TAG_NAME NDNBOOST_PP_CAT(AUX778076_OP_PREFIX,_tag)
 #endif
 
 namespace ndnboost { namespace mpl {
@@ -74,9 +74,9 @@
 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 
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_) = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value 
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_) = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value 
     >
 struct AUX778076_OP_IMPL_NAME
     : if_c<
@@ -85,8 +85,8 @@
     >
 struct AUX778076_OP_IMPL_NAME
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 #endif
         , aux::cast2nd_impl< AUX778076_OP_IMPL_NAME<Tag1,Tag1>,Tag1,Tag2 >
@@ -101,17 +101,17 @@
     template< typename U1, typename U2 > struct apply 
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value = 0);
     };
 };
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_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);
+        NDNBOOST_STATIC_CONSTANT(int, value = 0);
     };
 };
 
@@ -120,7 +120,7 @@
     template< typename U1, typename U2 > struct apply 
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value = 0);
     };
 };
 #else
@@ -129,7 +129,7 @@
     template< typename U1, typename U2 > struct apply 
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value = 0);
     };
 };
 
@@ -138,14 +138,14 @@
     template< typename U1, typename U2 > struct apply 
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value = 0);
     };
 };
 #endif
 
 
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && BOOST_WORKAROUND(BOOST_MSVC, >= 1300)
+#if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && NDNBOOST_WORKAROUND(NDNBOOST_MSVC, >= 1300)
 template< typename T > struct AUX778076_OP_TAG_NAME
     : tag<T,na>
 {
@@ -160,71 +160,71 @@
 
 #if AUX778076_OP_ARITY != 2
 
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   if !defined(NDNBOOST_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_RIGHT_OPERAND(unused, i, N) , NDNBOOST_PP_CAT(N, NDNBOOST_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 ) \
+    NDNBOOST_MPL_PP_REPEAT( NDNBOOST_PP_DEC(i), NDNBOOST_MPL_PP_REPEAT_IDENTITY_FUNC, AUX778076_OP_NAME< ) \
+    N1 NDNBOOST_MPL_PP_REPEAT( NDNBOOST_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)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
+    NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           AUX778076_OP_ARITY
         , AUX778076_OP_NAME
-        , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+        , ( NDNBOOST_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()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,( NDNBOOST_PP_DEC(AUX778076_OP_ARITY), 2, <ndnboost/mpl/aux_/numeric_op.hpp> ))
+#include NDNBOOST_PP_ITERATE()
 
 #   undef AUX778076_OP_N_CALLS
 #   undef AUX778076_OP_RIGHT_OPERAND
 
-#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 /// forward declaration
 template< 
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
-struct BOOST_PP_CAT(AUX778076_OP_NAME,2);
+struct NDNBOOST_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)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL(2, typename N, na)
     >
 struct AUX778076_OP_NAME
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
     : aux::msvc_eti_base< typename if_<
 #else
     : if_<
 #endif
           is_na<N3>
-        , BOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
+        , NDNBOOST_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)
+              NDNBOOST_PP_CAT(AUX778076_OP_NAME,2)<N1,N2>
+            , NDNBOOST_MPL_PP_EXT_PARAMS(3, NDNBOOST_PP_INC(AUX778076_OP_ARITY), N)
             >
         >::type
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
     >
 #endif
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           AUX778076_OP_ARITY
         , AUX778076_OP_NAME
-        , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+        , ( NDNBOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
         )
 };
 
@@ -232,21 +232,21 @@
       typename N1
     , typename N2
     >
-struct BOOST_PP_CAT(AUX778076_OP_NAME,2)
+struct NDNBOOST_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)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct AUX778076_OP_NAME
 
 #endif
 
-#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if !defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
     : AUX778076_OP_IMPL_NAME<
           typename AUX778076_OP_TAG_NAME<N1>::type
         , typename AUX778076_OP_TAG_NAME<N2>::type
@@ -264,52 +264,52 @@
 {
 #if AUX778076_OP_ARITY != 2
 
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+#   if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           AUX778076_OP_ARITY
         , AUX778076_OP_NAME
-        , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(2, N, na) )
+        , ( NDNBOOST_MPL_PP_PARTIAL_SPEC_PARAMS(2, N, na) )
         )
 #   else
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, BOOST_PP_CAT(AUX778076_OP_NAME,2), (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, NDNBOOST_PP_CAT(AUX778076_OP_NAME,2), (N1, N2))
 #   endif
 
 #else
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, AUX778076_OP_NAME, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, AUX778076_OP_NAME, (N1, N2))
 #endif
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, AUX778076_OP_ARITY, AUX778076_OP_NAME)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, AUX778076_OP_ARITY, AUX778076_OP_NAME)
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_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
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
 
-#   define i_ BOOST_PP_FRAME_ITERATION(1)
+#   define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<
-      BOOST_MPL_PP_PARAMS(i_, typename N)
+      NDNBOOST_MPL_PP_PARAMS(i_, typename N)
     >
-struct AUX778076_OP_NAME<BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na)>
+struct AUX778076_OP_NAME<NDNBOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na)>
 #if i_ != 2
     : AUX778076_OP_N_CALLS(i_, N)
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           AUX778076_OP_ARITY
         , AUX778076_OP_NAME
-        , ( BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na) )
+        , ( NDNBOOST_MPL_PP_PARTIAL_SPEC_PARAMS(i_, N, na) )
         )
 };
 #endif
 
 #   undef i_
 
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp
index 119fa2d..6ecd7fd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp
index 9d372f1..495377c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp
index 3ac4340..29c017a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/arg.hpp
@@ -10,12 +10,12 @@
 // *Preprocessed* version of the main "arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -23,16 +23,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -40,16 +40,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -57,16 +57,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -74,16 +74,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -91,16 +91,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -108,10 +108,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
index acd054b..0ba4ca5 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/basic_bind.hpp
@@ -70,8 +70,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -112,8 +112,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -155,8 +155,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -199,8 +199,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -245,8 +245,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -294,7 +294,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp
index 35ee492..3a5754b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/bind.hpp
@@ -92,8 +92,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -141,8 +141,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -195,8 +195,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -254,8 +254,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -319,8 +319,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -391,7 +391,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp
index 1a2ac8d..6a3f847 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp
index 536f350..8082890 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp
index 0869fba..78cdd23 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp
index 5922aff..9ec580d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp
index b47c51e..71159c2 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
index 9a7edf5..3471f18 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/full_lambda.hpp
@@ -552,7 +552,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp
index 7bd1c1f..b608850 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
index b9f165e..f758629 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp
index 5621cd9..ace1894 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -132,8 +132,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
index 7553efd..949e316 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
index 213475d..5287a1f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp
index 6bee1e6..df9a10b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp
index cd08075..1e4726f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp
index 8e39d0d..6006e26 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp
index 65509f2..2009f89 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
index d14e535..5406a42 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp
index 9427d08..6bc19d0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp
index 330e40f..c31761d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/placeholders.hpp
@@ -10,96 +10,96 @@
 // *Preprocessed* version of the main "placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp
index 19c04d3..94bd633 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp
index c5acfdd..ec50521 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp
index b86b242..88db931 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp
index ee61972..640c083 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
index c924f2a..bd0c328 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc/unpack_args.hpp
@@ -91,7 +91,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp
index 24b88d8..5c1b95a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp
index e4b1cd2..80f72b0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
index 4083ade..8519929 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp
@@ -71,8 +71,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -114,8 +114,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -158,8 +158,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -203,8 +203,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -250,8 +250,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -300,7 +300,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp
index ed6a853..c5396db 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bind.hpp
@@ -93,8 +93,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -143,8 +143,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -198,8 +198,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -258,8 +258,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -324,8 +324,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -397,7 +397,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp
index 90e8593..cd8cc5c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp
index c71a8f4..e98247b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
index b7f0ce7..1f276b7 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp
index 0f5415c..1bc4433 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
index 0d02da4..6455885 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
index dcea342..3acbd9f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp
@@ -552,7 +552,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp
index e05fa3c..a7eb4a4 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
index f89a587..35bd413 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp
index 41f387f..a97f313 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -134,8 +134,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp
index 7139b79..a4b8eeb 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
index f7c3491..5cd141b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp
index ae6b592..454fda8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp
index 89c6172..3e89691 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
index b28e100..6de1e16 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp
index e929602..cae8edf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp
index de03e3e..5d8b2cd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
index c8df29c..2964fb8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
index a726ff1..57a5fe0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp
index f4514e5..9a55fed 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
index 3098efe..19049ea 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp
@@ -91,7 +91,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
index 119fa2d..6ecd7fd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
index 9d372f1..495377c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
index 3ac4340..29c017a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp
@@ -10,12 +10,12 @@
 // *Preprocessed* version of the main "arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -23,16 +23,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -40,16 +40,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -57,16 +57,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -74,16 +74,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -91,16 +91,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1, typename U2, typename U3, typename U4, typename U5
@@ -108,10 +108,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
index acd054b..0ba4ca5 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp
@@ -70,8 +70,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -112,8 +112,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -155,8 +155,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -199,8 +199,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -245,8 +245,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -294,7 +294,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
index 35ee492..3a5754b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
@@ -92,8 +92,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -141,8 +141,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -195,8 +195,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -254,8 +254,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -319,8 +319,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -391,7 +391,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
index 1a2ac8d..6a3f847 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
index 536f350..8082890 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
index 0869fba..78cdd23 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
index 5922aff..9ec580d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
index b47c51e..71159c2 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
index 9a7edf5..3471f18 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp
@@ -552,7 +552,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
index 7bd1c1f..b608850 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
index b9f165e..f758629 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
index 5621cd9..ace1894 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -132,8 +132,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
index 7553efd..949e316 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
index 213475d..5287a1f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
index 6bee1e6..df9a10b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
index cd08075..1e4726f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
index 8e39d0d..6006e26 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
index 65509f2..2009f89 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
index d14e535..5406a42 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
index 9427d08..6bc19d0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
index 330e40f..c31761d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp
@@ -10,96 +10,96 @@
 // *Preprocessed* version of the main "placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
index 19c04d3..94bd633 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
index c5acfdd..ec50521 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
index b86b242..88db931 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
index ee61972..640c083 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
index c924f2a..bd0c328 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp
@@ -91,7 +91,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp
index 24b88d8..5c1b95a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp
index e4b1cd2..80f72b0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
index 8895825..17ef3ff 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/basic_bind.hpp
@@ -82,8 +82,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, int dummy_
@@ -133,8 +133,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, int dummy_
@@ -185,8 +185,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, int dummy_
@@ -238,8 +238,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, int dummy_
@@ -294,8 +294,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -353,8 +353,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp
index 18db350..c56f63d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/bind.hpp
@@ -104,8 +104,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, int dummy_
@@ -162,8 +162,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, int dummy_
@@ -225,8 +225,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, int dummy_
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, int dummy_
@@ -368,8 +368,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -450,8 +450,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp
index 90e8593..cd8cc5c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp
index c71a8f4..e98247b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp
index b7f0ce7..1f276b7 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp
index 0f5415c..1bc4433 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp
index 0d02da4..6455885 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
index 4d09c10..ef1eb54 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/full_lambda.hpp
@@ -530,7 +530,7 @@
     typedef result_ type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp
index e05fa3c..a7eb4a4 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
index f89a587..35bd413 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp
index 41f387f..a97f313 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -134,8 +134,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp
index 7139b79..a4b8eeb 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp
index f7c3491..5cd141b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp
index ae6b592..454fda8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp
index 89c6172..3e89691 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
index b28e100..6de1e16 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp
index e929602..cae8edf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp
index de03e3e..5d8b2cd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp
index c8df29c..2964fb8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp
index a726ff1..57a5fe0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp
index f4514e5..9a55fed 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
index 9c9204f..aec31af 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/dmc/unpack_args.hpp
@@ -88,7 +88,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp
index 24b88d8..5c1b95a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp
index e4b1cd2..80f72b0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
index a2a565e..8e0bf73 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/basic_bind.hpp
@@ -82,8 +82,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -133,8 +133,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -185,8 +185,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -238,8 +238,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -351,8 +351,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp
index f2cde5a..45cfc67 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/bind.hpp
@@ -104,8 +104,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -162,8 +162,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -225,8 +225,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -367,8 +367,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -448,8 +448,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp
index 90e8593..cd8cc5c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp
index c71a8f4..e98247b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp
index b7f0ce7..1f276b7 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp
index 0f5415c..1bc4433 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp
index 0d02da4..6455885 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
index dcea342..3acbd9f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/full_lambda.hpp
@@ -552,7 +552,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 3, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp
index e05fa3c..a7eb4a4 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
index f89a587..35bd413 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp
index 41f387f..a97f313 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -134,8 +134,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp
index 7139b79..a4b8eeb 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp
index f7c3491..5cd141b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp
index ae6b592..454fda8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp
index 89c6172..3e89691 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
index b28e100..6de1e16 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp
index e929602..cae8edf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp
index de03e3e..5d8b2cd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp
index c8df29c..2964fb8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp
index a726ff1..57a5fe0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp
index d929799..32ba0ac 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/template_arity.hpp
@@ -20,7 +20,7 @@
     >
 struct max_arity
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_STATIC_CONSTANT(int, value =
           ( C6 > 0 ? C6 : ( C5 > 0 ? C5 : ( C4 > 0 ? C4 : ( C3 > 0 ? C3 : ( C2 > 0 ? C2 : ( C1 > 0 ? C1 : -1 ) ) ) ) ) )
         );
 };
@@ -80,7 +80,7 @@
 template< typename F, int N >
 struct template_arity_impl
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_STATIC_CONSTANT(int, value =
           sizeof(::ndnboost::mpl::aux::arity_helper(type_wrapper<F>(), arity_tag<N>())) - 1
         );
 };
@@ -88,7 +88,7 @@
 template< typename F >
 struct template_arity
 {
-    BOOST_STATIC_CONSTANT(int, value  = (
+    NDNBOOST_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/include/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp
index f4514e5..9a55fed 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
index 9c9204f..aec31af 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/gcc/unpack_args.hpp
@@ -88,7 +88,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp
index 2ae4e3b..d69b940 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/and.hpp
@@ -30,7 +30,7 @@
         >
     struct result_
         : and_impl<
-              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
             >::template result_< T2,T3,T4,true_ >
     {
     };
@@ -46,25 +46,25 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         >::template result_< T2,T3,T4,T5 >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp
index 75fb383..ed5c472 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/apply.hpp
@@ -22,7 +22,7 @@
        
         >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -47,7 +47,7 @@
         , T1
         >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -72,7 +72,7 @@
         , T1, T2
         >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -97,7 +97,7 @@
         , T1, T2, T3
         >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -122,7 +122,7 @@
         , T1, T2, T3, T4
         >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -148,7 +148,7 @@
         , T1, T2, T3, T4, T5
         >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
index 9b68023..8494a26 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp
@@ -67,7 +67,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value  = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value  = false);
     };
 };
 
@@ -76,7 +76,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value =
+        NDNBOOST_STATIC_CONSTANT(bool, value =
               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
                 == sizeof(aux::yes_tag)
             );
@@ -123,8 +123,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -160,8 +160,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -198,8 +198,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -237,8 +237,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -278,8 +278,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -322,7 +322,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp
index 1c3b8d8..92a2b27 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bind.hpp
@@ -93,7 +93,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value  = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value  = false);
     };
 };
 
@@ -102,7 +102,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value =
+        NDNBOOST_STATIC_CONSTANT(bool, value =
               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
                 == sizeof(aux::yes_tag)
             );
@@ -152,8 +152,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -196,8 +196,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -245,8 +245,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -299,8 +299,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -359,8 +359,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -426,7 +426,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp
index b4517bc..f3eb147 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitand.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct bitand_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitand_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitand_
@@ -87,7 +87,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -109,11 +109,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -123,7 +123,7 @@
 template< typename T, T n1, T n2 >
 struct bitand_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp
index a496f89..63f5a00 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitor.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct bitor_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitor_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitor_
@@ -87,7 +87,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -109,11 +109,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -123,7 +123,7 @@
 template< typename T, T n1, T n2 >
 struct bitor_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
index b4bf4a0..08cf7c5 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/bitxor.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct bitxor_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitxor_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitxor_
@@ -87,7 +87,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -109,11 +109,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -123,7 +123,7 @@
 template< typename T, T n1, T n2 >
 struct bitxor_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp
index 8a7e2c3..ed97d82 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/deque.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_deque_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_deque_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct deque_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp
index b5f7fdd..b6631ad 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/divides.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct divides_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct divides2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct divides
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -108,11 +108,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -122,7 +122,7 @@
 template< typename T, T n1, T n2 >
 struct divides_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
index 6a72eec..2fa2cae 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/equal_to.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct equal_to_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
index de658d8..7da971e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp
@@ -548,7 +548,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp
index 38ddec9..90834cf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct greater_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
index 578e3cb..b7ca0c0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct greater_equal_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp
index 12328f7..7cb0a48 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/inherit.hpp
@@ -55,8 +55,8 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : aux::inherit2_impl<
@@ -65,10 +65,10 @@
         >::template result_< inherit2< T1,T2 >,T1, T2 >
 {
     typedef typename inherit2::type_ type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -81,14 +81,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -101,14 +101,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -122,14 +122,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -159,8 +159,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp
index d9f73a4..05b6d10 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/less.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct less_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value >
+             NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
index f203fbe..5ac2a3a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/less_equal.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct less_equal_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp
index 63062d2..2b19e60 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/list.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_list_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_list_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct list_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp
index 010f92e..0ed7f7e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/list_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_list_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_list_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct list_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp
index 3066603..75174c8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/map.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_map_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_map_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct map_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp
index dc70c44..9e3a907 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/minus.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct minus_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct minus2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct minus
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -108,11 +108,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -122,7 +122,7 @@
 template< typename T, T n1, T n2 >
 struct minus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp
index be8eef6..0185ebf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/modulus.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct modulus_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -89,7 +89,7 @@
 template< typename T, T n1, T n2 >
 struct modulus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
index 6a8bb75..77b0a13 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct not_equal_to_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp
index b0b3a7f..7123b8d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/or.hpp
@@ -30,7 +30,7 @@
         >
     struct result_
         : or_impl<
-              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
             >::template result_< T2,T3,T4,false_ >
     {
     };
@@ -46,25 +46,25 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         >::template result_< T2,T3,T4,T5 >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp
index fc8884e..697794a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/plus.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct plus_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct plus2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct plus
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -108,11 +108,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -122,7 +122,7 @@
 template< typename T, T n1, T n2 >
 struct plus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp
index e964879..484d53e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/set.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_set_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_set_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct set_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp
index a9a9b18..3b5f2ab 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/set_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_set_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_set_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct set_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
index cc05688..e81999a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_left.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct shift_left_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -76,11 +76,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -90,7 +90,7 @@
 template< typename T, typename Shift, T n, Shift s >
 struct shift_left_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n << s));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n << s));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
index d663d51..3db60a6 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/shift_right.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct shift_right_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -76,11 +76,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -90,7 +90,7 @@
 template< typename T, typename Shift, T n, Shift s >
 struct shift_right_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n >> s));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n >> s));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp
index ade26a2..dbecb60 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/times.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct times_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct times2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct times
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -108,11 +108,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -122,7 +122,7 @@
 template< typename T, T n1, T n2 >
 struct times_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
index bee7472..dcdb46e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp
@@ -13,7 +13,7 @@
 
 namespace aux {
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
 {
     template< typename F, typename Args > struct apply;
 };
@@ -103,7 +103,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp
index bdee923..acb6704 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_vector_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_vector_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct vector_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
index 7e645b9..c654c6f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc60/vector_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_vector_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_vector_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct vector_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp
index 618f074..5da6f33 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/and.hpp
@@ -30,7 +30,7 @@
         >
     struct result_
         : and_impl<
-              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
             >::template result_< T2,T3,T4,true_ >
     {
     };
@@ -44,25 +44,25 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         >::template result_< T2,T3,T4,T5 >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp
index 99f1c71..b81fddc 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -45,7 +45,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -69,7 +69,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -93,7 +93,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -117,7 +117,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -142,7 +142,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
index 9b68023..8494a26 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp
@@ -67,7 +67,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value  = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value  = false);
     };
 };
 
@@ -76,7 +76,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value =
+        NDNBOOST_STATIC_CONSTANT(bool, value =
               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
                 == sizeof(aux::yes_tag)
             );
@@ -123,8 +123,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -160,8 +160,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -198,8 +198,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -237,8 +237,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -278,8 +278,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -322,7 +322,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp
index 1c3b8d8..92a2b27 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bind.hpp
@@ -93,7 +93,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value  = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value  = false);
     };
 };
 
@@ -102,7 +102,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value =
+        NDNBOOST_STATIC_CONSTANT(bool, value =
               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
                 == sizeof(aux::yes_tag)
             );
@@ -152,8 +152,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F, typename T1
@@ -196,8 +196,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1, typename T2
@@ -245,8 +245,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -299,8 +299,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -359,8 +359,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -426,7 +426,7 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp
index 2a14c25..5cdfac9 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitand.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct bitand_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitand_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitand_
@@ -89,7 +89,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -111,11 +111,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -125,7 +125,7 @@
 template< typename T, T n1, T n2 >
 struct bitand_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp
index 22500fd..b5eb6bd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitor.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct bitor_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitor_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitor_
@@ -89,7 +89,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -111,11 +111,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -125,7 +125,7 @@
 template< typename T, T n1, T n2 >
 struct bitor_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
index 49eb45c..0e089a4 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/bitxor.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct bitxor_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitxor_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitxor_
@@ -89,7 +89,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -111,11 +111,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -125,7 +125,7 @@
 template< typename T, T n1, T n2 >
 struct bitxor_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp
index 8a7e2c3..ed97d82 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/deque.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_deque_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_deque_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct deque_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp
index 118cda5..64f49c6 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/divides.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct divides_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct divides2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct divides
@@ -88,7 +88,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -110,11 +110,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -124,7 +124,7 @@
 template< typename T, T n1, T n2 >
 struct divides_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
index 06c62ea..339f47d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/equal_to.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct equal_to_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
index de658d8..7da971e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp
@@ -548,7 +548,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp
index 6145d2b..95cc307 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct greater_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
index efaa97b..4e70274 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct greater_equal_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp
index 12328f7..7cb0a48 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/inherit.hpp
@@ -55,8 +55,8 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : aux::inherit2_impl<
@@ -65,10 +65,10 @@
         >::template result_< inherit2< T1,T2 >,T1, T2 >
 {
     typedef typename inherit2::type_ type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -81,14 +81,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -101,14 +101,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -122,14 +122,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -159,8 +159,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp
index b79a010..1a58953 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/less.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct less_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value >
+             NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
index f2e2b32..4890441 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/less_equal.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct less_equal_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp
index 63062d2..2b19e60 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/list.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_list_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_list_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct list_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp
index 010f92e..0ed7f7e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/list_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_list_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_list_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct list_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp
index 3066603..75174c8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/map.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_map_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_map_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct map_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp
index 910202d..b0c27aa 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/minus.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct minus_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct minus2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct minus
@@ -88,7 +88,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -110,11 +110,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -124,7 +124,7 @@
 template< typename T, T n1, T n2 >
 struct minus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp
index bb8abf5..e92a207 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/modulus.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct modulus_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -89,7 +89,7 @@
 template< typename T, T n1, T n2 >
 struct modulus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
index ac8d660..f861809 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct not_equal_to_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -75,11 +75,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -91,9 +91,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp
index 5beec9e..e644658 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/or.hpp
@@ -30,7 +30,7 @@
         >
     struct result_
         : or_impl<
-              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
             >::template result_< T2,T3,T4,false_ >
     {
     };
@@ -44,25 +44,25 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         >::template result_< T2,T3,T4,T5 >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp
index 32c3317..bf8ccb7 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/plus.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct plus_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct plus2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct plus
@@ -88,7 +88,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -110,11 +110,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -124,7 +124,7 @@
 template< typename T, T n1, T n2 >
 struct plus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp
index e964879..484d53e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/set.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_set_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_set_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct set_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp
index a9a9b18..3b5f2ab 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/set_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_set_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_set_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct set_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
index 8e7b606..0632ed1 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_left.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct shift_left_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -76,11 +76,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -90,7 +90,7 @@
 template< typename T, typename Shift, T n, Shift s >
 struct shift_left_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n << s));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n << s));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
index 991abc9..6e43803 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/shift_right.hpp
@@ -16,8 +16,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct shift_right_impl
     : if_c<
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
     : aux::msvc_eti_base< typename apply_wrap2<
@@ -76,11 +76,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -90,7 +90,7 @@
 template< typename T, typename Shift, T n, Shift s >
 struct shift_right_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n >> s));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n >> s));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp
index 0be0e9c..5f2f267 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/times.hpp
@@ -15,8 +15,8 @@
       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
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag1_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag1)::value
+    , NDNBOOST_MPL_AUX_NTTP_DECL(int, tag2_)  = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(Tag2)::value
     >
 struct times_impl
     : if_c<
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct times2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct times
@@ -88,7 +88,7 @@
     >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -110,11 +110,11 @@
         >::type >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -124,7 +124,7 @@
 template< typename T, T n1, T n2 >
 struct times_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
index bee7472..dcdb46e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp
@@ -13,7 +13,7 @@
 
 namespace aux {
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
 {
     template< typename F, typename Args > struct apply;
 };
@@ -103,7 +103,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp
index bdee923..acb6704 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_vector_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_vector_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct vector_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
index 7e645b9..c654c6f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/msvc70/vector_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_vector_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_vector_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct vector_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp
index 24b88d8..5c1b95a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp
index e4b1cd2..80f72b0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
index a2a565e..8e0bf73 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp
@@ -82,8 +82,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -133,8 +133,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -185,8 +185,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -238,8 +238,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -351,8 +351,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp
index f2cde5a..45cfc67 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bind.hpp
@@ -104,8 +104,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -162,8 +162,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -225,8 +225,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -367,8 +367,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -448,8 +448,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp
index 90e8593..cd8cc5c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp
index c71a8f4..e98247b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
index b7f0ce7..1f276b7 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -136,8 +136,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp
index 0f5415c..1bc4433 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
index 0d02da4..6455885 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
index de658d8..7da971e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp
@@ -548,7 +548,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp
index e05fa3c..a7eb4a4 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
index f89a587..35bd413 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp
index 41f387f..a97f313 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -134,8 +134,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp
index 7139b79..a4b8eeb 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
index f7c3491..5cd141b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp
index ae6b592..454fda8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp
index 89c6172..3e89691 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
index b28e100..6de1e16 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp
index e929602..cae8edf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp
index de03e3e..5d8b2cd 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
index c8df29c..2964fb8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
index a726ff1..57a5fe0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp
index f4514e5..9a55fed 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -135,8 +135,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
index 9c9204f..aec31af 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp
@@ -88,7 +88,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp
index 2ae4e3b..d69b940 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/and.hpp
@@ -30,7 +30,7 @@
         >
     struct result_
         : and_impl<
-              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
             >::template result_< T2,T3,T4,true_ >
     {
     };
@@ -46,25 +46,25 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         >::template result_< T2,T3,T4,T5 >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp
index 1386c6e..3b60e0b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -57,7 +57,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -93,7 +93,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -129,7 +129,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -165,7 +165,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -202,7 +202,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
index d5be947..6f5288c 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp
@@ -12,7 +12,7 @@
 namespace ndnboost { namespace mpl {
 
 namespace aux {
-template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
+template< NDNBOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
 }
 
 template<
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
index a0fd1e8..1c962e7 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp
@@ -73,7 +73,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value  = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value  = false);
     };
 };
 
@@ -82,7 +82,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value =
+        NDNBOOST_STATIC_CONSTANT(bool, value =
               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
                 == sizeof(aux::yes_tag)
             );
@@ -129,8 +129,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 namespace aux {
 
@@ -183,8 +183,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 namespace aux {
 
@@ -238,8 +238,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 namespace aux {
 
@@ -294,8 +294,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 namespace aux {
 
@@ -352,8 +352,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 namespace aux {
 
@@ -413,8 +413,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 namespace aux {
 
@@ -438,13 +438,13 @@
 template< typename T >
 struct is_bind_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_bind_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -452,7 +452,7 @@
     >
 struct bind_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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
@@ -473,12 +473,12 @@
 {
 };
 
-BOOST_MPL_AUX_ARITY_SPEC(
+NDNBOOST_MPL_AUX_ARITY_SPEC(
       6
     , bind
     )
 
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
       6
     , bind
     )
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp
index 904c64f..295251e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bind.hpp
@@ -99,7 +99,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value  = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value  = false);
     };
 };
 
@@ -108,7 +108,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value =
+        NDNBOOST_STATIC_CONSTANT(bool, value =
               sizeof(aux::is_bind_helper(static_cast<T*>(0)))
                 == sizeof(aux::yes_tag)
             );
@@ -158,8 +158,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 namespace aux {
 
@@ -219,8 +219,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 namespace aux {
 
@@ -285,8 +285,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 namespace aux {
 
@@ -356,8 +356,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 namespace aux {
 
@@ -433,8 +433,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 namespace aux {
 
@@ -517,8 +517,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 namespace aux {
 
@@ -542,13 +542,13 @@
 template< typename T >
 struct is_bind_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_bind_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -556,7 +556,7 @@
     >
 struct bind_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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
@@ -577,12 +577,12 @@
 {
 };
 
-BOOST_MPL_AUX_ARITY_SPEC(
+NDNBOOST_MPL_AUX_ARITY_SPEC(
       6
     , bind
     )
 
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
       6
     , bind
     )
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
index 23dfcbc..23a2e01 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitand_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitand_
@@ -87,7 +87,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -104,11 +104,11 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -123,8 +123,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
index ff6221a..bec923d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitor_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitor_
@@ -87,7 +87,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -104,11 +104,11 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -123,8 +123,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
index 60d2a26..dd48718 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -64,14 +64,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct bitxor_2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitxor_
@@ -87,7 +87,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -104,11 +104,11 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -123,8 +123,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp
index 8a7e2c3..ed97d82 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/deque.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_deque_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_deque_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct deque_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp
index 2040b98..4a98ba0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct divides2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct divides
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -103,11 +103,11 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, divides2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -122,8 +122,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
index 5b456bc..11e6d11 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
index de658d8..7da971e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp
@@ -548,7 +548,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp
index 936836f..e6eb61e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
index c6654b0..5ab4441 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
index 12328f7..7cb0a48 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/inherit.hpp
@@ -55,8 +55,8 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : aux::inherit2_impl<
@@ -65,10 +65,10 @@
         >::template result_< inherit2< T1,T2 >,T1, T2 >
 {
     typedef typename inherit2::type_ type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -81,14 +81,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -101,14 +101,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -122,14 +122,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -159,8 +159,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp
index 4460cca..ebe8607 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
index 8da1edf..37b19aa 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp
index 63062d2..2b19e60 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_list_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_list_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct list_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
index 010f92e..0ed7f7e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/list_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_list_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_list_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct list_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp
index 3066603..75174c8 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/map.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_map_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_map_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct map_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp
index a615210..914d669 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct minus2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct minus
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -103,11 +103,11 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, minus2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -122,8 +122,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
index a3c75d4..7b2e7ab 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -90,8 +90,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
index b8c4a47..df9109f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -86,7 +86,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp
index b0b3a7f..7123b8d 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/or.hpp
@@ -30,7 +30,7 @@
         >
     struct result_
         : or_impl<
-              BOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
+              NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
             >::template result_< T2,T3,T4,false_ >
     {
     };
@@ -46,25 +46,25 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         >::template result_< T2,T3,T4,T5 >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp
index 2967636..6372ead 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct plus2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct plus
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -103,11 +103,11 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, plus2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -122,8 +122,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp
index e964879..484d53e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_set_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_set_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct set_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
index a9a9b18..3b5f2ab 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/set_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_set_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_set_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct set_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
index 8d6c545..4b56759 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
index a85eb0e..a8dc0db 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -88,8 +88,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp
index ecdafc9..7c99e67 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -63,14 +63,14 @@
 /// forward declaration
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct times2;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct times
@@ -86,7 +86,7 @@
         >::type
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -103,11 +103,11 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, times2, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -122,8 +122,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
index bee7472..dcdb46e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp
@@ -13,7 +13,7 @@
 
 namespace aux {
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl
 {
     template< typename F, typename Args > struct apply;
 };
@@ -103,7 +103,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp
index bdee923..acb6704 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector.hpp
@@ -484,13 +484,13 @@
 template< typename T >
 struct is_vector_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_vector_arg<na>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -501,7 +501,7 @@
     >
 struct vector_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
index 7e645b9..c654c6f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp
@@ -463,13 +463,13 @@
 template< long C >
 struct is_vector_c_arg
 {
-    BOOST_STATIC_CONSTANT(bool, value  = true);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = true);
 };
 
 template<>
 struct is_vector_c_arg<LONG_MAX>
 {
-    BOOST_STATIC_CONSTANT(bool, value  = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value  = false);
 };
 
 template<
@@ -479,7 +479,7 @@
     >
 struct vector_c_count_args
 {
-    BOOST_STATIC_CONSTANT(int, value =
+    NDNBOOST_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 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp
index 24b88d8..5c1b95a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , and_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp
index e4b1cd2..80f72b0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/apply.hpp
@@ -21,7 +21,7 @@
        
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           1
         , apply0
         , (F )
@@ -46,7 +46,7 @@
         , T1
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           2
         , apply1
         , (F, T1)
@@ -71,7 +71,7 @@
         , T1, T2
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , apply2
         , (F, T1, T2)
@@ -96,7 +96,7 @@
         , T1, T2, T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , apply3
         , (F, T1, T2, T3)
@@ -121,7 +121,7 @@
         , T1, T2, T3, T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , apply4
         , (F, T1, T2, T3, T4)
@@ -147,7 +147,7 @@
         , T1, T2, T3, T4, T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , apply5
         , (F, T1, T2, T3, T4, T5)
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
index 5c7f505..80f4c4e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp
@@ -82,8 +82,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -133,8 +133,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -185,8 +185,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -238,8 +238,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -351,8 +351,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp
index e686d8e..d234468 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bind.hpp
@@ -104,8 +104,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -162,8 +162,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -225,8 +225,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -367,8 +367,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -448,8 +448,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
index 650c7da..d0542b4 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitand_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -131,7 +131,7 @@
 template< typename T, T n1, T n2 >
 struct bitand_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 & n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
index 6a1d24b..64884de 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -131,7 +131,7 @@
 template< typename T, T n1, T n2 >
 struct bitor_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 | n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
index bbda869..a392e2a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,14 +62,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , bitxor_
         , ( N1, N2, N3, N4, N5 )
@@ -83,7 +83,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -97,7 +97,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -113,7 +113,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -121,7 +121,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -131,7 +131,7 @@
 template< typename T, T n1, T n2 >
 struct bitxor_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 ^ n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp
index eb22a09..df1e04f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , divides
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -130,7 +130,7 @@
 template< typename T, T n1, T n2 >
 struct divides_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 / n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
index b900ba1..22f1e2a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -71,11 +71,11 @@
         , typename equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -87,9 +87,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ==
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
index de658d8..7da971e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp
@@ -548,7 +548,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp
index dce1ae1..a6a1b30 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -71,11 +71,11 @@
         , typename greater_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -87,9 +87,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
index 9bdfda5..93ea6ca 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -71,11 +71,11 @@
         , typename greater_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, greater_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -87,9 +87,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
index 41f387f..a97f313 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/inherit.hpp
@@ -12,38 +12,38 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
 {
     typedef inherit2 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -56,14 +56,14 @@
         , T3
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           3
         , inherit3
         , ( T1, T2, T3)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -76,14 +76,14 @@
         , T4
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           4
         , inherit4
         , ( T1, T2, T3, T4)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -97,14 +97,14 @@
         , T5
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , inherit5
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -134,8 +134,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
index 5bfc661..45f5f6b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -212,10 +212,10 @@
 
     typedef typename l_::type type;
     typedef typename l_::is_le is_le;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp
index b7fae7c..aa6f088 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -71,11 +71,11 @@
         , typename less_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -87,9 +87,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value >
+             NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
index 3a077fb..ca06f97 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -71,11 +71,11 @@
         , typename less_equal_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -87,9 +87,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp
index fa3eda9..75ccc8b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , minus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -130,7 +130,7 @@
 template< typename T, T n1, T n2 >
 struct minus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 - n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
index bd7fe22..1b66ab6 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -71,11 +71,11 @@
         , typename modulus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, modulus, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -85,7 +85,7 @@
 template< typename T, T n1, T n2 >
 struct modulus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 % n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
index 39a19aa..0401b41 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -71,11 +71,11 @@
         , typename not_equal_to_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, not_equal_to, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -87,9 +87,9 @@
     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 )
+        NDNBOOST_STATIC_CONSTANT(bool, value =
+             ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value !=
+             NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value )
             );
         typedef bool_<value> type;
     };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp
index e929602..cae8edf 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,26 +41,26 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , or_
         , ( T1, T2, T3, T4, T5)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp
index b4d88db..bb61bb1 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , plus
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -130,7 +130,7 @@
 template< typename T, T n1, T n2 >
 struct plus_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 + n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
index 27093f4..1bc9e6f 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -72,11 +72,11 @@
         , typename shift_left_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_left, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -86,7 +86,7 @@
 template< typename T, typename Shift, T n, Shift s >
 struct shift_left_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n << s));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n << s));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
index d4d4100..0fb916e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -72,11 +72,11 @@
         , typename shift_right_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, shift_right, (N1, N2))
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -86,7 +86,7 @@
 template< typename T, typename Shift, T n, Shift s >
 struct shift_right_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n >> s));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n >> s));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp
index e2cd1ab..6a54076 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,14 +61,14 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_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(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           5
         , times
         , ( N1, N2, N3, N4, N5 )
@@ -82,7 +82,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -96,7 +96,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -112,7 +112,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -120,7 +120,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -130,7 +130,7 @@
 template< typename T, T n1, T n2 >
 struct times_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
+    NDNBOOST_STATIC_CONSTANT(T, value  = (n1 * n2));
     typedef integral_c< T,value > type;
 };
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
index 9c9204f..aec31af 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp
@@ -88,7 +88,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/and.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/and.hpp
index 80a91ef..2809274 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/and.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/and.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , true_
         >
@@ -41,21 +41,21 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , and_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp
index 9a157c2..154476a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/arg.hpp
@@ -10,12 +10,12 @@
 // Preprocessed version of "ndnboost/mpl/arg.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_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)
+    NDNBOOST_STATIC_CONSTANT(int, value  = -1);
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -24,16 +24,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<1>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 1);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 1);
     typedef arg<2> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -42,16 +42,16 @@
     struct apply
     {
         typedef U1 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<2>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 2);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 2);
     typedef arg<3> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -60,16 +60,16 @@
     struct apply
     {
         typedef U2 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<3>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 3);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 3);
     typedef arg<4> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -78,16 +78,16 @@
     struct apply
     {
         typedef U3 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<4>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 4);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 4);
     typedef arg<5> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -96,16 +96,16 @@
     struct apply
     {
         typedef U4 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
 template<> struct arg<5>
 {
-    BOOST_STATIC_CONSTANT(int, value  = 5);
+    NDNBOOST_STATIC_CONSTANT(int, value  = 5);
     typedef arg<6> next;
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
-    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
+    NDNBOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 
     template<
           typename U1 = na, typename U2 = na, typename U3 = na
@@ -114,10 +114,10 @@
     struct apply
     {
         typedef U5 type;
-        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
+        NDNBOOST_MPL_AUX_ASSERT_NOT_NA(type);
     };
 };
 
-BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
+NDNBOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp
index a2a565e..8e0bf73 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/basic_bind.hpp
@@ -82,8 +82,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -133,8 +133,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -185,8 +185,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -238,8 +238,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -351,8 +351,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp
index f2cde5a..45cfc67 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/bind.hpp
@@ -104,8 +104,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 
 template<
       typename F
@@ -162,8 +162,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
 
 template<
       typename F, typename T1
@@ -225,8 +225,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
 
 template<
       typename F, typename T1, typename T2
@@ -293,8 +293,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
 
 template<
       typename F, typename T1, typename T2, typename T3
@@ -367,8 +367,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
 
 template<
       typename F, typename T1, typename T2, typename T3, typename T4
@@ -448,8 +448,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
 
 /// primary template (not a specialization!)
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp
index f0575f5..4d50bbe 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/bitand.hpp
@@ -18,8 +18,8 @@
     >
 struct bitand_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitand_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitand_
@@ -78,7 +78,7 @@
 
     : bitand_< bitand_< bitand_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, N4, na )
@@ -92,7 +92,7 @@
 
     : bitand_< bitand_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, N3, na, na )
@@ -108,7 +108,7 @@
         , typename bitand_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitand_
         , ( N1, N2, na, na, na )
@@ -116,7 +116,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitand_)
 
 }}
 
@@ -131,8 +131,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  & BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  & NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp
index 6d4811b..ad02a39 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/bitor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitor_
@@ -78,7 +78,7 @@
 
     : bitor_< bitor_< bitor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, N4, na )
@@ -92,7 +92,7 @@
 
     : bitor_< bitor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, N3, na, na )
@@ -108,7 +108,7 @@
         , typename bitor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitor_
         , ( N1, N2, na, na, na )
@@ -116,7 +116,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitor_)
 
 }}
 
@@ -131,8 +131,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  | BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  | NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp
index a4035d0..5a2e8a6 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/bitxor.hpp
@@ -18,8 +18,8 @@
     >
 struct bitxor_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< bitxor_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct bitxor_
@@ -78,7 +78,7 @@
 
     : bitxor_< bitxor_< bitxor_< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, N4, na )
@@ -92,7 +92,7 @@
 
     : bitxor_< bitxor_< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, N3, na, na )
@@ -108,7 +108,7 @@
         , typename bitxor_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , bitxor_
         , ( N1, N2, na, na, na )
@@ -116,7 +116,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, bitxor_)
 
 }}
 
@@ -131,8 +131,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  ^ BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  ^ NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp
index 4d3d24e..bcf6e20 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/divides.hpp
@@ -17,8 +17,8 @@
     >
 struct divides_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< divides_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct divides
@@ -77,7 +77,7 @@
 
     : divides< divides< divides< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, N4, na )
@@ -91,7 +91,7 @@
 
     : divides< divides< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, N3, na, na )
@@ -107,7 +107,7 @@
         , typename divides_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , divides
         , ( N1, N2, na, na, na )
@@ -115,7 +115,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, divides)
 
 }}
 
@@ -130,8 +130,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  / BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  / NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp
index 296c69c..e070a08 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct equal_to
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, equal_to)
 
 }}
 
@@ -84,7 +84,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value  == BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value  == NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp
index de658d8..7da971e 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/full_lambda.hpp
@@ -548,7 +548,7 @@
     typedef typename le_result_::type type;
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC(2, lambda)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp
index f2835d7..54a35d5 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/greater.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater)
 
 }}
 
@@ -84,7 +84,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value > BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp
index c67d5d6..d3b4035 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/greater_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct greater_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< greater_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct greater_equal
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, greater_equal)
 
 }}
 
@@ -84,7 +84,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value >= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value >= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp
index 8c7914d..2773012 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/inherit.hpp
@@ -12,8 +12,8 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct inherit2
     : T1, T2
@@ -25,24 +25,24 @@
 struct inherit2< T1,empty_base >
 {
     typedef T1 type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))
+    NDNBOOST_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))
+    NDNBOOST_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))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, inherit2)
+NDNBOOST_MPL_AUX_NA_SPEC(2, inherit2)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na
@@ -57,7 +57,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, inherit3)
+NDNBOOST_MPL_AUX_NA_SPEC(3, inherit3)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -72,7 +72,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC(4, inherit4)
+NDNBOOST_MPL_AUX_NA_SPEC(4, inherit4)
 
 template<
       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
@@ -88,7 +88,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC(5, inherit5)
+NDNBOOST_MPL_AUX_NA_SPEC(5, inherit5)
 
 /// primary template
 
@@ -118,8 +118,8 @@
     };
 };
 
-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)
+NDNBOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
index b0a2864..a74bd83 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
@@ -61,7 +61,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 
     typedef typename impl_::state state;
@@ -78,7 +78,7 @@
 {
     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
+          NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
         >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 
     typedef typename impl_::state state;
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
index 757a165..554028b 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp
@@ -44,7 +44,7 @@
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
             > is_le;
 
         typedef bind1<
@@ -74,7 +74,7 @@
         
 
         typedef aux::lambda_or<
-              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
             > is_le;
 
         typedef bind2<
@@ -106,7 +106,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
             > is_le;
 
         typedef bind3<
@@ -140,7 +140,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
             > is_le;
 
         typedef bind4<
@@ -177,7 +177,7 @@
         
 
         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
+              NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
             > is_le;
 
         typedef bind5<
@@ -214,7 +214,7 @@
     typedef typename l_::is_le is_le;
 };
 
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+NDNBOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
 template<
       typename T
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/less.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/less.hpp
index debece1..f2edd0a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/less.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/less.hpp
@@ -17,8 +17,8 @@
     >
 struct less_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less)
 
 }}
 
@@ -84,7 +84,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N2)::value > BOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value > NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp
index c18dd6a..838af91 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/less_equal.hpp
@@ -17,8 +17,8 @@
     >
 struct less_equal_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct less_equal
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
 
 }}
 
@@ -84,7 +84,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value <= NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp
index c491d53..9e82fb0 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/minus.hpp
@@ -17,8 +17,8 @@
     >
 struct minus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< minus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct minus
@@ -77,7 +77,7 @@
 
     : minus< minus< minus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, N4, na )
@@ -91,7 +91,7 @@
 
     : minus< minus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, N3, na, na )
@@ -107,7 +107,7 @@
         , typename minus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , minus
         , ( N1, N2, na, na, na )
@@ -115,7 +115,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, minus)
 
 }}
 
@@ -130,8 +130,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  - BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  - NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp
index 7423c57..15143d6 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/modulus.hpp
@@ -17,8 +17,8 @@
     >
 struct modulus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< modulus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct modulus
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, modulus)
 
 }}
 
@@ -88,8 +88,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  % BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  % NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
index 1ce634d..ff115af 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/not_equal_to.hpp
@@ -17,8 +17,8 @@
     >
 struct not_equal_to_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< not_equal_to_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct not_equal_to
 
@@ -73,7 +73,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, not_equal_to)
 
 }}
 
@@ -84,7 +84,7 @@
 {
     template< typename N1, typename N2 > struct apply
 
-        : bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value != BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
+        : bool_< ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value != NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
     {
     };
 };
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/or.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/or.hpp
index 6c5765d..41ce3d3 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/or.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/or.hpp
@@ -22,7 +22,7 @@
 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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4
         , false_
         >
@@ -41,21 +41,21 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_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
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T1)::value
         , T2, T3, T4, T5
         >
 
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(
+NDNBOOST_MPL_AUX_NA_SPEC2(
       2
     , 5
     , or_
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp
index ecd4514..3a28c09 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/placeholders.hpp
@@ -10,96 +10,96 @@
 // Preprocessed version of "ndnboost/mpl/placeholders.hpp" header
 // -- DO NOT modify by hand!
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg< -1 > _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<1> _1;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_1)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_1;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<2> _2;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_2)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_2;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<3> _3;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_3)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_3;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<4> _4;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_4)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_4;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<5> _5;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_5)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_5;
 }
 
 }}
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<6> _6;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_6)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_6;
 }
 
 }}
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp
index 01a191d..4e7fe75 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/plus.hpp
@@ -17,8 +17,8 @@
     >
 struct plus_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct plus
@@ -77,7 +77,7 @@
 
     : plus< plus< plus< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, N4, na )
@@ -91,7 +91,7 @@
 
     : plus< plus< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, N3, na, na )
@@ -107,7 +107,7 @@
         , typename plus_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , plus
         , ( N1, N2, na, na, na )
@@ -115,7 +115,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
 
 }}
 
@@ -130,8 +130,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  + BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  + NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp
index a37d3b2..7c4d389 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/shift_left.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_left_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_left_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_left
 
@@ -74,7 +74,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_left)
 
 }}
 
@@ -86,8 +86,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  << BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  << NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp
index faa8302..9b608c1 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/shift_right.hpp
@@ -18,8 +18,8 @@
     >
 struct shift_right_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< shift_right_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -34,7 +34,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -43,7 +43,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -52,7 +52,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -62,8 +62,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     >
 struct shift_right
 
@@ -74,7 +74,7 @@
 {
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 2, shift_right)
 
 }}
 
@@ -86,8 +86,8 @@
 
         : integral_c<
               typename N::value_type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N)::value
-                  >> BOOST_MPL_AUX_VALUE_WKND(S)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
+                  >> NDNBOOST_MPL_AUX_VALUE_WKND(S)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/times.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/times.hpp
index f0e16aa..6ee853a 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/times.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/times.hpp
@@ -17,8 +17,8 @@
     >
 struct times_impl
     : if_c<
-          ( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
-              > BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
+          ( NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
+              > NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
             )
 
         , aux::cast2nd_impl< times_impl< Tag1,Tag1 >,Tag1, Tag2 >
@@ -33,7 +33,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -42,7 +42,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -51,7 +51,7 @@
     template< typename U1, typename U2 > struct apply
     {
         typedef apply type;
-        BOOST_STATIC_CONSTANT(int, value  = 0);
+        NDNBOOST_STATIC_CONSTANT(int, value  = 0);
     };
 };
 
@@ -61,8 +61,8 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N1)
-    , typename BOOST_MPL_AUX_NA_PARAM(N2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(N2)
     , typename N3 = na, typename N4 = na, typename N5 = na
     >
 struct times
@@ -77,7 +77,7 @@
 
     : times< times< times< N1,N2 >, N3>, N4>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, N4, na )
@@ -91,7 +91,7 @@
 
     : times< times< N1,N2 >, N3>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, N3, na, na )
@@ -107,7 +107,7 @@
         , typename times_tag<N2>::type
         >::template apply< N1,N2 >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
           5
         , times
         , ( N1, N2, na, na, na )
@@ -115,7 +115,7 @@
 
 };
 
-BOOST_MPL_AUX_NA_SPEC2(2, 5, times)
+NDNBOOST_MPL_AUX_NA_SPEC2(2, 5, times)
 
 }}
 
@@ -130,8 +130,8 @@
                   typename N1::value_type
                 , typename N2::value_type
                 >::type
-            , ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
-                  * BOOST_MPL_AUX_VALUE_WKND(N2)::value
+            , ( NDNBOOST_MPL_AUX_VALUE_WKND(N1)::value
+                  * NDNBOOST_MPL_AUX_VALUE_WKND(N2)::value
                 )
             >
     {
diff --git a/include/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp b/include/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp
index 9c9204f..aec31af 100644
--- a/include/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessed/plain/unpack_args.hpp
@@ -88,7 +88,7 @@
     };
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
 
 }}
 
diff --git a/include/ndnboost/mpl/aux_/preprocessor/add.hpp b/include/ndnboost/mpl/aux_/preprocessor/add.hpp
index bd5abc6..340b703 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/add.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/add.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,50 +16,50 @@
 
 #include <ndnboost/mpl/aux_/config/preprocessor.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
 
 #   include <ndnboost/mpl/aux_/preprocessor/tuple.hpp>
 
-#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
+#if defined(NDNBOOST_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 NDNBOOST_MPL_PP_ADD(i,j) \
+    NDNBOOST_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) \
+#   define NDNBOOST_MPL_PP_ADD_DELAY(i,j) \
+    NDNBOOST_PP_CAT(NDNBOOST_MPL_PP_TUPLE_11_ELEM_##i,NDNBOOST_MPL_PP_ADD_##j) \
     /**/
 #else
-#   define BOOST_MPL_PP_ADD(i,j) \
-    BOOST_MPL_PP_ADD_DELAY(i,j) \
+#   define NDNBOOST_MPL_PP_ADD(i,j) \
+    NDNBOOST_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 \
+#   define NDNBOOST_MPL_PP_ADD_DELAY(i,j) \
+    NDNBOOST_MPL_PP_TUPLE_11_ELEM_##i NDNBOOST_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)
+#   define NDNBOOST_MPL_PP_ADD_0 (0,1,2,3,4,5,6,7,8,9,10)
+#   define NDNBOOST_MPL_PP_ADD_1 (1,2,3,4,5,6,7,8,9,10,0)
+#   define NDNBOOST_MPL_PP_ADD_2 (2,3,4,5,6,7,8,9,10,0,0)
+#   define NDNBOOST_MPL_PP_ADD_3 (3,4,5,6,7,8,9,10,0,0,0)
+#   define NDNBOOST_MPL_PP_ADD_4 (4,5,6,7,8,9,10,0,0,0,0)
+#   define NDNBOOST_MPL_PP_ADD_5 (5,6,7,8,9,10,0,0,0,0,0)
+#   define NDNBOOST_MPL_PP_ADD_6 (6,7,8,9,10,0,0,0,0,0,0)
+#   define NDNBOOST_MPL_PP_ADD_7 (7,8,9,10,0,0,0,0,0,0,0)
+#   define NDNBOOST_MPL_PP_ADD_8 (8,9,10,0,0,0,0,0,0,0,0)
+#   define NDNBOOST_MPL_PP_ADD_9 (9,10,0,0,0,0,0,0,0,0,0)
+#   define NDNBOOST_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) \
+#   define NDNBOOST_MPL_PP_ADD(i,j) \
+    NDNBOOST_PP_ADD(i,j) \
     /**/
     
 #endif 
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_ADD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/def_params_tail.hpp b/include/ndnboost/mpl/aux_/preprocessor/def_params_tail.hpp
index dcb31f0..f6536d0 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/def_params_tail.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/def_params_tail.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,43 +23,43 @@
 #include <ndnboost/preprocessor/identity.hpp>
 #include <ndnboost/preprocessor/empty.hpp>
 
-// BOOST_MPL_PP_DEF_PARAMS_TAIL(1,T,value): , T1 = value, .., Tn = value
-// BOOST_MPL_PP_DEF_PARAMS_TAIL(2,T,value): , T2 = value, .., Tn = value
-// BOOST_MPL_PP_DEF_PARAMS_TAIL(n,T,value): <nothing>
+// NDNBOOST_MPL_PP_DEF_PARAMS_TAIL(1,T,value): , T1 = value, .., Tn = value
+// NDNBOOST_MPL_PP_DEF_PARAMS_TAIL(2,T,value): , T2 = value, .., Tn = value
+// NDNBOOST_MPL_PP_DEF_PARAMS_TAIL(n,T,value): <nothing>
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_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_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
-    BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1( \
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1( \
           i \
-        , BOOST_MPL_PP_SUB(BOOST_MPL_LIMIT_METAFUNCTION_ARITY,i) \
+        , NDNBOOST_MPL_PP_SUB(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY,i) \
         , param \
         , value_func \
         ) \
     /**/
 
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1(i, n, param, value_func) \
-    BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i,n,param,value_func) \
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_1(i, n, param, value_func) \
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i,n,param,value_func) \
     /**/
 
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i, n, param, value_func) \
-    BOOST_PP_COMMA_IF(BOOST_PP_AND(i,n)) \
-    BOOST_MPL_PP_DEF_PARAMS_TAIL_##i(n,param,value_func) \
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_DELAY_2(i, n, param, value_func) \
+    NDNBOOST_PP_COMMA_IF(NDNBOOST_PP_AND(i,n)) \
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_##i(n,param,value_func) \
     /**/
 
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_0(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(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())
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_1(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_2(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_3(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_4(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_5(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_6(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_7(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6,p7)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_8(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p##9 v(),p1,p2,p3,p4,p5,p6,p7,p8)
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_9(i,p,v) BOOST_MPL_PP_FILTER_PARAMS_##i(p1,p2,p3,p4,p5,p6,p7,p8,p9)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_0(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(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())
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_1(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##2 v(),p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_2(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##3 v(),p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_3(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##4 v(),p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_4(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##5 v(),p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_5(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##6 v(),p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_6(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##7 v(),p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_7(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##8 v(),p##9 v(),p1,p2,p3,p4,p5,p6,p7)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_8(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##9 v(),p1,p2,p3,p4,p5,p6,p7,p8)
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_9(i,p,v) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p1,p2,p3,p4,p5,p6,p7,p8,p9)
 
 #else
 
@@ -70,36 +70,36 @@
 #   include <ndnboost/preprocessor/repeat.hpp>
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC(unused, i, op) \
-    , BOOST_PP_CAT( \
-          BOOST_PP_TUPLE_ELEM(3, 1, op) \
-        , BOOST_PP_ADD_D(1, i, BOOST_PP_INC(BOOST_PP_TUPLE_ELEM(3, 0, op))) \
-        ) BOOST_PP_TUPLE_ELEM(3, 2, op)() \
+#   define NDNBOOST_MPL_PP_AUX_TAIL_PARAM_FUNC(unused, i, op) \
+    , NDNBOOST_PP_CAT( \
+          NDNBOOST_PP_TUPLE_ELEM(3, 1, op) \
+        , NDNBOOST_PP_ADD_D(1, i, NDNBOOST_PP_INC(NDNBOOST_PP_TUPLE_ELEM(3, 0, op))) \
+        ) NDNBOOST_PP_TUPLE_ELEM(3, 2, op)() \
     /**/
 
-#   define BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
-    BOOST_PP_REPEAT( \
-          BOOST_PP_SUB_D(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, i) \
-        , BOOST_MPL_PP_AUX_TAIL_PARAM_FUNC \
+#   define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, value_func) \
+    NDNBOOST_PP_REPEAT( \
+          NDNBOOST_PP_SUB_D(1, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, i) \
+        , NDNBOOST_MPL_PP_AUX_TAIL_PARAM_FUNC \
         , (i, param, value_func) \
         ) \
     /**/
 
 
-#endif // BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
+#endif // NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES
 
-#define BOOST_MPL_PP_DEF_PARAMS_TAIL(i, param, value) \
-    BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
+#define NDNBOOST_MPL_PP_DEF_PARAMS_TAIL(i, param, value) \
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, NDNBOOST_PP_IDENTITY(=value)) \
     /**/
 
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
-#   define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
-    BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_IDENTITY(=value)) \
+#if !defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#   define NDNBOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, NDNBOOST_PP_IDENTITY(=value)) \
     /**/
 #else
-#   define BOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
-    BOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, BOOST_PP_EMPTY) \
+#   define NDNBOOST_MPL_PP_NESTED_DEF_PARAMS_TAIL(i, param, value) \
+    NDNBOOST_MPL_PP_DEF_PARAMS_TAIL_IMPL(i, param, NDNBOOST_PP_EMPTY) \
     /**/
 #endif
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_DEF_PARAMS_TAIL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/default_params.hpp b/include/ndnboost/mpl/aux_/preprocessor/default_params.hpp
index a82d692..a5233f4 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/default_params.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/default_params.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,29 +16,29 @@
 
 #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
+// NDNBOOST_MPL_PP_DEFAULT_PARAMS(0,T,int): <nothing>
+// NDNBOOST_MPL_PP_DEFAULT_PARAMS(1,T,int): T1 = int
+// NDNBOOST_MPL_PP_DEFAULT_PARAMS(2,T,int): T1 = int, T2 = int
+// NDNBOOST_MPL_PP_DEFAULT_PARAMS(n,T,int): T1 = int, T2 = int, .., Tn = int
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_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 NDNBOOST_MPL_PP_DEFAULT_PARAMS(n,p,v) \
+    NDNBOOST_PP_CAT(NDNBOOST_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
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS_0(p,v)
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS_1(p,v) p##1=v
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS_2(p,v) p##1=v,p##2=v
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS_3(p,v) p##1=v,p##2=v,p##3=v
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS_4(p,v) p##1=v,p##2=v,p##3=v,p##4=v
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS_5(p,v) p##1=v,p##2=v,p##3=v,p##4=v,p##5=v
+#   define NDNBOOST_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 NDNBOOST_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 NDNBOOST_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 NDNBOOST_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
 
@@ -48,20 +48,20 @@
 #   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 NDNBOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC(unused, i, pv) \
+    NDNBOOST_PP_COMMA_IF(i) \
+    NDNBOOST_PP_CAT( NDNBOOST_PP_TUPLE_ELEM(2,0,pv), NDNBOOST_PP_INC(i) ) \
+        = NDNBOOST_PP_TUPLE_ELEM(2,1,pv) \
     /**/
 
-#   define BOOST_MPL_PP_DEFAULT_PARAMS(n, param, value) \
-    BOOST_PP_REPEAT( \
+#   define NDNBOOST_MPL_PP_DEFAULT_PARAMS(n, param, value) \
+    NDNBOOST_PP_REPEAT( \
           n \
-        , BOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC \
+        , NDNBOOST_MPL_PP_AUX_DEFAULT_PARAM_FUNC \
         , (param,value) \
         ) \
     /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_DEFAULT_PARAMS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/enum.hpp b/include/ndnboost/mpl/aux_/preprocessor/enum.hpp
index a1660b9..05a1641 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/enum.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/enum.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,47 +16,47 @@
 
 #include <ndnboost/mpl/aux_/config/preprocessor.hpp>
 
-// BOOST_MPL_PP_ENUM(0,int): <nothing>
-// BOOST_MPL_PP_ENUM(1,int): int
-// BOOST_MPL_PP_ENUM(2,int): int, int
-// BOOST_MPL_PP_ENUM(n,int): int, int, .., int
+// NDNBOOST_MPL_PP_ENUM(0,int): <nothing>
+// NDNBOOST_MPL_PP_ENUM(1,int): int
+// NDNBOOST_MPL_PP_ENUM(2,int): int, int
+// NDNBOOST_MPL_PP_ENUM(n,int): int, int, .., int
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
 
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define BOOST_MPL_PP_ENUM(n, param) \
-    BOOST_PP_CAT(BOOST_MPL_PP_ENUM_,n)(param) \
+#   define NDNBOOST_MPL_PP_ENUM(n, param) \
+    NDNBOOST_PP_CAT(NDNBOOST_MPL_PP_ENUM_,n)(param) \
     /**/
     
-#   define BOOST_MPL_PP_ENUM_0(p)
-#   define BOOST_MPL_PP_ENUM_1(p) p
-#   define BOOST_MPL_PP_ENUM_2(p) p,p
-#   define BOOST_MPL_PP_ENUM_3(p) p,p,p
-#   define BOOST_MPL_PP_ENUM_4(p) p,p,p,p
-#   define BOOST_MPL_PP_ENUM_5(p) p,p,p,p,p
-#   define BOOST_MPL_PP_ENUM_6(p) p,p,p,p,p,p
-#   define BOOST_MPL_PP_ENUM_7(p) p,p,p,p,p,p,p
-#   define BOOST_MPL_PP_ENUM_8(p) p,p,p,p,p,p,p,p
-#   define BOOST_MPL_PP_ENUM_9(p) p,p,p,p,p,p,p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_0(p)
+#   define NDNBOOST_MPL_PP_ENUM_1(p) p
+#   define NDNBOOST_MPL_PP_ENUM_2(p) p,p
+#   define NDNBOOST_MPL_PP_ENUM_3(p) p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_4(p) p,p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_5(p) p,p,p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_6(p) p,p,p,p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_7(p) p,p,p,p,p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_8(p) p,p,p,p,p,p,p,p
+#   define NDNBOOST_MPL_PP_ENUM_9(p) p,p,p,p,p,p,p,p,p
 
 #else
 
 #   include <ndnboost/preprocessor/comma_if.hpp>
 #   include <ndnboost/preprocessor/repeat.hpp>
 
-#   define BOOST_MPL_PP_AUX_ENUM_FUNC(unused, i, param) \
-    BOOST_PP_COMMA_IF(i) param \
+#   define NDNBOOST_MPL_PP_AUX_ENUM_FUNC(unused, i, param) \
+    NDNBOOST_PP_COMMA_IF(i) param \
     /**/
 
-#   define BOOST_MPL_PP_ENUM(n, param) \
-    BOOST_PP_REPEAT( \
+#   define NDNBOOST_MPL_PP_ENUM(n, param) \
+    NDNBOOST_PP_REPEAT( \
           n \
-        , BOOST_MPL_PP_AUX_ENUM_FUNC \
+        , NDNBOOST_MPL_PP_AUX_ENUM_FUNC \
         , param \
         ) \
     /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_ENUM_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/ext_params.hpp b/include/ndnboost/mpl/aux_/preprocessor/ext_params.hpp
index 3f01b1b..489e494 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/ext_params.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/ext_params.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,37 +16,37 @@
 
 #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
+// NDNBOOST_MPL_PP_EXT_PARAMS(2,2,T): <nothing>
+// NDNBOOST_MPL_PP_EXT_PARAMS(2,3,T): T2
+// NDNBOOST_MPL_PP_EXT_PARAMS(2,4,T): T2, T3
+// NDNBOOST_MPL_PP_EXT_PARAMS(2,n,T): T2, T3, .., Tn-1
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_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 NDNBOOST_MPL_PP_EXT_PARAMS(i,j,p) \
+    NDNBOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,NDNBOOST_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 NDNBOOST_MPL_PP_EXT_PARAMS_DELAY_1(i,n,p) \
+    NDNBOOST_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 NDNBOOST_MPL_PP_EXT_PARAMS_DELAY_2(i,n,p) \
+    NDNBOOST_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)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_1(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_2(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_3(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##3,p##4,p##5,p##6,p##7,p##8,p##9,p1,p2)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_4(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##4,p##5,p##6,p##7,p##8,p##9,p1,p2,p3)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_5(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##5,p##6,p##7,p##8,p##9,p1,p2,p3,p4)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_6(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##6,p##7,p##8,p##9,p1,p2,p3,p4,p5)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_7(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##7,p##8,p##9,p1,p2,p3,p4,p5,p6)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_8(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##8,p##9,p1,p2,p3,p4,p5,p6,p7)
+#   define NDNBOOST_MPL_PP_EXT_PARAMS_9(i,p) NDNBOOST_MPL_PP_FILTER_PARAMS_##i(p##9,p1,p2,p3,p4,p5,p6,p7,p8)
 
 #else
 
@@ -57,22 +57,22 @@
 #   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 NDNBOOST_MPL_PP_AUX_EXT_PARAM_FUNC(unused, i, op) \
+    NDNBOOST_PP_COMMA_IF(i) \
+    NDNBOOST_PP_CAT( \
+          NDNBOOST_PP_TUPLE_ELEM(2,1,op) \
+        , NDNBOOST_PP_ADD_D(1, i, NDNBOOST_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 \
+#   define NDNBOOST_MPL_PP_EXT_PARAMS(i, j, param) \
+    NDNBOOST_PP_REPEAT( \
+          NDNBOOST_PP_SUB_D(1,j,i) \
+        , NDNBOOST_MPL_PP_AUX_EXT_PARAM_FUNC \
         , (i,param) \
         ) \
     /**/
 
 #endif
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_EXT_PARAMS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/filter_params.hpp b/include/ndnboost/mpl/aux_/preprocessor/filter_params.hpp
index fefd984..7a75107 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/filter_params.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/filter_params.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,15 +14,15 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#define BOOST_MPL_PP_FILTER_PARAMS_0(p1,p2,p3,p4,p5,p6,p7,p8,p9) 
-#define BOOST_MPL_PP_FILTER_PARAMS_1(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1
-#define BOOST_MPL_PP_FILTER_PARAMS_2(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2
-#define BOOST_MPL_PP_FILTER_PARAMS_3(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3
-#define BOOST_MPL_PP_FILTER_PARAMS_4(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4
-#define BOOST_MPL_PP_FILTER_PARAMS_5(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5
-#define BOOST_MPL_PP_FILTER_PARAMS_6(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6
-#define BOOST_MPL_PP_FILTER_PARAMS_7(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7
-#define BOOST_MPL_PP_FILTER_PARAMS_8(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8
-#define BOOST_MPL_PP_FILTER_PARAMS_9(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8,p9
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_0(p1,p2,p3,p4,p5,p6,p7,p8,p9) 
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_1(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_2(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_3(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_4(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_5(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_6(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_7(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_8(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8
+#define NDNBOOST_MPL_PP_FILTER_PARAMS_9(p1,p2,p3,p4,p5,p6,p7,p8,p9) p1,p2,p3,p4,p5,p6,p7,p8,p9
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_FILTER_PARAMS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/params.hpp b/include/ndnboost/mpl/aux_/preprocessor/params.hpp
index 3ea43f1..3dd6c69 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/params.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/params.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,29 +16,29 @@
 
 #include <ndnboost/mpl/aux_/config/preprocessor.hpp>
 
-// BOOST_MPL_PP_PARAMS(0,T): <nothing>
-// BOOST_MPL_PP_PARAMS(1,T): T1
-// BOOST_MPL_PP_PARAMS(2,T): T1, T2
-// BOOST_MPL_PP_PARAMS(n,T): T1, T2, .., Tn
+// NDNBOOST_MPL_PP_PARAMS(0,T): <nothing>
+// NDNBOOST_MPL_PP_PARAMS(1,T): T1
+// NDNBOOST_MPL_PP_PARAMS(2,T): T1, T2
+// NDNBOOST_MPL_PP_PARAMS(n,T): T1, T2, .., Tn
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
 
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define BOOST_MPL_PP_PARAMS(n,p) \
-    BOOST_PP_CAT(BOOST_MPL_PP_PARAMS_,n)(p) \
+#   define NDNBOOST_MPL_PP_PARAMS(n,p) \
+    NDNBOOST_PP_CAT(NDNBOOST_MPL_PP_PARAMS_,n)(p) \
     /**/
 
-#   define BOOST_MPL_PP_PARAMS_0(p)
-#   define BOOST_MPL_PP_PARAMS_1(p) p##1
-#   define BOOST_MPL_PP_PARAMS_2(p) p##1,p##2
-#   define BOOST_MPL_PP_PARAMS_3(p) p##1,p##2,p##3
-#   define BOOST_MPL_PP_PARAMS_4(p) p##1,p##2,p##3,p##4
-#   define BOOST_MPL_PP_PARAMS_5(p) p##1,p##2,p##3,p##4,p##5
-#   define BOOST_MPL_PP_PARAMS_6(p) p##1,p##2,p##3,p##4,p##5,p##6
-#   define BOOST_MPL_PP_PARAMS_7(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7
-#   define BOOST_MPL_PP_PARAMS_8(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8
-#   define BOOST_MPL_PP_PARAMS_9(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9
+#   define NDNBOOST_MPL_PP_PARAMS_0(p)
+#   define NDNBOOST_MPL_PP_PARAMS_1(p) p##1
+#   define NDNBOOST_MPL_PP_PARAMS_2(p) p##1,p##2
+#   define NDNBOOST_MPL_PP_PARAMS_3(p) p##1,p##2,p##3
+#   define NDNBOOST_MPL_PP_PARAMS_4(p) p##1,p##2,p##3,p##4
+#   define NDNBOOST_MPL_PP_PARAMS_5(p) p##1,p##2,p##3,p##4,p##5
+#   define NDNBOOST_MPL_PP_PARAMS_6(p) p##1,p##2,p##3,p##4,p##5,p##6
+#   define NDNBOOST_MPL_PP_PARAMS_7(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7
+#   define NDNBOOST_MPL_PP_PARAMS_8(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8
+#   define NDNBOOST_MPL_PP_PARAMS_9(p) p##1,p##2,p##3,p##4,p##5,p##6,p##7,p##8,p##9
 
 #else
 
@@ -47,19 +47,19 @@
 #   include <ndnboost/preprocessor/inc.hpp>
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define BOOST_MPL_PP_AUX_PARAM_FUNC(unused, i, param) \
-    BOOST_PP_COMMA_IF(i) \
-    BOOST_PP_CAT(param, BOOST_PP_INC(i)) \
+#   define NDNBOOST_MPL_PP_AUX_PARAM_FUNC(unused, i, param) \
+    NDNBOOST_PP_COMMA_IF(i) \
+    NDNBOOST_PP_CAT(param, NDNBOOST_PP_INC(i)) \
     /**/
 
-#   define BOOST_MPL_PP_PARAMS(n, param) \
-    BOOST_PP_REPEAT( \
+#   define NDNBOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_PP_REPEAT( \
           n \
-        , BOOST_MPL_PP_AUX_PARAM_FUNC \
+        , NDNBOOST_MPL_PP_AUX_PARAM_FUNC \
         , param \
         ) \
     /**/
 
 #endif 
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_PARAMS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp b/include/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp
index df13235..a1b63a5 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/partial_spec_params.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -20,13 +20,13 @@
 #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) \
+#define NDNBOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+NDNBOOST_MPL_PP_PARAMS(n, param) \
+NDNBOOST_PP_COMMA_IF(NDNBOOST_MPL_PP_SUB(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY,n)) \
+NDNBOOST_MPL_PP_ENUM( \
+      NDNBOOST_MPL_PP_SUB(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY,n) \
     , def \
     ) \
 /**/
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_PARTIAL_SPEC_PARAMS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/range.hpp b/include/ndnboost/mpl/aux_/preprocessor/range.hpp
index 497c9fb..6c536d7 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/range.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/range.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,8 +16,8 @@
 
 #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) \
+#define NDNBOOST_MPL_PP_RANGE(first, length) \
+    NDNBOOST_PP_SEQ_SUBSEQ((0)(1)(2)(3)(4)(5)(6)(7)(8)(9), first, length) \
 /**/
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_RANGE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/repeat.hpp b/include/ndnboost/mpl/aux_/preprocessor/repeat.hpp
index 9b36136..f68a202 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/repeat.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/repeat.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,36 +16,36 @@
 
 #include <ndnboost/mpl/aux_/config/preprocessor.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_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 NDNBOOST_MPL_PP_REPEAT(n,f,param) \
+    NDNBOOST_PP_CAT(NDNBOOST_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)
+#   define NDNBOOST_MPL_PP_REPEAT_0(f,p)
+#   define NDNBOOST_MPL_PP_REPEAT_1(f,p) f(0,0,p)
+#   define NDNBOOST_MPL_PP_REPEAT_2(f,p) f(0,0,p) f(0,1,p)
+#   define NDNBOOST_MPL_PP_REPEAT_3(f,p) f(0,0,p) f(0,1,p) f(0,2,p)
+#   define NDNBOOST_MPL_PP_REPEAT_4(f,p) f(0,0,p) f(0,1,p) f(0,2,p) f(0,3,p)
+#   define NDNBOOST_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 NDNBOOST_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 NDNBOOST_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 NDNBOOST_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 NDNBOOST_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 NDNBOOST_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) \
+#   define NDNBOOST_MPL_PP_REPEAT(n,f,param) \
+    NDNBOOST_PP_REPEAT(n,f,param) \
     /**/
 
 #endif 
 
-#define BOOST_MPL_PP_REPEAT_IDENTITY_FUNC(unused1, unused2, x) x
+#define NDNBOOST_MPL_PP_REPEAT_IDENTITY_FUNC(unused1, unused2, x) x
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_REPEAT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/sub.hpp b/include/ndnboost/mpl/aux_/preprocessor/sub.hpp
index f4ba5d0..c19482a 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/sub.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/sub.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -16,50 +16,50 @@
 
 #include <ndnboost/mpl/aux_/config/preprocessor.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
+#if !defined(NDNBOOST_MPL_CFG_NO_OWN_PP_PRIMITIVES)
 
 #   include <ndnboost/mpl/aux_/preprocessor/tuple.hpp>
 
-#if defined(BOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
+#if defined(NDNBOOST_MPL_CFG_BROKEN_PP_MACRO_EXPANSION)
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define BOOST_MPL_PP_SUB(i,j) \
-    BOOST_MPL_PP_SUB_DELAY(i,j) \
+#   define NDNBOOST_MPL_PP_SUB(i,j) \
+    NDNBOOST_MPL_PP_SUB_DELAY(i,j) \
     /**/
 
-#   define BOOST_MPL_PP_SUB_DELAY(i,j) \
-    BOOST_PP_CAT(BOOST_MPL_PP_TUPLE_11_ELEM_##i,BOOST_MPL_PP_SUB_##j) \
+#   define NDNBOOST_MPL_PP_SUB_DELAY(i,j) \
+    NDNBOOST_PP_CAT(NDNBOOST_MPL_PP_TUPLE_11_ELEM_##i,NDNBOOST_MPL_PP_SUB_##j) \
     /**/
 #else
-#   define BOOST_MPL_PP_SUB(i,j) \
-    BOOST_MPL_PP_SUB_DELAY(i,j) \
+#   define NDNBOOST_MPL_PP_SUB(i,j) \
+    NDNBOOST_MPL_PP_SUB_DELAY(i,j) \
     /**/
 
-#   define BOOST_MPL_PP_SUB_DELAY(i,j) \
-    BOOST_MPL_PP_TUPLE_11_ELEM_##i BOOST_MPL_PP_SUB_##j \
+#   define NDNBOOST_MPL_PP_SUB_DELAY(i,j) \
+    NDNBOOST_MPL_PP_TUPLE_11_ELEM_##i NDNBOOST_MPL_PP_SUB_##j \
     /**/
 #endif
 
-#   define BOOST_MPL_PP_SUB_0 (0,1,2,3,4,5,6,7,8,9,10)
-#   define BOOST_MPL_PP_SUB_1 (0,0,1,2,3,4,5,6,7,8,9)
-#   define BOOST_MPL_PP_SUB_2 (0,0,0,1,2,3,4,5,6,7,8)
-#   define BOOST_MPL_PP_SUB_3 (0,0,0,0,1,2,3,4,5,6,7)
-#   define BOOST_MPL_PP_SUB_4 (0,0,0,0,0,1,2,3,4,5,6)
-#   define BOOST_MPL_PP_SUB_5 (0,0,0,0,0,0,1,2,3,4,5)
-#   define BOOST_MPL_PP_SUB_6 (0,0,0,0,0,0,0,1,2,3,4)
-#   define BOOST_MPL_PP_SUB_7 (0,0,0,0,0,0,0,0,1,2,3)
-#   define BOOST_MPL_PP_SUB_8 (0,0,0,0,0,0,0,0,0,1,2)
-#   define BOOST_MPL_PP_SUB_9 (0,0,0,0,0,0,0,0,0,0,1)
-#   define BOOST_MPL_PP_SUB_10 (0,0,0,0,0,0,0,0,0,0,0)
+#   define NDNBOOST_MPL_PP_SUB_0 (0,1,2,3,4,5,6,7,8,9,10)
+#   define NDNBOOST_MPL_PP_SUB_1 (0,0,1,2,3,4,5,6,7,8,9)
+#   define NDNBOOST_MPL_PP_SUB_2 (0,0,0,1,2,3,4,5,6,7,8)
+#   define NDNBOOST_MPL_PP_SUB_3 (0,0,0,0,1,2,3,4,5,6,7)
+#   define NDNBOOST_MPL_PP_SUB_4 (0,0,0,0,0,1,2,3,4,5,6)
+#   define NDNBOOST_MPL_PP_SUB_5 (0,0,0,0,0,0,1,2,3,4,5)
+#   define NDNBOOST_MPL_PP_SUB_6 (0,0,0,0,0,0,0,1,2,3,4)
+#   define NDNBOOST_MPL_PP_SUB_7 (0,0,0,0,0,0,0,0,1,2,3)
+#   define NDNBOOST_MPL_PP_SUB_8 (0,0,0,0,0,0,0,0,0,1,2)
+#   define NDNBOOST_MPL_PP_SUB_9 (0,0,0,0,0,0,0,0,0,0,1)
+#   define NDNBOOST_MPL_PP_SUB_10 (0,0,0,0,0,0,0,0,0,0,0)
 
 #else
 
 #   include <ndnboost/preprocessor/arithmetic/sub.hpp>
 
-#   define BOOST_MPL_PP_SUB(i,j) \
-    BOOST_PP_SUB(i,j) \
+#   define NDNBOOST_MPL_PP_SUB(i,j) \
+    NDNBOOST_PP_SUB(i,j) \
     /**/
     
 #endif
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_SUB_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/preprocessor/tuple.hpp b/include/ndnboost/mpl/aux_/preprocessor/tuple.hpp
index ed59407..cbb369d 100644
--- a/include/ndnboost/mpl/aux_/preprocessor/tuple.hpp
+++ b/include/ndnboost/mpl/aux_/preprocessor/tuple.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
-#define BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#define BOOST_MPL_PP_TUPLE_11_ELEM_0(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0
-#define BOOST_MPL_PP_TUPLE_11_ELEM_1(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e1
-#define BOOST_MPL_PP_TUPLE_11_ELEM_2(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e2
-#define BOOST_MPL_PP_TUPLE_11_ELEM_3(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e3
-#define BOOST_MPL_PP_TUPLE_11_ELEM_4(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e4
-#define BOOST_MPL_PP_TUPLE_11_ELEM_5(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e5
-#define BOOST_MPL_PP_TUPLE_11_ELEM_6(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e6
-#define BOOST_MPL_PP_TUPLE_11_ELEM_7(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e7
-#define BOOST_MPL_PP_TUPLE_11_ELEM_8(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e8
-#define BOOST_MPL_PP_TUPLE_11_ELEM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e9
-#define BOOST_MPL_PP_TUPLE_11_ELEM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e10
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_0(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e0
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_1(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e1
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_2(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e2
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_3(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e3
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_4(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e4
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_5(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e5
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_6(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e6
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_7(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e7
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_8(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e8
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_9(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e9
+#define NDNBOOST_MPL_PP_TUPLE_11_ELEM_10(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10) e10
 
-#endif // BOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PREPROCESSOR_TUPLE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/push_back_impl.hpp b/include/ndnboost/mpl/aux_/push_back_impl.hpp
index b2234ad..3e81de9 100644
--- a/include/ndnboost/mpl/aux_/push_back_impl.hpp
+++ b/include/ndnboost/mpl/aux_/push_back_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -37,7 +37,7 @@
         // 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_MPL_ASSERT_MSG(
               ( ndnboost::is_same< T, has_push_back_arg >::value )
             , REQUESTED_PUSH_BACK_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST
             , ( Sequence )
@@ -49,22 +49,22 @@
 struct has_push_back_impl
 {
     template< typename Seq > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_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 = 
+        NDNBOOST_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)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, push_back_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, has_push_back_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PUSH_BACK_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/push_front_impl.hpp b/include/ndnboost/mpl/aux_/push_front_impl.hpp
index 8ef53f8..0fa8745 100644
--- a/include/ndnboost/mpl/aux_/push_front_impl.hpp
+++ b/include/ndnboost/mpl/aux_/push_front_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -38,7 +38,7 @@
         // 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_MPL_ASSERT_MSG(
               ( ndnboost::is_same< T, has_push_front_arg >::value )
             , REQUESTED_PUSH_FRONT_SPECIALIZATION_FOR_SEQUENCE_DOES_NOT_EXIST
             , ( Sequence )
@@ -50,22 +50,22 @@
 struct has_push_front_impl
 {
     template< typename Seq > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_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 = 
+        NDNBOOST_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)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2, push_front_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, has_push_front_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_PUSH_FRONT_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/reverse_fold_impl.hpp b/include/ndnboost/mpl/aux_/reverse_fold_impl.hpp
index 3f5e858..78649c1 100644
--- a/include/ndnboost/mpl/aux_/reverse_fold_impl.hpp
+++ b/include/ndnboost/mpl/aux_/reverse_fold_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,13 +14,13 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_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)
+#   if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    || defined(NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 #       include <ndnboost/mpl/if.hpp>
 #       include <ndnboost/type_traits/is_same.hpp>
 #   endif
@@ -28,10 +28,10 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -40,5 +40,5 @@
 #   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
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp b/include/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp
index 838e63e..3ca6eee 100644
--- a/include/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp
+++ b/include/ndnboost/mpl/aux_/reverse_fold_impl_body.hpp
@@ -1,7 +1,7 @@
 
 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,44 +31,44 @@
 #   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_)); \
+        , NDNBOOST_PP_CAT(fwd_state,n_) \
+        , AUX778076_FOLD_IMPL_OP(NDNBOOST_PP_CAT(iter,n_)) \
+        >::type NDNBOOST_PP_CAT(fwd_state,NDNBOOST_PP_INC(n_)); \
+    typedef typename mpl::next<NDNBOOST_PP_CAT(iter,n_)>::type \
+        NDNBOOST_PP_CAT(iter,NDNBOOST_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_)); \
+        , NDNBOOST_PP_CAT(bkwd_state,n_) \
+        , AUX778076_FOLD_IMPL_OP(NDNBOOST_PP_CAT(iter,NDNBOOST_PP_DEC(n_))) \
+        >::type NDNBOOST_PP_CAT(bkwd_state,NDNBOOST_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_) \
+          NDNBOOST_PP_SUB_D(1,j,n_) \
         ) \
     /**/
 
 #   define AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(n_) \
-    typedef typename nested_chunk::state BOOST_PP_CAT(bkwd_state,n_);
+    typedef typename nested_chunk::state NDNBOOST_PP_CAT(bkwd_state,n_);
     /**/
 
 #   define AUX778076_FOLD_IMPL_NAME \
-    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \
+    NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_impl) \
     /**/
 
 #   define AUX778076_FOLD_CHUNK_NAME \
-    BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \
+    NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_chunk) \
     /**/
 
 namespace ndnboost { namespace mpl { namespace aux {
 
 /// forward declaration
 template<
-      BOOST_MPL_AUX_NTTP_DECL(long, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(long, N)
     , typename First
     , typename Last
     , typename State
@@ -77,16 +77,16 @@
     > 
 struct AUX778076_FOLD_IMPL_NAME;
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/reverse_fold_impl_body.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
+// implementation for N that exceeds NDNBOOST_MPL_LIMIT_UNROLLING
 template<
-      BOOST_MPL_AUX_NTTP_DECL(long, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(long, N)
     , typename First
     , typename Last
     , typename State
@@ -98,27 +98,27 @@
     typedef First iter0;
     typedef State fwd_state0;
 
-    BOOST_MPL_PP_REPEAT(
-          BOOST_MPL_LIMIT_UNROLLING
+    NDNBOOST_MPL_PP_REPEAT(
+          NDNBOOST_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)
+          ( (N - NDNBOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - NDNBOOST_MPL_LIMIT_UNROLLING )
+        , NDNBOOST_PP_CAT(iter,NDNBOOST_MPL_LIMIT_UNROLLING)
         , Last
-        , BOOST_PP_CAT(fwd_state,BOOST_MPL_LIMIT_UNROLLING)
+        , NDNBOOST_PP_CAT(fwd_state,NDNBOOST_MPL_LIMIT_UNROLLING)
         , BackwardOp
         , ForwardOp
         > nested_chunk;
         
-    AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(BOOST_MPL_LIMIT_UNROLLING)
+    AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(NDNBOOST_MPL_LIMIT_UNROLLING)
 
-    BOOST_MPL_PP_REPEAT(
-          BOOST_MPL_LIMIT_UNROLLING
+    NDNBOOST_MPL_PP_REPEAT(
+          NDNBOOST_MPL_LIMIT_UNROLLING
         , AUX778076_ITER_FOLD_BACKWARD_STEP
-        , BOOST_MPL_LIMIT_UNROLLING
+        , NDNBOOST_MPL_LIMIT_UNROLLING
         )
 
     typedef bkwd_state0 state;
@@ -165,17 +165,17 @@
     typedef Last iterator;
 };
 
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) >
+template< NDNBOOST_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()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_UNROLLING, <ndnboost/mpl/aux_/reverse_fold_impl_body.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-// implementation for N that exceeds BOOST_MPL_LIMIT_UNROLLING
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) > 
+// implementation for N that exceeds NDNBOOST_MPL_LIMIT_UNROLLING
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, N) > 
 struct AUX778076_FOLD_CHUNK_NAME
 {
     template<
@@ -190,27 +190,27 @@
         typedef First iter0;
         typedef State fwd_state0;
 
-        BOOST_MPL_PP_REPEAT(
-              BOOST_MPL_LIMIT_UNROLLING
+        NDNBOOST_MPL_PP_REPEAT(
+              NDNBOOST_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)
+              ( (N - NDNBOOST_MPL_LIMIT_UNROLLING) < 0 ? 0 : N - NDNBOOST_MPL_LIMIT_UNROLLING )
+            , NDNBOOST_PP_CAT(iter,NDNBOOST_MPL_LIMIT_UNROLLING)
             , Last
-            , BOOST_PP_CAT(fwd_state,BOOST_MPL_LIMIT_UNROLLING)
+            , NDNBOOST_PP_CAT(fwd_state,NDNBOOST_MPL_LIMIT_UNROLLING)
             , BackwardOp
             , ForwardOp
             > nested_chunk;
             
-        AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(BOOST_MPL_LIMIT_UNROLLING)
+        AUX778076_FIRST_BACKWARD_STATE_TYPEDEF(NDNBOOST_MPL_LIMIT_UNROLLING)
 
-        BOOST_MPL_PP_REPEAT(
-              BOOST_MPL_LIMIT_UNROLLING
+        NDNBOOST_MPL_PP_REPEAT(
+              NDNBOOST_MPL_LIMIT_UNROLLING
             , AUX778076_ITER_FOLD_BACKWARD_STEP
-            , BOOST_MPL_LIMIT_UNROLLING
+            , NDNBOOST_MPL_LIMIT_UNROLLING
             )
 
         typedef bkwd_state0 state;
@@ -226,13 +226,13 @@
     , typename BackwardOp
     , typename ForwardOp
     > 
-struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step);
+struct NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step);
 
 template<
       typename Last
     , typename State
     >
-struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)
+struct NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)
 {
     typedef Last iterator;
     typedef State state;
@@ -252,15 +252,15 @@
     {
         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>
+            , NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_null_step)<Last,State>
+            , NDNBOOST_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)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
     /// ETI workaround
     template<> struct result_<int,int,int,int,int>
     {
@@ -277,7 +277,7 @@
     , typename BackwardOp
     , typename ForwardOp
     > 
-struct BOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)
+struct NDNBOOST_PP_CAT(AUX778076_FOLD_IMPL_NAME_PREFIX,_step)
 {
     typedef AUX778076_FOLD_CHUNK_NAME<-1>::template result_<
           typename mpl::next<First>::type
@@ -297,7 +297,7 @@
 };
 
 template<
-      BOOST_MPL_AUX_NTTP_DECL(long, N)
+      NDNBOOST_MPL_AUX_NTTP_DECL(long, N)
     , typename First
     , typename Last
     , typename State
@@ -310,7 +310,7 @@
 {
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 }}}
 
@@ -326,10 +326,10 @@
 
 #else
 
-#   define n_ BOOST_PP_FRAME_ITERATION(1)
+#   define n_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 
 template<
       typename First
@@ -343,22 +343,22 @@
     typedef First iter0;
     typedef State fwd_state0;
 
-    BOOST_MPL_PP_REPEAT(
+    NDNBOOST_MPL_PP_REPEAT(
           n_
         , AUX778076_ITER_FOLD_FORWARD_STEP
         , unused
         )
 
-    typedef BOOST_PP_CAT(fwd_state,n_) BOOST_PP_CAT(bkwd_state,n_);
+    typedef NDNBOOST_PP_CAT(fwd_state,n_) NDNBOOST_PP_CAT(bkwd_state,n_);
 
-    BOOST_MPL_PP_REPEAT(
+    NDNBOOST_MPL_PP_REPEAT(
           n_
         , AUX778076_ITER_FOLD_BACKWARD_STEP
         , n_
         )
 
     typedef bkwd_state0 state;
-    typedef BOOST_PP_CAT(iter,n_) iterator;
+    typedef NDNBOOST_PP_CAT(iter,n_) iterator;
 };
 
 #else
@@ -377,25 +377,25 @@
         typedef First iter0;
         typedef State fwd_state0;
 
-        BOOST_MPL_PP_REPEAT(
+        NDNBOOST_MPL_PP_REPEAT(
               n_
             , AUX778076_ITER_FOLD_FORWARD_STEP
             , unused
             )
 
-        typedef BOOST_PP_CAT(fwd_state,n_) BOOST_PP_CAT(bkwd_state,n_);
+        typedef NDNBOOST_PP_CAT(fwd_state,n_) NDNBOOST_PP_CAT(bkwd_state,n_);
 
-        BOOST_MPL_PP_REPEAT(
+        NDNBOOST_MPL_PP_REPEAT(
               n_
             , AUX778076_ITER_FOLD_BACKWARD_STEP
             , n_
             )
 
         typedef bkwd_state0 state;
-        typedef BOOST_PP_CAT(iter,n_) iterator;
+        typedef NDNBOOST_PP_CAT(iter,n_) iterator;
     };
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
     /// ETI workaround
     template<> struct result_<int,int,int,int,int>
     {
@@ -405,8 +405,8 @@
 #endif
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 #   undef n_
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/sequence_wrapper.hpp b/include/ndnboost/mpl/aux_/sequence_wrapper.hpp
index 8ec8f09..c2a2754 100644
--- a/include/ndnboost/mpl/aux_/sequence_wrapper.hpp
+++ b/include/ndnboost/mpl/aux_/sequence_wrapper.hpp
@@ -1,7 +1,7 @@
 
 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
@@ -30,7 +30,7 @@
 #   include <ndnboost/preprocessor/comma_if.hpp>
 #   include <ndnboost/preprocessor/iterate.hpp>
 
-#if defined(BOOST_MPL_PREPROCESSING_MODE)
+#if defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   undef LONG_MAX
 #endif
 
@@ -47,25 +47,25 @@
 #   define AUX778076_SEQUENCE_DEFAULT na
 
 #   define AUX778076_SEQUENCE_NAME_N(n) \
-    BOOST_PP_CAT(AUX778076_SEQUENCE_BASE_NAME,n) \
+    NDNBOOST_PP_CAT(AUX778076_SEQUENCE_BASE_NAME,n) \
     /**/
 
 #   define AUX778076_SEQUENCE_PARAMS() \
-    BOOST_PP_ENUM_PARAMS( \
+    NDNBOOST_PP_ENUM_PARAMS( \
           AUX778076_SEQUENCE_LIMIT \
         , AUX778076_SEQUENCE_TEMPLATE_PARAM \
         ) \
     /**/
 
 #   define AUX778076_SEQUENCE_ARGS() \
-    BOOST_PP_ENUM_PARAMS( \
+    NDNBOOST_PP_ENUM_PARAMS( \
           AUX778076_SEQUENCE_LIMIT \
         , T \
         ) \
     /**/
 
 #   define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
-     BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
+     NDNBOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
           AUX778076_SEQUENCE_LIMIT \
         , AUX778076_SEQUENCE_TEMPLATE_PARAM \
         , AUX778076_SEQUENCE_DEFAULT \
@@ -73,19 +73,19 @@
     /**/
 
 #   define AUX778076_SEQUENCE_N_PARAMS(n) \
-    BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
+    NDNBOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
     /**/
 
 #   define AUX778076_SEQUENCE_N_ARGS(n) \
-    BOOST_PP_ENUM_PARAMS(n, T) \
+    NDNBOOST_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 \
+    NDNBOOST_PP_ENUM_PARAMS(n, T) \
+    NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_PP_ENUM( \
+          NDNBOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
+        , NDNBOOST_PP_TUPLE_ELEM_3_2 \
         , AUX778076_SEQUENCE_DEFAULT \
         ) \
     /**/
@@ -93,18 +93,18 @@
 #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_TEMPLATE_PARAM NDNBOOST_MPL_AUX_NTTP_DECL(long, C)
 #   define AUX778076_SEQUENCE_DEFAULT LONG_MAX
 
 #   define AUX778076_SEQUENCE_PARAMS() \
-    typename T, BOOST_PP_ENUM_PARAMS( \
+    typename T, NDNBOOST_PP_ENUM_PARAMS( \
           AUX778076_SEQUENCE_LIMIT \
         , AUX778076_SEQUENCE_TEMPLATE_PARAM \
         ) \
     /**/
 
 #   define AUX778076_SEQUENCE_ARGS() \
-    T, BOOST_PP_ENUM_PARAMS( \
+    T, NDNBOOST_PP_ENUM_PARAMS( \
           AUX778076_SEQUENCE_LIMIT \
         , C \
         ) \
@@ -112,7 +112,7 @@
 
 #   define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
     typename T, \
-    BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
+    NDNBOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
           AUX778076_SEQUENCE_LIMIT \
         , AUX778076_SEQUENCE_TEMPLATE_PARAM \
         , AUX778076_SEQUENCE_DEFAULT \
@@ -120,25 +120,25 @@
     /**/
 
 #   define AUX778076_SEQUENCE_N_PARAMS(n) \
-    typename T BOOST_PP_COMMA_IF(n) \
-    BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
+    typename T NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_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)
+#       define AUX778076_SEQUENCE_CONVERT_CN_TO(z,n,TARGET) NDNBOOST_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) \
+    T NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_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 \
+    T, NDNBOOST_PP_ENUM_PARAMS(n, C) \
+    NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_PP_ENUM( \
+          NDNBOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
+        , NDNBOOST_PP_TUPLE_ELEM_3_2 \
         , AUX778076_SEQUENCE_DEFAULT \
         ) \
     /**/
@@ -146,7 +146,7 @@
 #endif // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
 
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 // forward declaration
 template<
       AUX778076_SEQUENCE_DEFAULT_PARAMS()
@@ -154,17 +154,17 @@
 struct AUX778076_SEQUENCE_NAME;
 #else
 namespace aux {
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > 
-struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser);
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) > 
+struct NDNBOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser);
 }
 #endif
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(0, AUX778076_SEQUENCE_LIMIT, <ndnboost/mpl/aux_/sequence_wrapper.hpp>))
-#include BOOST_PP_ITERATE()
+#include NDNBOOST_PP_ITERATE()
 
 // real C++ version is already taken care of
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 namespace aux {
 // ???_count_args
@@ -179,13 +179,13 @@
 template<
       AUX778076_SEQUENCE_PARAMS()
     >
-struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)
+struct NDNBOOST_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)
+    typedef aux::NDNBOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_count_args)<
+          NDNBOOST_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 >
+    typedef typename aux::NDNBOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)< arg_num_::value >
         ::template result_< AUX778076_SEQUENCE_ARGS() >::type type;
 };
 
@@ -195,16 +195,16 @@
       AUX778076_SEQUENCE_DEFAULT_PARAMS()
     >
 struct AUX778076_SEQUENCE_NAME
-    : aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
+    : aux::NDNBOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
           AUX778076_SEQUENCE_ARGS()
         >::type
 {
-    typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
+    typedef typename aux::NDNBOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
           AUX778076_SEQUENCE_ARGS()
         >::type type;
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 #   undef AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS
 #   undef AUX778076_SEQUENCE_N_ARGS
@@ -227,9 +227,9 @@
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 #if i_ == AUX778076_SEQUENCE_LIMIT
 
@@ -265,7 +265,7 @@
 namespace aux {
 
 template<>
-struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)<i_>
+struct NDNBOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)<i_>
 {
     template<
           AUX778076_SEQUENCE_PARAMS()
@@ -286,7 +286,7 @@
 
 } // namespace aux
 
-#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/size_impl.hpp b/include/ndnboost/mpl/aux_/size_impl.hpp
index bf467f7..cfb16fa 100644
--- a/include/ndnboost/mpl/aux_/size_impl.hpp
+++ b/include/ndnboost/mpl/aux_/size_impl.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -29,7 +29,7 @@
 struct size_impl
 {
     template< typename Sequence > struct apply
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561))
+#if !NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x561))
         : distance<
               typename begin<Sequence>::type
             , typename end<Sequence>::type
@@ -45,8 +45,8 @@
     };
 };
 
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, size_impl)
+NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(1, size_impl)
 
 }}
 
-#endif // BOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_SIZE_IMPL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/static_cast.hpp b/include/ndnboost/mpl/aux_/static_cast.hpp
index aebd267..13121eb 100644
--- a/include/ndnboost/mpl/aux_/static_cast.hpp
+++ b/include/ndnboost/mpl/aux_/static_cast.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
-#define BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,12 +16,12 @@
 
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x561)) \
- || BOOST_WORKAROUND(__GNUC__, < 3) \
- || BOOST_WORKAROUND(__MWERKS__, <= 0x3001)
-#   define BOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr)
+#if NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x561)) \
+ || NDNBOOST_WORKAROUND(__GNUC__, < 3) \
+ || NDNBOOST_WORKAROUND(__MWERKS__, <= 0x3001)
+#   define NDNBOOST_MPL_AUX_STATIC_CAST(T, expr) (T)(expr)
 #else
-#   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
+#   define NDNBOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
 #endif
 
-#endif // BOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_STATIC_CAST_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/template_arity.hpp b/include/ndnboost/mpl/aux_/template_arity.hpp
index 47a8398..f573080 100644
--- a/include/ndnboost/mpl/aux_/template_arity.hpp
+++ b/include/ndnboost/mpl/aux_/template_arity.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
-#define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -21,11 +21,11 @@
 #include <ndnboost/mpl/aux_/config/ttp.hpp>
 #include <ndnboost/mpl/aux_/config/lambda.hpp>
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_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)
+#   if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   if defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 #       include <ndnboost/mpl/aux_/type_wrapper.hpp>
 #   endif
 #   else
@@ -36,16 +36,16 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER template_arity.hpp
+#   define NDNBOOST_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)
+#   if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#   if defined(NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 
 #   include <ndnboost/mpl/limits/arity.hpp>
 #   include <ndnboost/mpl/aux_/preprocessor/range.hpp>
@@ -59,29 +59,29 @@
 #   include <ndnboost/preprocessor/inc.hpp>
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#   define AUX778076_ARITY BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+#   define AUX778076_ARITY NDNBOOST_PP_INC(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 
 namespace ndnboost { namespace mpl { namespace aux {
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
+template< NDNBOOST_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 ) \
+    ( NDNBOOST_PP_CAT(C,i_) > 0 ? NDNBOOST_PP_CAT(C,i_) : state ) \
 /**/
 
 template<
-      BOOST_MPL_PP_PARAMS(AUX778076_ARITY, BOOST_MPL_AUX_NTTP_DECL(int, C))
+      NDNBOOST_MPL_PP_PARAMS(AUX778076_ARITY, NDNBOOST_MPL_AUX_NTTP_DECL(int, C))
     >
 struct max_arity
 {
-    BOOST_STATIC_CONSTANT(int, value = 
-          BOOST_PP_SEQ_FOLD_LEFT(
+    NDNBOOST_STATIC_CONSTANT(int, value = 
+          NDNBOOST_PP_SEQ_FOLD_LEFT(
               AUX778076_MAX_ARITY_OP
             , -1
-            , BOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
+            , NDNBOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
             )
         );
 };
@@ -90,27 +90,27 @@
 
 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()
+#   define NDNBOOST_PP_ITERATION_LIMITS (1, AUX778076_ARITY)
+#   define NDNBOOST_PP_FILENAME_1 <ndnboost/mpl/aux_/template_arity.hpp>
+#   include NDNBOOST_PP_ITERATE()
 
-template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
+template< typename F, NDNBOOST_MPL_AUX_NTTP_DECL(int, N) >
 struct template_arity_impl
 {
-    BOOST_STATIC_CONSTANT(int, value = 
+    NDNBOOST_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 \
+    NDNBOOST_PP_COMMA_IF(i_) template_arity_impl<F,NDNBOOST_PP_INC(i_)>::value \
 /**/
 
 template< typename F >
 struct template_arity
 {
-    BOOST_STATIC_CONSTANT(int, value = (
-          max_arity< BOOST_MPL_PP_REPEAT(
+    NDNBOOST_STATIC_CONSTANT(int, value = (
+          max_arity< NDNBOOST_MPL_PP_REPEAT(
               AUX778076_ARITY
             , AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
             , F
@@ -126,8 +126,8 @@
 
 }}}
 
-#   endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
-#   else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+#   endif // NDNBOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
+#   else // NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 
 #   include <ndnboost/mpl/aux_/config/eti.hpp>
 
@@ -158,7 +158,7 @@
 {
 };
 
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
 template<>
 struct template_arity<int>
     : mpl::int_<-1>
@@ -168,22 +168,22 @@
 
 }}}
 
-#   endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+#   endif // NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
 
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<
-      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
-    , BOOST_MPL_PP_PARAMS(i_, typename T)
+      template< NDNBOOST_MPL_PP_PARAMS(i_, typename P) > class F
+    , NDNBOOST_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_>);
+arity_helper(type_wrapper< F<NDNBOOST_MPL_PP_PARAMS(i_, T)> >, arity_tag<i_>);
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/aux_/template_arity_fwd.hpp b/include/ndnboost/mpl/aux_/template_arity_fwd.hpp
index 4ed2f16..f24bd99 100644
--- a/include/ndnboost/mpl/aux_/template_arity_fwd.hpp
+++ b/include/ndnboost/mpl/aux_/template_arity_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
-#define BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -20,4 +20,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_TEMPLATE_ARITY_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/traits_lambda_spec.hpp b/include/ndnboost/mpl/aux_/traits_lambda_spec.hpp
index a3ab41f..0f21dda 100644
--- a/include/ndnboost/mpl/aux_/traits_lambda_spec.hpp
+++ b/include/ndnboost/mpl/aux_/traits_lambda_spec.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
-#define BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -19,16 +19,16 @@
 #include <ndnboost/mpl/aux_/preprocessor/params.hpp>
 #include <ndnboost/mpl/aux_/config/lambda.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 
-#   define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) /**/
+#   define NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) /**/
 
-#elif !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#elif !defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
 
-#   define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+#   define NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
 template<> struct trait<void_> \
 { \
-    template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+    template< NDNBOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
     { \
     }; \
 }; \
@@ -36,28 +36,28 @@
 
 #else
 
-#   define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+#   define NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
 template<> struct trait<void_> \
 { \
-    template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+    template< NDNBOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
     { \
     }; \
 }; \
 template<> struct trait<int> \
 { \
-    template< BOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
+    template< NDNBOOST_MPL_PP_PARAMS(i, typename T) > struct apply \
     { \
         typedef int type; \
     }; \
 }; \
 /**/
 
-#endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+#endif // NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 
 
-#define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i, trait) \
-    BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
+#define NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(i, trait) \
+    NDNBOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait) \
     template<> struct trait<non_sequence_tag> {}; \
 /**/
 
-#endif // BOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_TRAITS_LAMBDA_SPEC_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/type_wrapper.hpp b/include/ndnboost/mpl/aux_/type_wrapper.hpp
index 11139c3..faaf54b 100644
--- a/include/ndnboost/mpl/aux_/type_wrapper.hpp
+++ b/include/ndnboost/mpl/aux_/type_wrapper.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
-#define BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 // Copyright Peter Dimov 2000-2003
@@ -24,7 +24,7 @@
     typedef T type;
 };
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_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
@@ -44,4 +44,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_TYPE_WRAPPER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/unwrap.hpp b/include/ndnboost/mpl/aux_/unwrap.hpp
index 2b755b9..292d8c8 100644
--- a/include/ndnboost/mpl/aux_/unwrap.hpp
+++ b/include/ndnboost/mpl/aux_/unwrap.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_UNWRAP_HPP_INCLUDED
-#define BOOST_MPL_AUX_UNWRAP_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_UNWRAP_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_UNWRAP_HPP_INCLUDED
 
 // Copyright Peter Dimov and Multi Media Ltd 2001, 2002
 // Copyright David Abrahams 2001
@@ -44,4 +44,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_UNWRAP_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_UNWRAP_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/value_wknd.hpp b/include/ndnboost/mpl/aux_/value_wknd.hpp
index a68fcca..0203bae 100644
--- a/include/ndnboost/mpl/aux_/value_wknd.hpp
+++ b/include/ndnboost/mpl/aux_/value_wknd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
-#define BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -19,8 +19,8 @@
 #include <ndnboost/mpl/aux_/config/eti.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
-    || defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS) \
+    || defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
 
 #   include <ndnboost/mpl/int.hpp>
 
@@ -30,7 +30,7 @@
 {
 };
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
 template<> struct value_wknd<int>
     : int_<1>
 {
@@ -40,32 +40,32 @@
 }}}
 
 
-#if !defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
-#   define BOOST_MPL_AUX_VALUE_WKND(C) \
-    ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \
+#if !defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#   define NDNBOOST_MPL_AUX_VALUE_WKND(C) \
+    ::NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::aux::value_wknd< C > \
 /**/
-#    define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) BOOST_MPL_AUX_VALUE_WKND(C)
+#    define NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(C) NDNBOOST_MPL_AUX_VALUE_WKND(C)
 #else
-#   define BOOST_MPL_AUX_VALUE_WKND(C) C
-#   define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) \
+#   define NDNBOOST_MPL_AUX_VALUE_WKND(C) C
+#   define NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(C) \
     ::ndnboost::mpl::aux::value_wknd< C > \
 /**/
 #endif
 
-#else // BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
+#else // NDNBOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS
 
-#   define BOOST_MPL_AUX_VALUE_WKND(C) C
-#   define BOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
+#   define NDNBOOST_MPL_AUX_VALUE_WKND(C) C
+#   define NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(C) C
 
 #endif
 
-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
-#   define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
-    BOOST_MPL_AUX_STATIC_CAST(T, C::value) \
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, <= 238)
+#   define NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
+    NDNBOOST_MPL_AUX_STATIC_CAST(T, C::value) \
 /**/
 #else
-#   define BOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
-    BOOST_MPL_AUX_VALUE_WKND(C)::value \
+#   define NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(T, C) \
+    NDNBOOST_MPL_AUX_VALUE_WKND(C)::value \
 /**/
 #endif
 
@@ -77,7 +77,7 @@
     typedef typename T::value_type type;
 };
 
-#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
 template<> struct value_type_wknd<int>
 {
     typedef int type;
@@ -86,4 +86,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_VALUE_WKND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/aux_/yes_no.hpp b/include/ndnboost/mpl/aux_/yes_no.hpp
index f26d2df..4422262 100644
--- a/include/ndnboost/mpl/aux_/yes_no.hpp
+++ b/include/ndnboost/mpl/aux_/yes_no.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
-#define BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_YES_NO_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_YES_NO_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -36,9 +36,9 @@
 };
 
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, n) > struct weighted_tag
 {
-#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if !NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     typedef char (&type)[n];
 #else
     char buf[n];
@@ -46,7 +46,7 @@
 #endif
 };
 
-#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES)
+#if defined(NDNBOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES)
 template<> struct weighted_tag<0>
 {
     typedef char (&type)[1];
@@ -55,4 +55,4 @@
 
 }}}
 
-#endif // BOOST_MPL_AUX_YES_NO_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_YES_NO_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/back_fwd.hpp b/include/ndnboost/mpl/back_fwd.hpp
index bb4963a..44d85e5 100644
--- a/include/ndnboost/mpl/back_fwd.hpp
+++ b/include/ndnboost/mpl/back_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_BACK_FWD_HPP_INCLUDED
-#define BOOST_MPL_BACK_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BACK_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_BACK_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_BACK_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_BACK_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/back_inserter.hpp b/include/ndnboost/mpl/back_inserter.hpp
index e4c779b..99f6c10 100644
--- a/include/ndnboost/mpl/back_inserter.hpp
+++ b/include/ndnboost/mpl/back_inserter.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_BACK_INSERTER_HPP_INCLUDED
-#define BOOST_MPL_BACK_INSERTER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BACK_INSERTER_HPP_INCLUDED
+#define NDNBOOST_MPL_BACK_INSERTER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 // Copyright David Abrahams 2003-2004
@@ -31,4 +31,4 @@
 
 }}
 
-#endif // BOOST_MPL_BACK_INSERTER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_BACK_INSERTER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/begin_end.hpp b/include/ndnboost/mpl/begin_end.hpp
index 89098fa..d5991f8 100644
--- a/include/ndnboost/mpl/begin_end.hpp
+++ b/include/ndnboost/mpl/begin_end.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_BEGIN_END_HPP_INCLUDED
-#define BOOST_MPL_BEGIN_END_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BEGIN_END_HPP_INCLUDED
+#define NDNBOOST_MPL_BEGIN_END_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -26,7 +26,7 @@
 // happy this way (less ETI-related errors), and it doesn't affect 
 // anything else
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct begin
 {
@@ -34,11 +34,11 @@
     typedef typename begin_impl< tag_ >
         ::template apply< Sequence >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,begin,(Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,begin,(Sequence))
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct end
 {
@@ -46,12 +46,12 @@
     typedef typename end_impl< tag_ >
         ::template apply< Sequence >::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,end,(Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,end,(Sequence))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, begin)
-BOOST_MPL_AUX_NA_SPEC(1, end)
+NDNBOOST_MPL_AUX_NA_SPEC(1, begin)
+NDNBOOST_MPL_AUX_NA_SPEC(1, end)
 
 }}
 
-#endif // BOOST_MPL_BEGIN_END_HPP_INCLUDED
+#endif // NDNBOOST_MPL_BEGIN_END_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/begin_end_fwd.hpp b/include/ndnboost/mpl/begin_end_fwd.hpp
index ecbf481..0e486ab 100644
--- a/include/ndnboost/mpl/begin_end_fwd.hpp
+++ b/include/ndnboost/mpl/begin_end_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
-#define BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,4 +24,4 @@
 
 }}
 
-#endif // BOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_BEGIN_END_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/bind.hpp b/include/ndnboost/mpl/bind.hpp
index cc0834e..5b30a16 100644
--- a/include/ndnboost/mpl/bind.hpp
+++ b/include/ndnboost/mpl/bind.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_BIND_HPP_INCLUDED
-#define BOOST_MPL_BIND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BIND_HPP_INCLUDED
+#define NDNBOOST_MPL_BIND_HPP_INCLUDED
 
 // Copyright Peter Dimov 2001
 // Copyright Aleksey Gurtovoy 2001-2004
@@ -19,7 +19,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/bind_fwd.hpp>
 #   include <ndnboost/mpl/placeholders.hpp>
 #   include <ndnboost/mpl/next.hpp>
@@ -30,7 +30,7 @@
 #   include <ndnboost/mpl/aux_/arity_spec.hpp>
 #   include <ndnboost/mpl/aux_/type_wrapper.hpp>
 #   include <ndnboost/mpl/aux_/yes_no.hpp>
-#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 #       include <ndnboost/type_traits/is_reference.hpp>
 #   endif 
 #endif
@@ -39,13 +39,13 @@
 #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)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-#       define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
+#   if defined(NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+#       define NDNBOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
 #   else
-#       define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
+#       define NDNBOOST_MPL_PREPROCESSED_HEADER bind.hpp
 #   endif
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
@@ -74,40 +74,40 @@
 
 // local macros, #undef-ined at the end of the header
 #   define AUX778076_APPLY \
-    BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
+    NDNBOOST_PP_CAT(apply_wrap,NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
     /**/
 
-#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+#   if defined(NDNBOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 #       define AUX778076_DMC_PARAM() , int dummy_
 #   else
 #       define AUX778076_DMC_PARAM()
 #   endif
 
 #   define AUX778076_BIND_PARAMS(param) \
-    BOOST_MPL_PP_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         ) \
     /**/
 
 #   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
-    BOOST_MPL_PP_DEFAULT_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_DEFAULT_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         , value \
         ) \
     /**/
 
 #   define AUX778076_BIND_N_PARAMS(n, param) \
-    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_PP_COMMA_IF(n) NDNBOOST_MPL_PP_PARAMS(n, param) \
     /**/
 
 #   define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
-    BOOST_PP_COMMA_IF(n) \
-    BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
+    NDNBOOST_PP_COMMA_IF(n) \
+    NDNBOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
     /**/
 
-#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#if !defined(NDNBOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 #   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
     AUX778076_BIND_DEFAULT_PARAMS(param, value) \
     /**/
@@ -119,7 +119,7 @@
 
 namespace aux {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template<
       typename T, AUX778076_BIND_PARAMS(typename U)
@@ -129,7 +129,7 @@
     typedef T type;
 };
 
-#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+#   if !defined(NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 
 template<
       typename T
@@ -150,17 +150,17 @@
     typedef Arg type;
 };
 
-#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+#   endif // NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 
 template<
-      BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
+      NDNBOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
     >
 struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
 {
     typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
 };
 
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+#if !defined(NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE)
 template<
       typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
     >
@@ -171,7 +171,7 @@
 };
 #endif
 
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 // agurt, 15/jan/02: it's not a intended to be used as a function class, and 
 // MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
@@ -209,7 +209,7 @@
 {
 };
 
-#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+#   if !defined(NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 
 template< typename T > 
 struct replace_unnamed_arg_impl
@@ -237,11 +237,11 @@
 {
 };
 
-#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+#   endif // NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 
 // agurt, 10/mar/02: the forward declaration has to appear before any of
 // 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
-template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
 
 aux::no_tag is_bind_helper(...);
 template< typename T > aux::no_tag is_bind_helper(protect<T>*);
@@ -250,14 +250,14 @@
 // agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload 
 // in case if we use 'aux::type_wrapper< bind<...> >' here, and all 
 // 'bind' instantiations form a complete type anyway
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+#if !defined(NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE)
 template<
       typename F, AUX778076_BIND_PARAMS(typename T)
     >
 aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
 #endif
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) >
 aux::yes_tag is_bind_helper(arg<N>*);
 
 template< bool is_ref_ = true >
@@ -265,7 +265,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value = false);
+        NDNBOOST_STATIC_CONSTANT(bool, value = false);
     };
 };
 
@@ -274,7 +274,7 @@
 {
     template< typename T > struct result_
     {
-        BOOST_STATIC_CONSTANT(bool, value = 
+        NDNBOOST_STATIC_CONSTANT(bool, value = 
               sizeof(aux::is_bind_helper(static_cast<T*>(0))) 
                 == sizeof(aux::yes_tag)
             );
@@ -287,38 +287,38 @@
 {
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 } // namespace aux
 
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/bind.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/bind.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(NDNBOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
 /// if_/eval_if specializations
 #   define AUX778076_SPEC_NAME if_
-#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <ndnboost/mpl/bind.hpp>))
-#   include BOOST_PP_ITERATE()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <ndnboost/mpl/bind.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 
-#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+#if !defined(NDNBOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 #   define AUX778076_SPEC_NAME eval_if
-#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <ndnboost/mpl/bind.hpp>))
-#   include BOOST_PP_ITERATE()
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <ndnboost/mpl/bind.hpp>))
+#   include NDNBOOST_PP_ITERATE()
 #endif
 #endif
 
 // real C++ version is already taken care of
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+#if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE)
 
 namespace aux {
 // apply_count_args
 #define AUX778076_COUNT_ARGS_PREFIX bind
 #define AUX778076_COUNT_ARGS_DEFAULT na
-#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#define AUX778076_COUNT_ARGS_ARITY NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 #include <ndnboost/mpl/aux_/count_args.hpp>
 }
 
@@ -333,18 +333,18 @@
 {
 };
 
-BOOST_MPL_AUX_ARITY_SPEC(
-      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+NDNBOOST_MPL_AUX_ARITY_SPEC(
+      NDNBOOST_PP_INC(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY)
     , bind
     )
 
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
-      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
+      NDNBOOST_PP_INC(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY)
     , bind
     )
 
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 #   undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
 #   undef AUX778076_BIND_N_SPEC_PARAMS
@@ -356,31 +356,31 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_BIND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_BIND_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
+// NDNBOOST_PP_ITERATION_DEPTH test inside an #else clause.
+#else // NDNBOOST_PP_IS_ITERATING
+#if NDNBOOST_PP_ITERATION_DEPTH() == 1
 
-#   define i_ BOOST_PP_FRAME_ITERATION(1)
+#   define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 #if defined(AUX778076_SPEC_NAME)
 
 // lazy metafunction specialization
-template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
-struct BOOST_PP_CAT(quote,i_);
+template< template< NDNBOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
+struct NDNBOOST_PP_CAT(quote,i_);
 
-template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
+template< NDNBOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
 
 template<
       typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(bind,i_)< 
-      BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
+struct NDNBOOST_PP_CAT(bind,i_)< 
+      NDNBOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
     AUX778076_BIND_N_PARAMS(i_,T)
     >
 {
@@ -391,12 +391,12 @@
     {
      private:
         typedef mpl::arg<1> n1;
-#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <ndnboost/mpl/bind.hpp>))
-#       include BOOST_PP_ITERATE()
+#       define NDNBOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <ndnboost/mpl/bind.hpp>))
+#       include NDNBOOST_PP_ITERATE()
 
         typedef typename AUX778076_SPEC_NAME<
               typename t1::type
-            , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
+            , NDNBOOST_MPL_PP_EXT_PARAMS(2, NDNBOOST_PP_INC(i_), t)
             >::type f_;
 
      public:
@@ -411,7 +411,7 @@
 template<
       typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
     >
-struct BOOST_PP_CAT(bind,i_)
+struct NDNBOOST_PP_CAT(bind,i_)
 {
     template<
           AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
@@ -419,7 +419,7 @@
     struct apply
     {
      private:
-#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+#   if !defined(NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 
         typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
         typedef typename r0::type a0;
@@ -429,23 +429,23 @@
 #   else
         typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
 
-#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
+#   endif // NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 
 #   if i_ > 0
-#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <ndnboost/mpl/bind.hpp>))
-#       include BOOST_PP_ITERATE()
+#       define NDNBOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <ndnboost/mpl/bind.hpp>))
+#       include NDNBOOST_PP_ITERATE()
 #   endif
 
      public:
 
 #   define AUX778076_ARG(unused, i_, t) \
-    BOOST_PP_COMMA_IF(i_) \
-    typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    typename NDNBOOST_PP_CAT(t,NDNBOOST_PP_INC(i_))::type \
 /**/
 
-        typedef typename BOOST_PP_CAT(apply_wrap,i_)<
+        typedef typename NDNBOOST_PP_CAT(apply_wrap,i_)<
               f_ 
-            BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
+            NDNBOOST_PP_COMMA_IF(i_) NDNBOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
             >::type type;
 
 #   undef AUX778076_ARG
@@ -454,16 +454,16 @@
 
 namespace aux {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template<
       typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
     >
 struct resolve_bind_arg<
-      BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
+      NDNBOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
     >
 {
-    typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
+    typedef NDNBOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
     typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
 };
 
@@ -473,25 +473,25 @@
       typename F AUX778076_BIND_N_PARAMS(i_, typename T)
     >
 aux::yes_tag
-is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
+is_bind_helper(NDNBOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 } // namespace aux
 
-BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
+NDNBOOST_MPL_AUX_ARITY_SPEC(NDNBOOST_PP_INC(i_), NDNBOOST_PP_CAT(bind,i_))
+NDNBOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(NDNBOOST_PP_INC(i_), NDNBOOST_PP_CAT(bind,i_))
 
-#   if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   if !defined(NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE)
+#   if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
     
-#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#if i_ == NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 /// primary template (not a specialization!)
 template<
       typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
     >
 struct bind
-    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
+    : NDNBOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
 {
 };
 #else
@@ -499,12 +499,12 @@
       typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
     >
 struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
-    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
+    : NDNBOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
 {
 };
 #endif
 
-#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 namespace aux {
 
@@ -516,14 +516,14 @@
         >
     struct result_
     {
-        typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
+        typedef NDNBOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
     };
 };
 
 } // namespace aux
 
-#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#   endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
+#   endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   endif // NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE
 
 #endif // AUX778076_SPEC_NAME
 
@@ -531,21 +531,21 @@
 
 ///// iteration, depth == 2
 
-#elif BOOST_PP_ITERATION_DEPTH() == 2
+#elif NDNBOOST_PP_ITERATION_DEPTH() == 2
 
-#   define j_ BOOST_PP_FRAME_ITERATION(2)
-#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+#   define j_ NDNBOOST_PP_FRAME_ITERATION(2)
+#   if !defined(NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 
-        typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
-        typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
-        typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
-        typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
+        typedef aux::replace_unnamed_arg< NDNBOOST_PP_CAT(T,j_),NDNBOOST_PP_CAT(n,j_) > NDNBOOST_PP_CAT(r,j_);
+        typedef typename NDNBOOST_PP_CAT(r,j_)::type NDNBOOST_PP_CAT(a,j_);
+        typedef typename NDNBOOST_PP_CAT(r,j_)::next NDNBOOST_PP_CAT(n,NDNBOOST_PP_INC(j_));
+        typedef aux::resolve_bind_arg<NDNBOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> NDNBOOST_PP_CAT(t,j_);
         ///
 #   else
-        typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
+        typedef aux::resolve_bind_arg< NDNBOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> NDNBOOST_PP_CAT(t,j_);
 
 #   endif
 #   undef j_
 
-#endif // BOOST_PP_ITERATION_DEPTH()
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_ITERATION_DEPTH()
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/bind_fwd.hpp b/include/ndnboost/mpl/bind_fwd.hpp
index a837e3c..d89bcc5 100644
--- a/include/ndnboost/mpl/bind_fwd.hpp
+++ b/include/ndnboost/mpl/bind_fwd.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_BIND_FWD_HPP_INCLUDED
-#define BOOST_MPL_BIND_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BIND_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_BIND_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,17 +18,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/aux_/na.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/bind.hpp>
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -46,15 +46,15 @@
 
 // local macros, #undef-ined at the end of the header
 
-#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
+#   if defined(NDNBOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 #       define AUX778076_DMC_PARAM() , int dummy_ = 0
 #   else
 #       define AUX778076_DMC_PARAM()
 #   endif
 
 #   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
-    BOOST_MPL_PP_DEFAULT_PARAMS( \
-          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
+    NDNBOOST_MPL_PP_DEFAULT_PARAMS( \
+          NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY \
         , param \
         , value \
         ) \
@@ -62,38 +62,38 @@
     /**/
 
 #   define AUX778076_BIND_N_PARAMS(n, param) \
-    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
+    NDNBOOST_PP_COMMA_IF(n) NDNBOOST_MPL_PP_PARAMS(n, param) \
     AUX778076_DMC_PARAM() \
     /**/
 
-#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
+#if !defined(NDNBOOST_MPL_CFG_NO_BIND_TEMPLATE)
 template<
       typename F, AUX778076_BIND_DEFAULT_PARAMS(typename T, na)
     >
 struct bind;
 #endif
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/bind_fwd.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(0, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/bind_fwd.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 #   undef AUX778076_BIND_N_PARAMS
 #   undef AUX778076_BIND_DEFAULT_PARAMS
 #   undef AUX778076_DMC_PARAM
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_BIND_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_BIND_FWD_HPP_INCLUDED
 
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<
       typename F AUX778076_BIND_N_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(bind,i_);
+struct NDNBOOST_PP_CAT(bind,i_);
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/bool.hpp b/include/ndnboost/mpl/bool.hpp
index 670bb32..8be7033 100644
--- a/include/ndnboost/mpl/bool.hpp
+++ b/include/ndnboost/mpl/bool.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_BOOL_HPP_INCLUDED
-#define BOOST_MPL_BOOL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BOOL_HPP_INCLUDED
+#define NDNBOOST_MPL_BOOL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,22 +18,22 @@
 #include <ndnboost/mpl/integral_c_tag.hpp>
 #include <ndnboost/mpl/aux_/config/static_constant.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 template< bool C_ > struct bool_
 {
-    BOOST_STATIC_CONSTANT(bool, value = C_);
+    NDNBOOST_STATIC_CONSTANT(bool, value = C_);
     typedef integral_c_tag tag;
     typedef bool_ type;
     typedef bool value_type;
     operator bool() const { return this->value; }
 };
 
-#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
+#if !defined(NDNBOOST_NO_INCLASS_MEMBER_INITIALIZATION)
 template< bool C_ >
 bool const bool_<C_>::value;
 #endif
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
-#endif // BOOST_MPL_BOOL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_BOOL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/bool_fwd.hpp b/include/ndnboost/mpl/bool_fwd.hpp
index f00b798..c25cac4 100644
--- a/include/ndnboost/mpl/bool_fwd.hpp
+++ b/include/ndnboost/mpl/bool_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_BOOL_FWD_HPP_INCLUDED
-#define BOOST_MPL_BOOL_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_BOOL_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_BOOL_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,7 +16,7 @@
 
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 template< bool C_ > struct bool_;
 
@@ -24,10 +24,10 @@
 typedef bool_<true> true_;
 typedef bool_<false> false_;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
-BOOST_MPL_AUX_ADL_BARRIER_DECL(bool_)
-BOOST_MPL_AUX_ADL_BARRIER_DECL(true_)
-BOOST_MPL_AUX_ADL_BARRIER_DECL(false_)
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(bool_)
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(true_)
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(false_)
 
-#endif // BOOST_MPL_BOOL_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_BOOL_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/clear.hpp b/include/ndnboost/mpl/clear.hpp
index aeff306..11b49a2 100644
--- a/include/ndnboost/mpl/clear.hpp
+++ b/include/ndnboost/mpl/clear.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_CLEAR_HPP_INCLUDED
-#define BOOST_MPL_CLEAR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_CLEAR_HPP_INCLUDED
+#define NDNBOOST_MPL_CLEAR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,17 +23,17 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct clear
     : clear_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,clear,(Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,clear,(Sequence))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, clear)
+NDNBOOST_MPL_AUX_NA_SPEC(1, clear)
 
 }}
 
-#endif // BOOST_MPL_CLEAR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CLEAR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/clear_fwd.hpp b/include/ndnboost/mpl/clear_fwd.hpp
index 5c7199e..4d0daf2 100644
--- a/include/ndnboost/mpl/clear_fwd.hpp
+++ b/include/ndnboost/mpl/clear_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_CLEAR_FWD_HPP_INCLUDED
-#define BOOST_MPL_CLEAR_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_CLEAR_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_CLEAR_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_CLEAR_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CLEAR_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/comparison.hpp b/include/ndnboost/mpl/comparison.hpp
index 617ea5f..5afad1f 100644
--- a/include/ndnboost/mpl/comparison.hpp
+++ b/include/ndnboost/mpl/comparison.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_COMPARISON_HPP_INCLUDED
-#define BOOST_MPL_COMPARISON_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_COMPARISON_HPP_INCLUDED
+#define NDNBOOST_MPL_COMPARISON_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 #include <ndnboost/mpl/less_equal.hpp>
 #include <ndnboost/mpl/greater_equal.hpp>
 
-#endif // BOOST_MPL_COMPARISON_HPP_INCLUDED
+#endif // NDNBOOST_MPL_COMPARISON_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/contains.hpp b/include/ndnboost/mpl/contains.hpp
index bf41859..8395e8c 100644
--- a/include/ndnboost/mpl/contains.hpp
+++ b/include/ndnboost/mpl/contains.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_CONTAINS_HPP_INCLUDED
-#define BOOST_MPL_CONTAINS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_CONTAINS_HPP_INCLUDED
+#define NDNBOOST_MPL_CONTAINS_HPP_INCLUDED
 
 // Copyright Eric Friedman 2002
 // Copyright Aleksey Gurtovoy 2004
@@ -24,18 +24,18 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct contains
     : contains_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence,T >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,contains,(Sequence,T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,contains,(Sequence,T))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, contains)
+NDNBOOST_MPL_AUX_NA_SPEC(2, contains)
 
 }}
 
-#endif // BOOST_MPL_CONTAINS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CONTAINS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/contains_fwd.hpp b/include/ndnboost/mpl/contains_fwd.hpp
index 035936c..5b4c2df 100644
--- a/include/ndnboost/mpl/contains_fwd.hpp
+++ b/include/ndnboost/mpl/contains_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
-#define BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
 
 // Copyright Eric Friedman 2002
 // Copyright Aleksey Gurtovoy 2004
@@ -22,4 +22,4 @@
 
 }}
 
-#endif // BOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CONTAINS_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/copy.hpp b/include/ndnboost/mpl/copy.hpp
index 1e7ed64..c3e16c8 100644
--- a/include/ndnboost/mpl/copy.hpp
+++ b/include/ndnboost/mpl/copy.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_COPY_HPP_INCLUDED
-#define BOOST_MPL_COPY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_COPY_HPP_INCLUDED
+#define NDNBOOST_MPL_COPY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 // Copyright David Abrahams 2003-2004
@@ -51,8 +51,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(2, copy)
+NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(2, copy)
 
 }}
 
-#endif // BOOST_MPL_COPY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_COPY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/deref.hpp b/include/ndnboost/mpl/deref.hpp
index 07061f7..a5fc2ab 100644
--- a/include/ndnboost/mpl/deref.hpp
+++ b/include/ndnboost/mpl/deref.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_DEREF_HPP_INCLUDED
-#define BOOST_MPL_DEREF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_DEREF_HPP_INCLUDED
+#define NDNBOOST_MPL_DEREF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -22,20 +22,20 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Iterator)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Iterator)
     >
 struct deref
 {
-#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+#if !defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG)
     typedef typename Iterator::type type;
 #else
     typedef typename aux::msvc_type<Iterator>::type type;
 #endif
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,deref,(Iterator))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,deref,(Iterator))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, deref)
+NDNBOOST_MPL_AUX_NA_SPEC(1, deref)
 
 }}
 
-#endif // BOOST_MPL_DEREF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_DEREF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/distance.hpp b/include/ndnboost/mpl/distance.hpp
index 3f1ef4a..c5360f4 100644
--- a/include/ndnboost/mpl/distance.hpp
+++ b/include/ndnboost/mpl/distance.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_DISTANCE_HPP_INCLUDED
-#define BOOST_MPL_DISTANCE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_DISTANCE_HPP_INCLUDED
+#define NDNBOOST_MPL_DISTANCE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -34,7 +34,7 @@
 template< typename Tag > struct distance_impl
 {
     template< typename First, typename Last > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : aux::msvc_eti_base< typename iter_fold<
               iterator_range<First,Last>
             , mpl::long_<0>
@@ -49,7 +49,7 @@
             , next<>
             >::type type;
         
-        BOOST_STATIC_CONSTANT(long, value =
+        NDNBOOST_STATIC_CONSTANT(long, value =
               (iter_fold<
                   iterator_range<First,Last>
                 , mpl::long_<0>
@@ -61,18 +61,18 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(First)
-    , typename BOOST_MPL_AUX_NA_PARAM(Last)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(First)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(Last)
     >
 struct distance
     : distance_impl< typename tag<First>::type >
         ::template apply<First, Last>
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, distance, (First, Last))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2, distance, (First, Last))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, distance)
+NDNBOOST_MPL_AUX_NA_SPEC(2, distance)
 
 }}
 
-#endif // BOOST_MPL_DISTANCE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_DISTANCE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/distance_fwd.hpp b/include/ndnboost/mpl/distance_fwd.hpp
index d08d6d9..853e9b0 100644
--- a/include/ndnboost/mpl/distance_fwd.hpp
+++ b/include/ndnboost/mpl/distance_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
-#define BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,11 +18,11 @@
 
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_COMMON_NAME_WKND(distance)
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(distance)
 
 template< typename Tag > struct distance_impl;
 template< typename First, typename Last > struct distance;
 
 }}
 
-#endif // BOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_DISTANCE_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/empty_fwd.hpp b/include/ndnboost/mpl/empty_fwd.hpp
index a2a2164..c412814 100644
--- a/include/ndnboost/mpl/empty_fwd.hpp
+++ b/include/ndnboost/mpl/empty_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_EMPTY_FWD_HPP_INCLUDED
-#define BOOST_MPL_EMPTY_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_EMPTY_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_EMPTY_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_EMPTY_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_EMPTY_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/equal_to.hpp b/include/ndnboost/mpl/equal_to.hpp
index bd01f0c..1fa0ae7 100644
--- a/include/ndnboost/mpl/equal_to.hpp
+++ b/include/ndnboost/mpl/equal_to.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_EQUAL_TO_HPP_INCLUDED
-#define BOOST_MPL_EQUAL_TO_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_EQUAL_TO_HPP_INCLUDED
+#define NDNBOOST_MPL_EQUAL_TO_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN ==
 #include <ndnboost/mpl/aux_/comparison_op.hpp>
 
-#endif // BOOST_MPL_EQUAL_TO_HPP_INCLUDED
+#endif // NDNBOOST_MPL_EQUAL_TO_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/eval_if.hpp b/include/ndnboost/mpl/eval_if.hpp
index e9402ac..fc32fae 100644
--- a/include/ndnboost/mpl/eval_if.hpp
+++ b/include/ndnboost/mpl/eval_if.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_EVAL_IF_HPP_INCLUDED
-#define BOOST_MPL_EVAL_IF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_EVAL_IF_HPP_INCLUDED
+#define NDNBOOST_MPL_EVAL_IF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,14 +24,14 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(C)
-    , typename BOOST_MPL_AUX_NA_PARAM(F1)
-    , typename BOOST_MPL_AUX_NA_PARAM(F2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(C)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(F1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(F2)
     >
 struct eval_if
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
-     || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
-        && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) \
+     || ( NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, >= 0x0300) \
+        && NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, NDNBOOST_TESTED_AT(0x0304)) \
         )
 {
     typedef typename if_<C,F1,F2>::type f_;
@@ -40,7 +40,7 @@
     : if_<C,F1,F2>::type
 {
 #endif
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
 };
 
 // (almost) copy & paste in order to save one more 
@@ -51,9 +51,9 @@
     , typename F2
     >
 struct eval_if_c
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
-     || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
-        && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) \
+     || ( NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, >= 0x0300) \
+        && NDNBOOST_WORKAROUND(NDNBOOST_MPL_CFG_GCC, NDNBOOST_TESTED_AT(0x0304)) \
         )
 {
     typedef typename if_c<C,F1,F2>::type f_;
@@ -64,8 +64,8 @@
 #endif
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, eval_if)
+NDNBOOST_MPL_AUX_NA_SPEC(3, eval_if)
 
 }}
 
-#endif // BOOST_MPL_EVAL_IF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_EVAL_IF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/find.hpp b/include/ndnboost/mpl/find.hpp
index a4a2c08..011c1ea 100644
--- a/include/ndnboost/mpl/find.hpp
+++ b/include/ndnboost/mpl/find.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_FIND_HPP_INCLUDED
-#define BOOST_MPL_FIND_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_FIND_HPP_INCLUDED
+#define NDNBOOST_MPL_FIND_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2002
 //
@@ -22,17 +22,17 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct find
     : find_if< Sequence,same_as<T> >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find,(Sequence,T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,find,(Sequence,T))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, find)
+NDNBOOST_MPL_AUX_NA_SPEC(2, find)
 
 }}
 
-#endif // BOOST_MPL_FIND_HPP_INCLUDED
+#endif // NDNBOOST_MPL_FIND_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/find_if.hpp b/include/ndnboost/mpl/find_if.hpp
index 7d91bea..32f3aaf 100644
--- a/include/ndnboost/mpl/find_if.hpp
+++ b/include/ndnboost/mpl/find_if.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_FIND_IF_HPP_INCLUDED
-#define BOOST_MPL_FIND_IF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_FIND_IF_HPP_INCLUDED
+#define NDNBOOST_MPL_FIND_IF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,11 +23,11 @@
 
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_COMMON_NAME_WKND(find_if)
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(find_if)
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(Predicate)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(Predicate)
     >
 struct find_if
 {
@@ -40,11 +40,11 @@
 
     typedef typename second<result_>::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,find_if,(Sequence,Predicate))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,find_if,(Sequence,Predicate))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2,find_if)
+NDNBOOST_MPL_AUX_NA_SPEC(2,find_if)
 
 }}
 
-#endif // BOOST_MPL_FIND_IF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_FIND_IF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/fold.hpp b/include/ndnboost/mpl/fold.hpp
index b214b79..74ea561 100644
--- a/include/ndnboost/mpl/fold.hpp
+++ b/include/ndnboost/mpl/fold.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_FOLD_HPP_INCLUDED
-#define BOOST_MPL_FOLD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_FOLD_HPP_INCLUDED
+#define NDNBOOST_MPL_FOLD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 // Copyright David Abrahams 2001-2002
@@ -24,9 +24,9 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(State)
-    , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(State)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(ForwardOp)
     >
 struct fold
 {
@@ -38,11 +38,11 @@
         , ForwardOp
         >::state type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,fold,(Sequence,State,ForwardOp))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3,fold,(Sequence,State,ForwardOp))
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, fold)
+NDNBOOST_MPL_AUX_NA_SPEC(3, fold)
 
 }}
 
-#endif // BOOST_MPL_FOLD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_FOLD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/for_each.hpp b/include/ndnboost/mpl/for_each.hpp
index a98dc5b..eb72632 100644
--- a/include/ndnboost/mpl/for_each.hpp
+++ b/include/ndnboost/mpl/for_each.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_FOR_EACH_HPP_INCLUDED
-#define BOOST_MPL_FOR_EACH_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_FOR_EACH_HPP_INCLUDED
+#define NDNBOOST_MPL_FOR_EACH_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -92,7 +92,7 @@
 inline
 void for_each(F f, Sequence* = 0, TransformOp* = 0)
 {
-    BOOST_MPL_ASSERT(( is_sequence<Sequence> ));
+    NDNBOOST_MPL_ASSERT(( is_sequence<Sequence> ));
 
     typedef typename begin<Sequence>::type first;
     typedef typename end<Sequence>::type last;
@@ -113,4 +113,4 @@
 
 }}
 
-#endif // BOOST_MPL_FOR_EACH_HPP_INCLUDED
+#endif // NDNBOOST_MPL_FOR_EACH_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/front_fwd.hpp b/include/ndnboost/mpl/front_fwd.hpp
index 2de229a..c47c6ed 100644
--- a/include/ndnboost/mpl/front_fwd.hpp
+++ b/include/ndnboost/mpl/front_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_FRONT_FWD_HPP_INCLUDED
-#define BOOST_MPL_FRONT_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_FRONT_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_FRONT_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_FRONT_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_FRONT_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/front_inserter.hpp b/include/ndnboost/mpl/front_inserter.hpp
index 4476d1c..35061c7 100644
--- a/include/ndnboost/mpl/front_inserter.hpp
+++ b/include/ndnboost/mpl/front_inserter.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
-#define BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
+#define NDNBOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 // Copyright David Abrahams 2003-2004
@@ -30,4 +30,4 @@
 
 }}
 
-#endif // BOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_FRONT_INSERTER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/greater.hpp b/include/ndnboost/mpl/greater.hpp
index 53f5db0..3d61441 100644
--- a/include/ndnboost/mpl/greater.hpp
+++ b/include/ndnboost/mpl/greater.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_GREATER_HPP_INCLUDED
-#define BOOST_MPL_GREATER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_GREATER_HPP_INCLUDED
+#define NDNBOOST_MPL_GREATER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN >
 #include <ndnboost/mpl/aux_/comparison_op.hpp>
 
-#endif // BOOST_MPL_GREATER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_GREATER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/greater_equal.hpp b/include/ndnboost/mpl/greater_equal.hpp
index 0576e01..cd0a8e9 100644
--- a/include/ndnboost/mpl/greater_equal.hpp
+++ b/include/ndnboost/mpl/greater_equal.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
-#define BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
+#define NDNBOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN >=
 #include <ndnboost/mpl/aux_/comparison_op.hpp>
 
-#endif // BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/has_xxx.hpp b/include/ndnboost/mpl/has_xxx.hpp
index c7d491d..c885609 100644
--- a/include/ndnboost/mpl/has_xxx.hpp
+++ b/include/ndnboost/mpl/has_xxx.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_HAS_XXX_HPP_INCLUDED
-#define BOOST_MPL_HAS_XXX_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_HAS_XXX_HPP_INCLUDED
+#define NDNBOOST_MPL_HAS_XXX_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2006
 // Copyright David Abrahams 2002-2003
@@ -33,13 +33,13 @@
 #include <ndnboost/preprocessor/repetition/enum_params.hpp>
 #include <ndnboost/preprocessor/repetition/enum_trailing_params.hpp>
 
-#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
+#if NDNBOOST_WORKAROUND( __BORLANDC__, NDNBOOST_TESTED_AT(0x590) )
 # include <ndnboost/type_traits/is_class.hpp>
 #endif
 
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX)
+#if !defined(NDNBOOST_MPL_CFG_NO_HAS_XXX)
 
-#   if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#   if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
 
 // agurt, 11/sep/02: MSVC-specific version (< 7.1), based on a USENET 
 // newsgroup's posting by John Madsen (comp.lang.c++.moderated, 
@@ -55,7 +55,7 @@
 
 struct has_xxx_tag;
 
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
 template< typename U > struct msvc_incomplete_array
 {
     typedef char (&type)[sizeof(U) + 1];
@@ -69,7 +69,7 @@
     // type, it won't pick the second overload
     static char tester(...);
 
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
     template< typename U >
     static typename msvc_incomplete_array<U>::type tester(type_wrapper<U>);
 #else
@@ -77,7 +77,7 @@
     static char (& tester(type_wrapper<U>) )[sizeof(U)+1];
 #endif 
     
-    BOOST_STATIC_CONSTANT(bool, value = 
+    NDNBOOST_STATIC_CONSTANT(bool, value = 
           sizeof(tester(type_wrapper<T>())) == 1
         );
 };
@@ -85,21 +85,21 @@
 template<>
 struct msvc_is_incomplete<int>
 {
-    BOOST_STATIC_CONSTANT(bool, value = false);
+    NDNBOOST_STATIC_CONSTANT(bool, value = false);
 };
 
 }}}
 
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, default_) \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, default_) \
 template< typename T, typename name = ::ndnboost::mpl::aux::has_xxx_tag > \
-struct BOOST_PP_CAT(trait,_impl) : T \
+struct NDNBOOST_PP_CAT(trait,_impl) : T \
 { \
     static ndnboost::mpl::aux::no_tag \
     test(void(*)(::ndnboost::mpl::aux::has_xxx_tag)); \
     \
     static ndnboost::mpl::aux::yes_tag test(...); \
     \
-    BOOST_STATIC_CONSTANT(bool, value = \
+    NDNBOOST_STATIC_CONSTANT(bool, value = \
           sizeof(test(static_cast<void(*)(name)>(0))) \
             != sizeof(ndnboost::mpl::aux::no_tag) \
         ); \
@@ -111,43 +111,43 @@
     : ndnboost::mpl::if_c< \
           ndnboost::mpl::aux::msvc_is_incomplete<T>::value \
         , ndnboost::mpl::bool_<false> \
-        , BOOST_PP_CAT(trait,_impl)<T> \
+        , NDNBOOST_PP_CAT(trait,_impl)<T> \
         >::type \
 { \
 }; \
 \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, void) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, bool) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, char) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed char) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned char) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed short) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned short) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed int) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned int) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed long) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned long) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, float) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, double) \
-BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, long double) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, void) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, bool) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, char) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed char) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned char) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed short) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned short) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed int) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned int) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, signed long) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, unsigned long) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, float) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, double) \
+NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, long double) \
 /**/
 
-#   define BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, T) \
+#   define NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, T) \
 template<> struct trait<T> \
 { \
-    BOOST_STATIC_CONSTANT(bool, value = false); \
+    NDNBOOST_STATIC_CONSTANT(bool, value = false); \
     typedef ndnboost::mpl::bool_<false> type; \
 }; \
 /**/
 
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
-    BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
-    BOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, wchar_t) \
+#if !defined(NDNBOOST_NO_INTRINSIC_WCHAR_T)
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
+    NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
+    NDNBOOST_MPL_AUX_HAS_XXX_TRAIT_SPEC(trait, wchar_t) \
 /**/
 #else
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
-    BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, unused) \
+    NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF_(trait, name, unused) \
 /**/
 #endif
 
@@ -155,8 +155,8 @@
 // SFINAE-based implementations below are derived from a USENET newsgroup's 
 // posting by Rani Sharoni (comp.lang.c++.moderated, 2002-03-17 07:45:09 PST)
 
-#   elif BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
-      || BOOST_WORKAROUND(__IBMCPP__, <= 700)
+#   elif NDNBOOST_WORKAROUND(NDNBOOST_MSVC, NDNBOOST_TESTED_AT(1400)) \
+      || NDNBOOST_WORKAROUND(__IBMCPP__, <= 700)
 
 // MSVC 7.1+ & VACPP
 
@@ -164,44 +164,44 @@
 // applied to partial specialization to fix some apparently random failures 
 // (thanks to Daniel Wallin for researching this!)
 
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
 template< typename T > \
-struct BOOST_PP_CAT(trait, _msvc_sfinae_helper) \
+struct NDNBOOST_PP_CAT(trait, _msvc_sfinae_helper) \
 { \
     typedef void type; \
 };\
 \
 template< typename T, typename U = void > \
-struct BOOST_PP_CAT(trait,_impl_) \
+struct NDNBOOST_PP_CAT(trait,_impl_) \
 { \
-    BOOST_STATIC_CONSTANT(bool, value = false); \
+    NDNBOOST_STATIC_CONSTANT(bool, value = false); \
     typedef ndnboost::mpl::bool_<value> type; \
 }; \
 \
 template< typename T > \
-struct BOOST_PP_CAT(trait,_impl_)< \
+struct NDNBOOST_PP_CAT(trait,_impl_)< \
       T \
-    , typename BOOST_PP_CAT(trait, _msvc_sfinae_helper)< typename T::name >::type \
+    , typename NDNBOOST_PP_CAT(trait, _msvc_sfinae_helper)< typename T::name >::type \
     > \
 { \
-    BOOST_STATIC_CONSTANT(bool, value = true); \
+    NDNBOOST_STATIC_CONSTANT(bool, value = true); \
     typedef ndnboost::mpl::bool_<value> type; \
 }; \
 \
 template< typename T, typename fallback_ = ndnboost::mpl::bool_<default_> > \
 struct trait \
-    : BOOST_PP_CAT(trait,_impl_)<T> \
+    : NDNBOOST_PP_CAT(trait,_impl_)<T> \
 { \
 }; \
 /**/
 
-#   elif BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x590) )
+#   elif NDNBOOST_WORKAROUND( __BORLANDC__, NDNBOOST_TESTED_AT(0x590) )
 
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF(trait, trait_tester, name, default_) \
 template< typename T, bool IS_CLASS > \
 struct trait_tester \
 { \
-    BOOST_STATIC_CONSTANT( bool,  value = false ); \
+    NDNBOOST_STATIC_CONSTANT( bool,  value = false ); \
 }; \
 template< typename T > \
 struct trait_tester< T, true > \
@@ -214,25 +214,25 @@
         static char resolve( ... ); \
     }; \
     typedef ndnboost::mpl::aux::type_wrapper<T> t_; \
-    BOOST_STATIC_CONSTANT( bool, value = ( sizeof( trait_tester_impl::resolve( static_cast< t_ * >(0) ) ) == sizeof(int) ) ); \
+    NDNBOOST_STATIC_CONSTANT( bool, value = ( sizeof( trait_tester_impl::resolve( static_cast< t_ * >(0) ) ) == sizeof(int) ) ); \
 }; \
 template< typename T, typename fallback_ = ndnboost::mpl::bool_<default_> > \
 struct trait           \
 {                      \
-    BOOST_STATIC_CONSTANT( bool, value = (trait_tester< T, ndnboost::is_class< T >::value >::value) );     \
+    NDNBOOST_STATIC_CONSTANT( bool, value = (trait_tester< T, ndnboost::is_class< T >::value >::value) );     \
     typedef ndnboost::mpl::bool_< trait< T, fallback_ >::value > type; \
 };
 
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
-    BOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF( trait \
-                                         , BOOST_PP_CAT(trait,_tester)      \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+    NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_BCB_DEF( trait \
+                                         , NDNBOOST_PP_CAT(trait,_tester)      \
                                          , name       \
                                          , default_ ) \
 /**/
 
 #   else // other SFINAE-capable compilers
 
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
 template< typename T, typename fallback_ = ndnboost::mpl::bool_<default_> > \
 struct trait \
 { \
@@ -241,14 +241,14 @@
         template< typename U > \
         static ndnboost::mpl::aux::yes_tag test( \
               ndnboost::mpl::aux::type_wrapper<U> const volatile* \
-            , ndnboost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME U::name>* = 0 \
+            , ndnboost::mpl::aux::type_wrapper<NDNBOOST_MSVC_TYPENAME U::name>* = 0 \
             ); \
     \
         static ndnboost::mpl::aux::no_tag test(...); \
     }; \
     \
     typedef ndnboost::mpl::aux::type_wrapper<T> t_; \
-    BOOST_STATIC_CONSTANT(bool, value = \
+    NDNBOOST_STATIC_CONSTANT(bool, value = \
           sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) \
             == sizeof(ndnboost::mpl::aux::yes_tag) \
         ); \
@@ -256,30 +256,30 @@
 }; \
 /**/
 
-#   endif // BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#   endif // NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
 
 
-#else // BOOST_MPL_CFG_NO_HAS_XXX
+#else // NDNBOOST_MPL_CFG_NO_HAS_XXX
 
 // placeholder implementation
 
-#   define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
+#   define NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_) \
 template< typename T, typename fallback_ = ndnboost::mpl::bool_<default_> > \
 struct trait \
 { \
-    BOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
+    NDNBOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
     typedef fallback_ type; \
 }; \
 /**/
 
 #endif
 
-#define BOOST_MPL_HAS_XXX_TRAIT_DEF(name) \
-    BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(has_,name), name, false) \
+#define NDNBOOST_MPL_HAS_XXX_TRAIT_DEF(name) \
+    NDNBOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(NDNBOOST_PP_CAT(has_,name), name, false) \
 /**/
 
 
-#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
+#if !defined(NDNBOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
 
 // Create a boolean Metafunction to detect a nested template
 // member. This implementation is based on a USENET newsgroup's
@@ -287,21 +287,21 @@
 // Rani Sharoni's USENET posting cited above, the non-template has_xxx
 // implementations above, and discussion on the Boost mailing list.
 
-#   if !defined(BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES)
-#     if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-#       define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES 1
+#   if !defined(NDNBOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES)
+#     if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1400)
+#       define NDNBOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES 1
 #     endif
 #   endif
 
-#   if !defined(BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION)
-#     if (defined(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS))
-#       define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION 1
+#   if !defined(NDNBOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION)
+#     if (defined(NDNBOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS))
+#       define NDNBOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION 1
 #     endif
 #   endif
 
-#   if !defined(BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE)
-#     if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-#       define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE 1
+#   if !defined(NDNBOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE)
+#     if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1400)
+#       define NDNBOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE 1
 #     endif
 #   endif
 
@@ -309,98 +309,98 @@
 // array argument called args which is of the following form.
 //           ( 4, ( trait, name, max_arity, default_ ) )
 
-#   define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
-      BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _introspect) \
+#   define NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
+      NDNBOOST_PP_CAT(NDNBOOST_PP_ARRAY_ELEM(0, args) , _introspect) \
     /**/
 
-#   define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
-      BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _substitute), n) \
+#   define NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
+      NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(NDNBOOST_PP_ARRAY_ELEM(0, args) , _substitute), n) \
     /**/
 
-#   define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) \
-      BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _test) \
+#   define NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) \
+      NDNBOOST_PP_CAT(NDNBOOST_PP_ARRAY_ELEM(0, args) , _test) \
     /**/
 
 // Thanks to Guillaume Melquiond for pointing out the need for the
 // "substitute" template as an argument to the overloaded test
 // functions to get SFINAE to work for member templates with the
 // correct name but different number of arguments.
-#   define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args) \
+#   define NDNBOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args) \
       template< \
-          template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename V) > class V \
+          template< NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_INC(n), typename V) > class V \
        > \
-      struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { \
+      struct NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) { \
       }; \
     /**/
 
-#   define BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) \
-      BOOST_PP_REPEAT( \
-          BOOST_PP_ARRAY_ELEM(2, args) \
-        , BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE \
+#   define NDNBOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) \
+      NDNBOOST_PP_REPEAT( \
+          NDNBOOST_PP_ARRAY_ELEM(2, args) \
+        , NDNBOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE \
         , args \
       ) \
     /**/
 
-#   if !BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION
-#     define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
+#   if !NDNBOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION
+#     define NDNBOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
         template< typename V > \
         static ndnboost::mpl::aux::no_tag \
-        BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \
+        NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \
       /**/
 #   else
-#     define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
+#     define NDNBOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
         static ndnboost::mpl::aux::no_tag \
-        BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \
+        NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)(...); \
       /**/
 #   endif
 
-#   if !BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES
-#     define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT(z, n, args) \
+#   if !NDNBOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES
+#     define NDNBOOST_MPL_HAS_MEMBER_MULTI_ACCEPT(z, n, args) \
         template< typename V > \
         static ndnboost::mpl::aux::yes_tag \
-        BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
+        NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
             ndnboost::mpl::aux::type_wrapper< V > const volatile* \
-          , BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) < \
-                V::template BOOST_PP_ARRAY_ELEM(1, args) \
+          , NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) < \
+                V::template NDNBOOST_PP_ARRAY_ELEM(1, args) \
             >* = 0 \
         ); \
       /**/
-#     define BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
-        BOOST_PP_REPEAT( \
-            BOOST_PP_ARRAY_ELEM(2, args) \
-          , BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT \
+#     define NDNBOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
+        NDNBOOST_PP_REPEAT( \
+            NDNBOOST_PP_ARRAY_ELEM(2, args) \
+          , NDNBOOST_MPL_HAS_MEMBER_MULTI_ACCEPT \
           , args \
         ) \
       /**/
 #   else
-#     define BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
+#     define NDNBOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
         template< typename V > \
         static ndnboost::mpl::aux::yes_tag \
-        BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
+        NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
             V const volatile* \
           , member_macro(args, V, T)* = 0 \
         ); \
       /**/
 #   endif
 
-#   if !BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION
-#     define BOOST_MPL_HAS_MEMBER_TEST(args) \
-          sizeof(BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U >(0)) \
+#   if !NDNBOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION
+#     define NDNBOOST_MPL_HAS_MEMBER_TEST(args) \
+          sizeof(NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U >(0)) \
               == sizeof(ndnboost::mpl::aux::yes_tag) \
       /**/
 #   else
-#     if !BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES
-#       define BOOST_MPL_HAS_MEMBER_TEST(args) \
+#     if !NDNBOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES
+#       define NDNBOOST_MPL_HAS_MEMBER_TEST(args) \
           sizeof( \
-              BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
+              NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
                   static_cast< ndnboost::mpl::aux::type_wrapper< U >* >(0) \
               ) \
           ) == sizeof(ndnboost::mpl::aux::yes_tag) \
         /**/
 #     else
-#       define BOOST_MPL_HAS_MEMBER_TEST(args) \
+#       define NDNBOOST_MPL_HAS_MEMBER_TEST(args) \
           sizeof( \
-              BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
+              NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)( \
                   static_cast< U* >(0) \
               ) \
           ) == sizeof(ndnboost::mpl::aux::yes_tag) \
@@ -408,233 +408,233 @@
 #     endif
 #   endif
 
-#   define BOOST_MPL_HAS_MEMBER_INTROSPECT( \
+#   define NDNBOOST_MPL_HAS_MEMBER_INTROSPECT( \
                args, substitute_macro, member_macro \
            ) \
       template< typename U > \
-      struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) { \
-          BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) \
-          BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
-          BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
-          BOOST_STATIC_CONSTANT( \
-              bool, value = BOOST_MPL_HAS_MEMBER_TEST(args) \
+      struct NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) { \
+          NDNBOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro) \
+          NDNBOOST_MPL_HAS_MEMBER_REJECT(args, member_macro) \
+          NDNBOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro) \
+          NDNBOOST_STATIC_CONSTANT( \
+              bool, value = NDNBOOST_MPL_HAS_MEMBER_TEST(args) \
           ); \
           typedef ndnboost::mpl::bool_< value > type; \
       }; \
     /**/
 
-#   define BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
+#   define NDNBOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
                args, introspect_macro, substitute_macro, member_macro \
            ) \
       template< \
           typename T \
         , typename fallback_ \
-              = ndnboost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > \
+              = ndnboost::mpl::bool_< NDNBOOST_PP_ARRAY_ELEM(3, args) > \
       > \
-      class BOOST_PP_ARRAY_ELEM(0, args) { \
+      class NDNBOOST_PP_ARRAY_ELEM(0, args) { \
           introspect_macro(args, substitute_macro, member_macro) \
       public: \
           static const bool value \
-              = BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::value; \
-          typedef typename BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< \
+              = NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< T >::value; \
+          typedef typename NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)< \
               T \
           >::type type; \
       }; \
     /**/
 
-// BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE expands to the full
+// NDNBOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE expands to the full
 // implementation of the function-based metafunction. Compile with -E
 // to see the preprocessor output for this macro.
-#   define BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( \
+#   define NDNBOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( \
                args, substitute_macro, member_macro \
            ) \
-      BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
+      NDNBOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
           args \
-        , BOOST_MPL_HAS_MEMBER_INTROSPECT \
+        , NDNBOOST_MPL_HAS_MEMBER_INTROSPECT \
         , substitute_macro \
         , member_macro \
       ) \
     /**/
 
-#   if BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE
+#   if NDNBOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE
 
-#     if !defined(BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE)
-#       if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-#         define BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE 1
+#     if !defined(NDNBOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE)
+#       if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1400)
+#         define NDNBOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE 1
 #       endif
 #     endif
 
-#     if !BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE
-#       define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
+#     if !NDNBOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE
+#       define NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
                    args, n \
                ) \
-          BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
+          NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
         /**/
 #     else
-#       define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
+#       define NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
                    args, n \
                ) \
-          BOOST_PP_CAT( \
+          NDNBOOST_PP_CAT( \
               boost_mpl_has_xxx_ \
-            , BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
+            , NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n) \
           ) \
         /**/
 #     endif
 
-#     define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME( \
+#     define NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME( \
                  args \
              ) \
-        BOOST_PP_CAT( \
-            BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
+        NDNBOOST_PP_CAT( \
+            NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
                 args, 0 \
             ) \
           , _tag \
         ) \
       /**/
 
-#     define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
+#     define NDNBOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
                  z, n, args \
              ) \
         template< \
-             template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename U) > class U \
+             template< NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_INC(n), typename U) > class U \
         > \
-        struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
+        struct NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
                 args, n \
                ) { \
             typedef \
-                BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
+                NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
                 type; \
         }; \
       /**/
 
-#     define BOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
+#     define NDNBOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
                  args, substitute_macro \
              ) \
         typedef void \
-            BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args); \
-        BOOST_PP_REPEAT( \
-            BOOST_PP_ARRAY_ELEM(2, args) \
-          , BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE \
+            NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args); \
+        NDNBOOST_PP_REPEAT( \
+            NDNBOOST_PP_ARRAY_ELEM(2, args) \
+          , NDNBOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE_WITH_TEMPLATE_SFINAE \
           , args \
         ) \
       /**/
 
-#     define BOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE( \
+#     define NDNBOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE( \
                  args, member_macro \
              ) \
         template< \
             typename U \
           , typename V \
-                = BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
+                = NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_TAG_NAME(args) \
         > \
-        struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) { \
-            BOOST_STATIC_CONSTANT(bool, value = false); \
+        struct NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args) { \
+            NDNBOOST_STATIC_CONSTANT(bool, value = false); \
             typedef ndnboost::mpl::bool_< value > type; \
         }; \
       /**/
 
-#     define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT_WITH_TEMPLATE_SFINAE( \
+#     define NDNBOOST_MPL_HAS_MEMBER_MULTI_ACCEPT_WITH_TEMPLATE_SFINAE( \
                  z, n, args \
              ) \
         template< typename U > \
-        struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< \
+        struct NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< \
             U \
           , typename \
-                BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
+                NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME_WITH_TEMPLATE_SFINAE( \
                     args, n \
                 )< \
-                    BOOST_MSVC_TYPENAME U::BOOST_PP_ARRAY_ELEM(1, args)< > \
+                    NDNBOOST_MSVC_TYPENAME U::NDNBOOST_PP_ARRAY_ELEM(1, args)< > \
                 >::type \
         > { \
-            BOOST_STATIC_CONSTANT(bool, value = true); \
+            NDNBOOST_STATIC_CONSTANT(bool, value = true); \
             typedef ndnboost::mpl::bool_< value > type; \
         }; \
       /**/
 
-#     define BOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE( \
+#     define NDNBOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE( \
                  args, member_macro \
              ) \
-        BOOST_PP_REPEAT( \
-            BOOST_PP_ARRAY_ELEM(2, args) \
-          , BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT_WITH_TEMPLATE_SFINAE \
+        NDNBOOST_PP_REPEAT( \
+            NDNBOOST_PP_ARRAY_ELEM(2, args) \
+          , NDNBOOST_MPL_HAS_MEMBER_MULTI_ACCEPT_WITH_TEMPLATE_SFINAE \
           , args \
         ) \
       /**/
 
-#     define BOOST_MPL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE( \
+#     define NDNBOOST_MPL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE( \
                  args, substitute_macro, member_macro \
              ) \
-        BOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE(args, member_macro) \
-        BOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE(args, member_macro) \
+        NDNBOOST_MPL_HAS_MEMBER_REJECT_WITH_TEMPLATE_SFINAE(args, member_macro) \
+        NDNBOOST_MPL_HAS_MEMBER_ACCEPT_WITH_TEMPLATE_SFINAE(args, member_macro) \
         template< typename U > \
-        struct BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
-            : BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U > { \
+        struct NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args) \
+            : NDNBOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)< U > { \
         }; \
       /**/
  
-// BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE expands to the full
+// NDNBOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE expands to the full
 // implementation of the template-based metafunction. Compile with -E
 // to see the preprocessor output for this macro.
 //
-// Note that if BOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE is
-// defined BOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE needs
+// Note that if NDNBOOST_MPL_HAS_XXX_NEEDS_NAMESPACE_LEVEL_SUBSTITUTE is
+// defined NDNBOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE needs
 // to be expanded at namespace level before
-// BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE can be used.
-#     define BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE( \
+// NDNBOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE can be used.
+#     define NDNBOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE( \
                  args, substitute_macro, member_macro \
              ) \
-        BOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
+        NDNBOOST_MPL_HAS_MEMBER_SUBSTITUTE_WITH_TEMPLATE_SFINAE( \
             args, substitute_macro \
         ) \
-        BOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
+        NDNBOOST_MPL_HAS_MEMBER_IMPLEMENTATION( \
             args \
-          , BOOST_MPL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE \
+          , NDNBOOST_MPL_HAS_MEMBER_INTROSPECT_WITH_TEMPLATE_SFINAE \
           , substitute_macro \
           , member_macro \
         ) \
       /**/
 
-#   endif // BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE
+#   endif // NDNBOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE
 
 // Note: In the current implementation the parameter and access macros
 // are no longer expanded.
-#   if !BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
-#     define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
-        BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( \
-            ( 4, ( trait, name, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
-          , BOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
-          , BOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
+#   if !NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1400)
+#     define NDNBOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
+        NDNBOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE( \
+            ( 4, ( trait, name, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
+          , NDNBOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
+          , NDNBOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
         ) \
       /**/
 #   else
-#     define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
-        BOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE( \
-            ( 4, ( trait, name, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
-          , BOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
-          , BOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
+#     define NDNBOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
+        NDNBOOST_MPL_HAS_MEMBER_WITH_TEMPLATE_SFINAE( \
+            ( 4, ( trait, name, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
+          , NDNBOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
+          , NDNBOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
         ) \
       /**/
 #   endif
 
-#else // BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+#else // NDNBOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
 
 // placeholder implementation
 
-#   define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
+#   define NDNBOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_) \
       template< typename T \
               , typename fallback_ = ndnboost::mpl::bool_< default_ > > \
       struct trait { \
-          BOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
+          NDNBOOST_STATIC_CONSTANT(bool, value = fallback_::value); \
           typedef fallback_ type; \
       }; \
     /**/
 
-#endif // BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+#endif // NDNBOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
 
-#   define BOOST_MPL_HAS_XXX_TEMPLATE_DEF(name) \
-      BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF( \
-          BOOST_PP_CAT(has_, name), name, false \
+#   define NDNBOOST_MPL_HAS_XXX_TEMPLATE_DEF(name) \
+      NDNBOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF( \
+          NDNBOOST_PP_CAT(has_, name), name, false \
       ) \
     /**/
 
-#endif // BOOST_MPL_HAS_XXX_HPP_INCLUDED
+#endif // NDNBOOST_MPL_HAS_XXX_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/identity.hpp b/include/ndnboost/mpl/identity.hpp
index 88391df..9e9207f 100644
--- a/include/ndnboost/mpl/identity.hpp
+++ b/include/ndnboost/mpl/identity.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_IDENTITY_HPP_INCLUDED
-#define BOOST_MPL_IDENTITY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_IDENTITY_HPP_INCLUDED
+#define NDNBOOST_MPL_IDENTITY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -20,26 +20,26 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct identity
 {
     typedef T type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, identity, (T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, identity, (T))
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct make_identity
 {
     typedef identity<T> type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, make_identity, (T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, make_identity, (T))
 };
 
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, make_identity)
+NDNBOOST_MPL_AUX_NA_SPEC_NO_ETI(1, identity)
+NDNBOOST_MPL_AUX_NA_SPEC_NO_ETI(1, make_identity)
 
 }}
 
-#endif // BOOST_MPL_IDENTITY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_IDENTITY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/if.hpp b/include/ndnboost/mpl/if.hpp
index a19b4a9..c74be5f 100644
--- a/include/ndnboost/mpl/if.hpp
+++ b/include/ndnboost/mpl/if.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_IF_HPP_INCLUDED
-#define BOOST_MPL_IF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_IF_HPP_INCLUDED
+#define NDNBOOST_MPL_IF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,7 +24,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template<
       bool C
@@ -48,19 +48,19 @@
 // agurt, 05/sep/04: nondescriptive parameter names for the sake of DigitalMars
 // (and possibly MWCW < 8.0); see http://article.gmane.org/gmane.comp.lib.boost.devel/108959
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
-    , typename BOOST_MPL_AUX_NA_PARAM(T3)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T3)
     >
 struct if_
 {
  private:
     // agurt, 02/jan/03: two-step 'type' definition for the sake of aCC 
     typedef if_c<
-#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS)
-          BOOST_MPL_AUX_VALUE_WKND(T1)::value
+#if defined(NDNBOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS)
+          NDNBOOST_MPL_AUX_VALUE_WKND(T1)::value
 #else
-          BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value)
+          NDNBOOST_MPL_AUX_STATIC_CAST(bool, NDNBOOST_MPL_AUX_VALUE_WKND(T1)::value)
 #endif
         , T2
         , T3
@@ -69,7 +69,7 @@
  public:
     typedef typename almost_type_::type type;
     
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3))
 };
 
 #else
@@ -112,24 +112,24 @@
 // (almost) copy & paste in order to save one more 
 // recursively nested template instantiation to user
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(C_)
-    , typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(C_)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct if_
 {
-    enum { msvc_wknd_ = BOOST_MPL_AUX_MSVC_VALUE_WKND(C_)::value };
+    enum { msvc_wknd_ = NDNBOOST_MPL_AUX_MSVC_VALUE_WKND(C_)::value };
 
-    typedef typename aux::if_impl< BOOST_MPL_AUX_STATIC_CAST(bool, msvc_wknd_) >
+    typedef typename aux::if_impl< NDNBOOST_MPL_AUX_STATIC_CAST(bool, msvc_wknd_) >
         ::template result_<T1,T2>::type type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C_,T1,T2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(C_,T1,T2))
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-BOOST_MPL_AUX_NA_SPEC(3, if_)
+NDNBOOST_MPL_AUX_NA_SPEC(3, if_)
 
 }}
 
-#endif // BOOST_MPL_IF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_IF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/inserter.hpp b/include/ndnboost/mpl/inserter.hpp
index 97a54ba..7bceba1 100644
--- a/include/ndnboost/mpl/inserter.hpp
+++ b/include/ndnboost/mpl/inserter.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_INSERTER_HPP_INCLUDED
-#define BOOST_MPL_INSERTER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_INSERTER_HPP_INCLUDED
+#define NDNBOOST_MPL_INSERTER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 // Copyright David Abrahams 2003-2004
@@ -29,4 +29,4 @@
 
 }}
 
-#endif // BOOST_MPL_INSERTER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_INSERTER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/int.hpp b/include/ndnboost/mpl/int.hpp
index 510ee6e..05f6997 100644
--- a/include/ndnboost/mpl/int.hpp
+++ b/include/ndnboost/mpl/int.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_INT_HPP_INCLUDED
-#define BOOST_MPL_INT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_INT_HPP_INCLUDED
+#define NDNBOOST_MPL_INT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -19,4 +19,4 @@
 #define AUX_WRAPPER_VALUE_TYPE int
 #include <ndnboost/mpl/aux_/integral_wrapper.hpp>
 
-#endif // BOOST_MPL_INT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_INT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/int_fwd.hpp b/include/ndnboost/mpl/int_fwd.hpp
index f7b42e2..ab30247 100644
--- a/include/ndnboost/mpl/int_fwd.hpp
+++ b/include/ndnboost/mpl/int_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_INT_FWD_HPP_INCLUDED
-#define BOOST_MPL_INT_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_INT_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_INT_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,11 +17,11 @@
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 #include <ndnboost/mpl/aux_/nttp_decl.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct int_;
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) > struct int_;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(int_)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(int_)
 
-#endif // BOOST_MPL_INT_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_INT_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/integral_c.hpp b/include/ndnboost/mpl/integral_c.hpp
index 166fedd..9c9fa91 100644
--- a/include/ndnboost/mpl/integral_c.hpp
+++ b/include/ndnboost/mpl/integral_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
-#define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+#define NDNBOOST_MPL_INTEGRAL_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2006
 //
@@ -19,7 +19,7 @@
 #include <ndnboost/mpl/aux_/config/static_constant.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-#if BOOST_WORKAROUND(__HP_aCC, <= 53800)
+#if NDNBOOST_WORKAROUND(__HP_aCC, <= 53800)
 // the type of non-type template arguments may not depend on template arguments
 #   define AUX_WRAPPER_PARAMS(N) typename T, long N
 #else
@@ -32,20 +32,20 @@
 #include <ndnboost/mpl/aux_/integral_wrapper.hpp>
 
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- && !BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !NDNBOOST_WORKAROUND(__BORLANDC__, <= 0x551)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 // 'bool' constant doesn't have 'next'/'prior' members
 template< bool C >
 struct integral_c<bool, C>
 {
-    BOOST_STATIC_CONSTANT(bool, value = C);
+    NDNBOOST_STATIC_CONSTANT(bool, value = C);
     typedef integral_c_tag tag;
     typedef integral_c type;
     typedef bool value_type;
     operator bool() const { return this->value; }
 };
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 #endif
 
-#endif // BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_INTEGRAL_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/integral_c_fwd.hpp b/include/ndnboost/mpl/integral_c_fwd.hpp
index 91d4b6b..1eaec64 100644
--- a/include/ndnboost/mpl/integral_c_fwd.hpp
+++ b/include/ndnboost/mpl/integral_c_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
-#define BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2006
 //
@@ -17,16 +17,16 @@
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
-#if BOOST_WORKAROUND(__HP_aCC, <= 53800)
+#if NDNBOOST_WORKAROUND(__HP_aCC, <= 53800)
 // the type of non-type template arguments may not depend on template arguments
 template< typename T, long N > struct integral_c;
 #else
 template< typename T, T N > struct integral_c;
 #endif
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c)
 
-#endif // BOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_INTEGRAL_C_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/integral_c_tag.hpp b/include/ndnboost/mpl/integral_c_tag.hpp
index 54c83ac..a5d2aa7 100644
--- a/include/ndnboost/mpl/integral_c_tag.hpp
+++ b/include/ndnboost/mpl/integral_c_tag.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
-#define BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -18,9 +18,9 @@
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 #include <ndnboost/mpl/aux_/config/static_constant.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
-struct integral_c_tag { BOOST_STATIC_CONSTANT(int, value = 0); };
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c_tag)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+struct integral_c_tag { NDNBOOST_STATIC_CONSTANT(int, value = 0); };
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(integral_c_tag)
 
-#endif // BOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_INTEGRAL_C_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/is_placeholder.hpp b/include/ndnboost/mpl/is_placeholder.hpp
index 0e29891..93f9653 100644
--- a/include/ndnboost/mpl/is_placeholder.hpp
+++ b/include/ndnboost/mpl/is_placeholder.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
-#define BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
+#define NDNBOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -24,7 +24,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< typename T >
 struct is_placeholder
@@ -32,7 +32,7 @@
 {
 };
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) >
 struct is_placeholder< arg<N> >
     : bool_<true>
 {
@@ -44,7 +44,7 @@
 
 aux::no_tag is_placeholder_helper(...);
 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N) >
 aux::yes_tag is_placeholder_helper(aux::type_wrapper< arg<N> >*);
 
 } // namespace aux
@@ -53,15 +53,15 @@
 struct is_placeholder
 {
     static aux::type_wrapper<T>* get();
-    BOOST_STATIC_CONSTANT(bool, value = 
+    NDNBOOST_STATIC_CONSTANT(bool, value = 
           sizeof(aux::is_placeholder_helper(get())) == sizeof(aux::yes_tag)
         );
     
     typedef bool_<value> type;
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 }}
 
-#endif // BOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
+#endif // NDNBOOST_MPL_IS_PLACEHOLDER_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/is_sequence.hpp b/include/ndnboost/mpl/is_sequence.hpp
index a192da6..24111bf 100644
--- a/include/ndnboost/mpl/is_sequence.hpp
+++ b/include/ndnboost/mpl/is_sequence.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_IS_SEQUENCE_HPP_INCLUDED
-#define BOOST_MPL_IS_SEQUENCE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_IS_SEQUENCE_HPP_INCLUDED
+#define NDNBOOST_MPL_IS_SEQUENCE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2002-2004
 //
@@ -29,9 +29,9 @@
 #include <ndnboost/mpl/aux_/config/eti.hpp>
 #include <ndnboost/mpl/aux_/config/msvc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
 #   include <ndnboost/mpl/aux_/msvc_is_class.hpp>
-#elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#elif NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
 #   include <ndnboost/type_traits/is_class.hpp>
 #endif
 
@@ -39,7 +39,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
 
 namespace aux {
 
@@ -59,11 +59,11 @@
 } // namespace aux
         
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct is_sequence
     : if_<
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
           aux::msvc_is_class<T> 
 #else
           ndnboost::is_class<T> 
@@ -72,13 +72,13 @@
         , bool_<false>
         >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_sequence, (T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_sequence, (T))
 };
 
-#elif defined(BOOST_MPL_CFG_NO_HAS_XXX)
+#elif defined(NDNBOOST_MPL_CFG_NO_HAS_XXX)
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct is_sequence
     : bool_<false>
@@ -88,25 +88,25 @@
 #else
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct is_sequence
     : not_< is_same< typename begin<T>::type, void_ > >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_sequence, (T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, is_sequence, (T))
 };
 
-#endif // BOOST_MSVC
+#endif // NDNBOOST_MSVC
 
-#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
+#if defined(NDNBOOST_MPL_CFG_MSVC_60_ETI_BUG)
 template<> struct is_sequence<int>
     : bool_<false>
 {
 };
 #endif
 
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(1, is_sequence)
+NDNBOOST_MPL_AUX_NA_SPEC_NO_ETI(1, is_sequence)
 
 }}
 
-#endif // BOOST_MPL_IS_SEQUENCE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_IS_SEQUENCE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/iter_fold.hpp b/include/ndnboost/mpl/iter_fold.hpp
index 8dbaa6d..a8480b8 100644
--- a/include/ndnboost/mpl/iter_fold.hpp
+++ b/include/ndnboost/mpl/iter_fold.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ITER_FOLD_HPP_INCLUDED
-#define BOOST_MPL_ITER_FOLD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ITER_FOLD_HPP_INCLUDED
+#define NDNBOOST_MPL_ITER_FOLD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 // Copyright David Abrahams 2001-2002
@@ -25,9 +25,9 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(State)
-    , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(State)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(ForwardOp)
     >
 struct iter_fold
 {
@@ -39,11 +39,11 @@
         , typename lambda<ForwardOp>::type
         >::state type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,iter_fold,(Sequence,State,ForwardOp))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3,iter_fold,(Sequence,State,ForwardOp))
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, iter_fold)
+NDNBOOST_MPL_AUX_NA_SPEC(3, iter_fold)
 
 }}
 
-#endif // BOOST_MPL_ITER_FOLD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ITER_FOLD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/iter_fold_if.hpp b/include/ndnboost/mpl/iter_fold_if.hpp
index 3373579..14f8765 100644
--- a/include/ndnboost/mpl/iter_fold_if.hpp
+++ b/include/ndnboost/mpl/iter_fold_if.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
-#define BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
+#define NDNBOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 // Copyright Eric Friedman 2003
@@ -38,7 +38,7 @@
 struct iter_fold_if_pred
 {
     template< typename State, typename Iterator > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : and_<
               not_< is_same<Iterator,LastIterator> >
             , apply1<Predicate,Iterator>
@@ -57,12 +57,12 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(State)
-    , typename BOOST_MPL_AUX_NA_PARAM(ForwardOp)
-    , typename BOOST_MPL_AUX_NA_PARAM(ForwardPredicate)
-    , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp)
-    , typename BOOST_MPL_AUX_NA_PARAM(BackwardPredicate)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(State)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(ForwardOp)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(ForwardPredicate)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(BackwardOp)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(BackwardPredicate)
     >
 struct iter_fold_if
 {
@@ -77,7 +77,7 @@
         >::type backward_pred_;
 
 // cwpro8 doesn't like 'cut-off' type here (use typedef instead)
-#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) && !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
+#if !NDNBOOST_WORKAROUND(__MWERKS__, NDNBOOST_TESTED_AT(0x3003)) && !NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(600))
     struct result_ :
 #else
     typedef
@@ -90,7 +90,7 @@
         , BackwardOp
         , backward_pred_
         >
-#if !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003)) && !BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600))
+#if !NDNBOOST_WORKAROUND(__MWERKS__, NDNBOOST_TESTED_AT(0x3003)) && !NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(600))
     { };
 #else
     result_;
@@ -103,15 +103,15 @@
         , typename result_::iterator
         > type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           6
         , iter_fold_if
         , (Sequence,State,ForwardOp,ForwardPredicate,BackwardOp,BackwardPredicate)
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(6, iter_fold_if)
+NDNBOOST_MPL_AUX_NA_SPEC(6, iter_fold_if)
 
 }}
 
-#endif // BOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ITER_FOLD_IF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/iterator_range.hpp b/include/ndnboost/mpl/iterator_range.hpp
index 906ddd3..cc8cc88 100644
--- a/include/ndnboost/mpl/iterator_range.hpp
+++ b/include/ndnboost/mpl/iterator_range.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
-#define BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
+#define NDNBOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -22,8 +22,8 @@
 struct iterator_range_tag;
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(First)
-    , typename BOOST_MPL_AUX_NA_PARAM(Last)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(First)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(Last)
     >
 struct iterator_range
 {
@@ -32,11 +32,11 @@
     typedef First begin;
     typedef Last end;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,iterator_range,(First,Last))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,iterator_range,(First,Last))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, iterator_range)
+NDNBOOST_MPL_AUX_NA_SPEC(2, iterator_range)
 
 }}
 
-#endif // BOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ITERATOR_RANGE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/iterator_tags.hpp b/include/ndnboost/mpl/iterator_tags.hpp
index 540f921..986ab69 100644
--- a/include/ndnboost/mpl/iterator_tags.hpp
+++ b/include/ndnboost/mpl/iterator_tags.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
-#define BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,4 +24,4 @@
 
 }}
 
-#endif // BOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_ITERATOR_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/lambda.hpp b/include/ndnboost/mpl/lambda.hpp
index ba43514..a617547 100644
--- a/include/ndnboost/mpl/lambda.hpp
+++ b/include/ndnboost/mpl/lambda.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LAMBDA_HPP_INCLUDED
-#define BOOST_MPL_LAMBDA_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LAMBDA_HPP_INCLUDED
+#define NDNBOOST_MPL_LAMBDA_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -18,12 +18,12 @@
 #include <ndnboost/mpl/bind.hpp>
 #include <ndnboost/mpl/aux_/config/lambda.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 #   include <ndnboost/mpl/aux_/full_lambda.hpp>
 #else
 #   include <ndnboost/mpl/aux_/lambda_no_ctps.hpp>
 #   include <ndnboost/mpl/aux_/lambda_support.hpp>
-#   define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
+#   define NDNBOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
 #endif
 
-#endif // BOOST_MPL_LAMBDA_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LAMBDA_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/lambda_fwd.hpp b/include/ndnboost/mpl/lambda_fwd.hpp
index c7f3ec6..8fb94d8 100644
--- a/include/ndnboost/mpl/lambda_fwd.hpp
+++ b/include/ndnboost/mpl/lambda_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
-#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -18,7 +18,7 @@
 #include <ndnboost/mpl/aux_/na.hpp>
 #include <ndnboost/mpl/aux_/config/lambda.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+#if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 
 #   include <ndnboost/mpl/int.hpp>
 #   include <ndnboost/mpl/aux_/lambda_arity_param.hpp>
@@ -29,7 +29,7 @@
 template< 
       typename T = na
     , typename Tag = void_
-    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(
+    NDNBOOST_MPL_AUX_LAMBDA_ARITY_PARAM(
           typename Arity = int_< aux::template_arity<T>::value >
         )
     >
@@ -37,7 +37,7 @@
 
 }}
 
-#else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
+#else // NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 
 #   include <ndnboost/mpl/bool.hpp>
 
@@ -54,4 +54,4 @@
 
 #endif
 
-#endif // BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/less.hpp b/include/ndnboost/mpl/less.hpp
index 12043a8..14431f5 100644
--- a/include/ndnboost/mpl/less.hpp
+++ b/include/ndnboost/mpl/less.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LESS_HPP_INCLUDED
-#define BOOST_MPL_LESS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LESS_HPP_INCLUDED
+#define NDNBOOST_MPL_LESS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN <
 #include <ndnboost/mpl/aux_/comparison_op.hpp>
 
-#endif // BOOST_MPL_LESS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LESS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/less_equal.hpp b/include/ndnboost/mpl/less_equal.hpp
index 9fd7a46..b758a3f 100644
--- a/include/ndnboost/mpl/less_equal.hpp
+++ b/include/ndnboost/mpl/less_equal.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
-#define BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LESS_EQUAL_HPP_INCLUDED
+#define NDNBOOST_MPL_LESS_EQUAL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN <=
 #include <ndnboost/mpl/aux_/comparison_op.hpp>
 
-#endif // BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LESS_EQUAL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/limits/arity.hpp b/include/ndnboost/mpl/limits/arity.hpp
index 9da70ab..0c9650b 100644
--- a/include/ndnboost/mpl/limits/arity.hpp
+++ b/include/ndnboost/mpl/limits/arity.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
-#define BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
+#define NDNBOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,8 +14,8 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
-#   define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
+#if !defined(NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY)
+#   define NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
 #endif
 
-#endif // BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/limits/list.hpp b/include/ndnboost/mpl/limits/list.hpp
index 6ae7387..5a37ea0 100644
--- a/include/ndnboost/mpl/limits/list.hpp
+++ b/include/ndnboost/mpl/limits/list.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIMITS_LIST_HPP_INCLUDED
-#define BOOST_MPL_LIMITS_LIST_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIMITS_LIST_HPP_INCLUDED
+#define NDNBOOST_MPL_LIMITS_LIST_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,8 +14,8 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_LIMIT_LIST_SIZE)
-#   define BOOST_MPL_LIMIT_LIST_SIZE 20
+#if !defined(NDNBOOST_MPL_LIMIT_LIST_SIZE)
+#   define NDNBOOST_MPL_LIMIT_LIST_SIZE 20
 #endif
 
-#endif // BOOST_MPL_LIMITS_LIST_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIMITS_LIST_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/limits/unrolling.hpp b/include/ndnboost/mpl/limits/unrolling.hpp
index 3914f0a..edf5500 100644
--- a/include/ndnboost/mpl/limits/unrolling.hpp
+++ b/include/ndnboost/mpl/limits/unrolling.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
-#define BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
+#define NDNBOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,8 +14,8 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_LIMIT_UNROLLING)
-#   define BOOST_MPL_LIMIT_UNROLLING 4
+#if !defined(NDNBOOST_MPL_LIMIT_UNROLLING)
+#   define NDNBOOST_MPL_LIMIT_UNROLLING 4
 #endif
 
-#endif // BOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIMITS_UNROLLING_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/limits/vector.hpp b/include/ndnboost/mpl/limits/vector.hpp
index 5de3811..567b258 100644
--- a/include/ndnboost/mpl/limits/vector.hpp
+++ b/include/ndnboost/mpl/limits/vector.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
-#define BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
+#define NDNBOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,8 +14,8 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_LIMIT_VECTOR_SIZE)
-#   define BOOST_MPL_LIMIT_VECTOR_SIZE 20
+#if !defined(NDNBOOST_MPL_LIMIT_VECTOR_SIZE)
+#   define NDNBOOST_MPL_LIMIT_VECTOR_SIZE 20
 #endif
 
-#endif // BOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIMITS_VECTOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list.hpp b/include/ndnboost/mpl/list.hpp
index 89655f3..134c828 100644
--- a/include/ndnboost/mpl/list.hpp
+++ b/include/ndnboost/mpl/list.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_HPP_INCLUDED
-#define BOOST_MPL_LIST_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,7 +14,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/limits/list.hpp>
 #   include <ndnboost/mpl/aux_/na.hpp>
 #   include <ndnboost/mpl/aux_/config/preprocessor.hpp>
@@ -23,26 +23,26 @@
 #   include <ndnboost/preprocessor/cat.hpp>
 #   include <ndnboost/preprocessor/stringize.hpp>
 
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+#if !defined(NDNBOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 #   define AUX778076_LIST_HEADER \
-    BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE).hpp \
+    NDNBOOST_PP_CAT(list,NDNBOOST_MPL_LIMIT_LIST_SIZE).hpp \
     /**/
 #else
 #   define AUX778076_LIST_HEADER \
-    BOOST_PP_CAT(list,BOOST_MPL_LIMIT_LIST_SIZE)##.hpp \
+    NDNBOOST_PP_CAT(list,NDNBOOST_MPL_LIMIT_LIST_SIZE)##.hpp \
     /**/
 #endif
 
-#   include BOOST_PP_STRINGIZE(ndnboost/mpl/list/AUX778076_LIST_HEADER)
+#   include NDNBOOST_PP_STRINGIZE(ndnboost/mpl/list/AUX778076_LIST_HEADER)
 #   undef AUX778076_LIST_HEADER
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -50,8 +50,8 @@
 #   include <ndnboost/mpl/limits/list.hpp>
 
 #   define AUX778076_SEQUENCE_NAME list
-#   define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_LIST_SIZE
+#   define AUX778076_SEQUENCE_LIMIT NDNBOOST_MPL_LIMIT_LIST_SIZE
 #   include <ndnboost/mpl/aux_/sequence_wrapper.hpp>
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_LIST_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_LIST_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/O1_size.hpp b/include/ndnboost/mpl/list/aux_/O1_size.hpp
index f5fda21..801a404 100644
--- a/include/ndnboost/mpl/list/aux_/O1_size.hpp
+++ b/include/ndnboost/mpl/list/aux_/O1_size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -30,4 +30,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/begin_end.hpp b/include/ndnboost/mpl/list/aux_/begin_end.hpp
index 6c3e7ff..481ece9 100644
--- a/include/ndnboost/mpl/list/aux_/begin_end.hpp
+++ b/include/ndnboost/mpl/list/aux_/begin_end.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -41,4 +41,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_BEGIN_END_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/clear.hpp b/include/ndnboost/mpl/list/aux_/clear.hpp
index 05cf597..986ca56 100644
--- a/include/ndnboost/mpl/list/aux_/clear.hpp
+++ b/include/ndnboost/mpl/list/aux_/clear.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,4 +31,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_CLEAR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/empty.hpp b/include/ndnboost/mpl/list/aux_/empty.hpp
index e40effc..bdd9f31 100644
--- a/include/ndnboost/mpl/list/aux_/empty.hpp
+++ b/include/ndnboost/mpl/list/aux_/empty.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,4 +31,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_EMPTY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/front.hpp b/include/ndnboost/mpl/list/aux_/front.hpp
index dcb43ab..9ee1dd6 100644
--- a/include/ndnboost/mpl/list/aux_/front.hpp
+++ b/include/ndnboost/mpl/list/aux_/front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -30,4 +30,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/include_preprocessed.hpp b/include/ndnboost/mpl/list/aux_/include_preprocessed.hpp
index 6f25939..cbeea8b 100644
--- a/include/ndnboost/mpl/list/aux_/include_preprocessed.hpp
+++ b/include/ndnboost/mpl/list/aux_/include_preprocessed.hpp
@@ -19,17 +19,17 @@
 #include <ndnboost/preprocessor/stringize.hpp>
 
 #   define AUX778076_HEADER \
-    aux_/preprocessed/plain/BOOST_MPL_PREPROCESSED_HEADER \
+    aux_/preprocessed/plain/NDNBOOST_MPL_PREPROCESSED_HEADER \
 /**/
 
-#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
-#   define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(ndnboost/mpl/list/AUX778076_HEADER)
+#if NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(700))
+#   define AUX778076_INCLUDE_STRING NDNBOOST_PP_STRINGIZE(ndnboost/mpl/list/AUX778076_HEADER)
 #   include AUX778076_INCLUDE_STRING
 #   undef AUX778076_INCLUDE_STRING
 #else
-#   include BOOST_PP_STRINGIZE(ndnboost/mpl/list/AUX778076_HEADER)
+#   include NDNBOOST_PP_STRINGIZE(ndnboost/mpl/list/AUX778076_HEADER)
 #endif
 
 #   undef AUX778076_HEADER
 
-#undef BOOST_MPL_PREPROCESSED_HEADER
+#undef NDNBOOST_MPL_PREPROCESSED_HEADER
diff --git a/include/ndnboost/mpl/list/aux_/item.hpp b/include/ndnboost/mpl/list/aux_/item.hpp
index 3048007..393529a 100644
--- a/include/ndnboost/mpl/list/aux_/item.hpp
+++ b/include/ndnboost/mpl/list/aux_/item.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -29,7 +29,7 @@
 struct l_item
 {
 // agurt, 17/jul/03: to facilitate the deficient 'is_sequence' implementation 
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
     typedef int begin;
 #endif
     typedef aux::list_tag tag;
@@ -42,7 +42,7 @@
 
 struct l_end
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
     typedef int begin;
 #endif
     typedef aux::list_tag tag;
@@ -52,4 +52,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_NODE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/iterator.hpp b/include/ndnboost/mpl/list/aux_/iterator.hpp
index 492f779..914a27d 100644
--- a/include/ndnboost/mpl/list/aux_/iterator.hpp
+++ b/include/ndnboost/mpl/list/aux_/iterator.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,7 +24,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< typename Node >
 struct l_iter
@@ -45,7 +45,7 @@
     typedef l_iter< typename Node::next > type;
 };
 
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 template< typename Node >
 struct l_iter
@@ -63,14 +63,14 @@
 {
     typedef aux::l_iter_tag tag;
     typedef forward_iterator_tag category;
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
     typedef na type;
     typedef l_iter next;
 #endif
 };
 
-BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, l_iter)
+NDNBOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, l_iter)
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_ITERATOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/numbered.hpp b/include/ndnboost/mpl/list/aux_/numbered.hpp
index 052c368..15c642e 100644
--- a/include/ndnboost/mpl/list/aux_/numbered.hpp
+++ b/include/ndnboost/mpl/list/aux_/numbered.hpp
@@ -14,19 +14,19 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if defined(BOOST_PP_IS_ITERATING)
+#if defined(NDNBOOST_PP_IS_ITERATING)
 
 #include <ndnboost/preprocessor/enum_params.hpp>
 #include <ndnboost/preprocessor/enum_shifted_params.hpp>
 #include <ndnboost/preprocessor/dec.hpp>
 #include <ndnboost/preprocessor/cat.hpp>
 
-#define i BOOST_PP_FRAME_ITERATION(1)
+#define i NDNBOOST_PP_FRAME_ITERATION(1)
 
 #if i == 1
 
 template<
-      BOOST_PP_ENUM_PARAMS(i, typename T)
+      NDNBOOST_PP_ENUM_PARAMS(i, typename T)
     >
 struct list1
     : l_item<
@@ -41,22 +41,22 @@
 #else
 
 #   define MPL_AUX_LIST_TAIL(list, i, T) \
-    BOOST_PP_CAT(list,BOOST_PP_DEC(i))< \
-      BOOST_PP_ENUM_SHIFTED_PARAMS(i, T) \
+    NDNBOOST_PP_CAT(list,NDNBOOST_PP_DEC(i))< \
+      NDNBOOST_PP_ENUM_SHIFTED_PARAMS(i, T) \
     > \
     /**/
     
 template<
-      BOOST_PP_ENUM_PARAMS(i, typename T)
+      NDNBOOST_PP_ENUM_PARAMS(i, typename T)
     >
-struct BOOST_PP_CAT(list,i)
+struct NDNBOOST_PP_CAT(list,i)
     : l_item<
           long_<i>
         , T0
         , MPL_AUX_LIST_TAIL(list,i,T)
         >
 {
-    typedef BOOST_PP_CAT(list,i) type;
+    typedef NDNBOOST_PP_CAT(list,i) type;
 };
 
 #   undef MPL_AUX_LIST_TAIL
@@ -65,4 +65,4 @@
 
 #undef i
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/list/aux_/numbered_c.hpp b/include/ndnboost/mpl/list/aux_/numbered_c.hpp
index 7126440..dc8fd63 100644
--- a/include/ndnboost/mpl/list/aux_/numbered_c.hpp
+++ b/include/ndnboost/mpl/list/aux_/numbered_c.hpp
@@ -13,20 +13,20 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if defined(BOOST_PP_IS_ITERATING)
+#if defined(NDNBOOST_PP_IS_ITERATING)
 
 #include <ndnboost/preprocessor/enum_params.hpp>
 #include <ndnboost/preprocessor/enum_shifted_params.hpp>
 #include <ndnboost/preprocessor/dec.hpp>
 #include <ndnboost/preprocessor/cat.hpp>
 
-#define i BOOST_PP_FRAME_ITERATION(1)
+#define i NDNBOOST_PP_FRAME_ITERATION(1)
 
 #if i == 1
 
 template<
       typename T
-    , BOOST_PP_ENUM_PARAMS(i, T C)
+    , NDNBOOST_PP_ENUM_PARAMS(i, T C)
     >
 struct list1_c
     : l_item<
@@ -42,23 +42,23 @@
 #else
 
 #   define MPL_AUX_LIST_C_TAIL(list, i, C) \
-    BOOST_PP_CAT(BOOST_PP_CAT(list,BOOST_PP_DEC(i)),_c)<T, \
-      BOOST_PP_ENUM_SHIFTED_PARAMS(i, C) \
+    NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(list,NDNBOOST_PP_DEC(i)),_c)<T, \
+      NDNBOOST_PP_ENUM_SHIFTED_PARAMS(i, C) \
     > \
     /**/
     
 template<
       typename T
-    , BOOST_PP_ENUM_PARAMS(i, T C)
+    , NDNBOOST_PP_ENUM_PARAMS(i, T C)
     >
-struct BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c)
+struct NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(list,i),_c)
     : l_item<
           long_<i>
         , integral_c<T,C0>
         , MPL_AUX_LIST_C_TAIL(list,i,C)
         >
 {
-    typedef BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) type;
+    typedef NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(list,i),_c) type;
     typedef T value_type;
 };
 
@@ -68,4 +68,4 @@
 
 #undef i
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/list/aux_/pop_front.hpp b/include/ndnboost/mpl/list/aux_/pop_front.hpp
index 27c2dae..b8d7444 100644
--- a/include/ndnboost/mpl/list/aux_/pop_front.hpp
+++ b/include/ndnboost/mpl/list/aux_/pop_front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,4 +31,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_POP_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/push_back.hpp b/include/ndnboost/mpl/list/aux_/push_back.hpp
index 41c2f9c..f82758c 100644
--- a/include/ndnboost/mpl/list/aux_/push_back.hpp
+++ b/include/ndnboost/mpl/list/aux_/push_back.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -33,4 +33,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_PUSH_BACK_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/push_front.hpp b/include/ndnboost/mpl/list/aux_/push_front.hpp
index 9b0ed8c..2233882 100644
--- a/include/ndnboost/mpl/list/aux_/push_front.hpp
+++ b/include/ndnboost/mpl/list/aux_/push_front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -36,4 +36,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_PUSH_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/size.hpp b/include/ndnboost/mpl/list/aux_/size.hpp
index 8581584..5e9c5d1 100644
--- a/include/ndnboost/mpl/list/aux_/size.hpp
+++ b/include/ndnboost/mpl/list/aux_/size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -30,4 +30,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/aux_/tag.hpp b/include/ndnboost/mpl/list/aux_/tag.hpp
index 2322a81..9ea53c2 100644
--- a/include/ndnboost/mpl/list/aux_/tag.hpp
+++ b/include/ndnboost/mpl/list/aux_/tag.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
-#define BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}}
 
-#endif // BOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_AUX_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list0.hpp b/include/ndnboost/mpl/list/list0.hpp
index 3cd88e7..4fae937 100644
--- a/include/ndnboost/mpl/list/list0.hpp
+++ b/include/ndnboost/mpl/list/list0.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST0_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST0_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST0_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST0_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -39,4 +39,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_LIST0_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST0_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list0_c.hpp b/include/ndnboost/mpl/list/list0_c.hpp
index 882436a..0761cab 100644
--- a/include/ndnboost/mpl/list/list0_c.hpp
+++ b/include/ndnboost/mpl/list/list0_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST0_C_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST0_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST0_C_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST0_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -28,4 +28,4 @@
 
 }}
 
-#endif // BOOST_MPL_LIST_LIST0_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST0_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list10.hpp b/include/ndnboost/mpl/list/list10.hpp
index f78cf33..b8cc733 100644
--- a/include/ndnboost/mpl/list/list10.hpp
+++ b/include/ndnboost/mpl/list/list10.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST10_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST10_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST10_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST10_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list0.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list10.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list10.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(1, 10, <ndnboost/mpl/list/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST10_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST10_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list10_c.hpp b/include/ndnboost/mpl/list/list10_c.hpp
index 86f3d89..b5975cf 100644
--- a/include/ndnboost/mpl/list/list10_c.hpp
+++ b/include/ndnboost/mpl/list/list10_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST10_C_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST10_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST10_C_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST10_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list0_c.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list10_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list10_c.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(1, 10, <ndnboost/mpl/list/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST10_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST10_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list20.hpp b/include/ndnboost/mpl/list/list20.hpp
index a9dd822..3817e54 100644
--- a/include/ndnboost/mpl/list/list20.hpp
+++ b/include/ndnboost/mpl/list/list20.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST20_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST20_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST20_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST20_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list10.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list20.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list20.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(11, 20, <ndnboost/mpl/list/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST20_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST20_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list20_c.hpp b/include/ndnboost/mpl/list/list20_c.hpp
index deb2125..c267b5f 100644
--- a/include/ndnboost/mpl/list/list20_c.hpp
+++ b/include/ndnboost/mpl/list/list20_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST20_C_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST20_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST20_C_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST20_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list10_c.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list20_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list20_c.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(11, 20, <ndnboost/mpl/list/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST20_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST20_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list30.hpp b/include/ndnboost/mpl/list/list30.hpp
index eaade39..97c73a3 100644
--- a/include/ndnboost/mpl/list/list30.hpp
+++ b/include/ndnboost/mpl/list/list30.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST30_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST30_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST30_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST30_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list20.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list30.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list30.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(21, 30, <ndnboost/mpl/list/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST30_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST30_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list30_c.hpp b/include/ndnboost/mpl/list/list30_c.hpp
index 6f9aa3c..fe865fd 100644
--- a/include/ndnboost/mpl/list/list30_c.hpp
+++ b/include/ndnboost/mpl/list/list30_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST30_C_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST30_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST30_C_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST30_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list20_c.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list30_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list30_c.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(21, 30, <ndnboost/mpl/list/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST30_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST30_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list40.hpp b/include/ndnboost/mpl/list/list40.hpp
index 1cc4511..c1a1dec 100644
--- a/include/ndnboost/mpl/list/list40.hpp
+++ b/include/ndnboost/mpl/list/list40.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST40_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST40_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST40_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST40_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list30.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list40.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list40.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(31, 40, <ndnboost/mpl/list/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST40_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST40_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list40_c.hpp b/include/ndnboost/mpl/list/list40_c.hpp
index 0bea21d..2e14c3c 100644
--- a/include/ndnboost/mpl/list/list40_c.hpp
+++ b/include/ndnboost/mpl/list/list40_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST40_C_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST40_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST40_C_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST40_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list30_c.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list40_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list40_c.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(31, 40, <ndnboost/mpl/list/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST40_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST40_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list50.hpp b/include/ndnboost/mpl/list/list50.hpp
index 5850c5a..9bd00b5 100644
--- a/include/ndnboost/mpl/list/list50.hpp
+++ b/include/ndnboost/mpl/list/list50.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST50_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST50_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST50_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST50_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list40.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list50.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list50.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(41, 50, <ndnboost/mpl/list/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST50_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST50_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/list/list50_c.hpp b/include/ndnboost/mpl/list/list50_c.hpp
index 12142f8..b784db6 100644
--- a/include/ndnboost/mpl/list/list50_c.hpp
+++ b/include/ndnboost/mpl/list/list50_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LIST_LIST50_C_HPP_INCLUDED
-#define BOOST_MPL_LIST_LIST50_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LIST_LIST50_C_HPP_INCLUDED
+#define NDNBOOST_MPL_LIST_LIST50_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/list/list40_c.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER list50_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER list50_c.hpp
 #   include <ndnboost/mpl/list/aux_/include_preprocessed.hpp>
 
 #else
@@ -32,12 +32,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(41, 50, <ndnboost/mpl/list/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_LIST_LIST50_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LIST_LIST50_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/logical.hpp b/include/ndnboost/mpl/logical.hpp
index 8d6789f..5c436c8 100644
--- a/include/ndnboost/mpl/logical.hpp
+++ b/include/ndnboost/mpl/logical.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LOGICAL_HPP_INCLUDED
-#define BOOST_MPL_LOGICAL_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LOGICAL_HPP_INCLUDED
+#define NDNBOOST_MPL_LOGICAL_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #include <ndnboost/mpl/and.hpp>
 #include <ndnboost/mpl/not.hpp>
 
-#endif // BOOST_MPL_LOGICAL_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LOGICAL_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/long.hpp b/include/ndnboost/mpl/long.hpp
index 3545140..4b70b49 100644
--- a/include/ndnboost/mpl/long.hpp
+++ b/include/ndnboost/mpl/long.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LONG_HPP_INCLUDED
-#define BOOST_MPL_LONG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LONG_HPP_INCLUDED
+#define NDNBOOST_MPL_LONG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -19,4 +19,4 @@
 #define AUX_WRAPPER_VALUE_TYPE long
 #include <ndnboost/mpl/aux_/integral_wrapper.hpp>
 
-#endif // BOOST_MPL_LONG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LONG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/long_fwd.hpp b/include/ndnboost/mpl/long_fwd.hpp
index 5247bc3..adcdada 100644
--- a/include/ndnboost/mpl/long_fwd.hpp
+++ b/include/ndnboost/mpl/long_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_LONG_FWD_HPP_INCLUDED
-#define BOOST_MPL_LONG_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_LONG_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_LONG_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,11 +17,11 @@
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 #include <ndnboost/mpl/aux_/nttp_decl.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct long_;
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, N) > struct long_;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(long_)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(long_)
 
-#endif // BOOST_MPL_LONG_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_LONG_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/minus.hpp b/include/ndnboost/mpl/minus.hpp
index 0b4b5b4..a765cb7 100644
--- a/include/ndnboost/mpl/minus.hpp
+++ b/include/ndnboost/mpl/minus.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_MINUS_HPP_INCLUDED
-#define BOOST_MPL_MINUS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_MINUS_HPP_INCLUDED
+#define NDNBOOST_MPL_MINUS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN -
 #include <ndnboost/mpl/aux_/arithmetic_op.hpp>
 
-#endif // BOOST_MPL_MINUS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_MINUS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/multiplies.hpp b/include/ndnboost/mpl/multiplies.hpp
index 1855708..ab06d77 100644
--- a/include/ndnboost/mpl/multiplies.hpp
+++ b/include/ndnboost/mpl/multiplies.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_MULTIPLIES_HPP_INCLUDED
-#define BOOST_MPL_MULTIPLIES_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_MULTIPLIES_HPP_INCLUDED
+#define NDNBOOST_MPL_MULTIPLIES_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -25,29 +25,29 @@
 
 namespace ndnboost { namespace mpl {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-#   define AUX778076_OP_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#   define AUX778076_OP_ARITY NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY
 #else
 #   define AUX778076_OP_ARITY 2
 #endif
 
 template<
-      BOOST_MPL_PP_DEFAULT_PARAMS(AUX778076_OP_ARITY, typename N, na)
+      NDNBOOST_MPL_PP_DEFAULT_PARAMS(AUX778076_OP_ARITY, typename N, na)
     >
 struct multiplies
-    : times< BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) >
+    : times< NDNBOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(
           AUX778076_OP_ARITY
         , multiplies
-        , ( BOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
+        , ( NDNBOOST_MPL_PP_PARAMS(AUX778076_OP_ARITY, N) )
         )
 };
 
-BOOST_MPL_AUX_NA_SPEC(AUX778076_OP_ARITY, multiplies)
+NDNBOOST_MPL_AUX_NA_SPEC(AUX778076_OP_ARITY, multiplies)
 
 #undef AUX778076_OP_ARITY
 
 }}
 
-#endif // BOOST_MPL_MULTIPLIES_HPP_INCLUDED
+#endif // NDNBOOST_MPL_MULTIPLIES_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/negate.hpp b/include/ndnboost/mpl/negate.hpp
index a4e550d..e8b9acc 100644
--- a/include/ndnboost/mpl/negate.hpp
+++ b/include/ndnboost/mpl/negate.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_NEGATE_HPP_INCLUDED
-#define BOOST_MPL_NEGATE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_NEGATE_HPP_INCLUDED
+#define NDNBOOST_MPL_NEGATE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -32,10 +32,10 @@
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(N)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(N)
     >
 struct negate
-#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if !defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
     : negate_impl<
           typename negate_tag<N>::type
         >::template apply<N>::type
@@ -46,17 +46,17 @@
         >::type >::type
 #endif
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, negate, (N))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, negate, (N))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, negate)
+NDNBOOST_MPL_AUX_NA_SPEC(1, negate)
 
 
-#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+#if defined(NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
 namespace aux {
 template< typename T, T n > struct negate_wknd
 {
-    BOOST_STATIC_CONSTANT(T, value = -n);
+    NDNBOOST_STATIC_CONSTANT(T, value = -n);
     typedef integral_c<T,value> type;
 };
 }
@@ -65,7 +65,7 @@
 template<>
 struct negate_impl<integral_c_tag>
 {
-#if defined(BOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
+#if defined(NDNBOOST_MPL_CFG_NO_NESTED_VALUE_ARITHMETIC)
     template< typename N > struct apply
         : aux::negate_wknd< typename N::value_type, N::value >
 #else
@@ -78,4 +78,4 @@
 
 }}
 
-#endif // BOOST_MPL_NEGATE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_NEGATE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/next.hpp b/include/ndnboost/mpl/next.hpp
index 9a9f0ef..99c4c99 100644
--- a/include/ndnboost/mpl/next.hpp
+++ b/include/ndnboost/mpl/next.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_NEXT_HPP_INCLUDED
-#define BOOST_MPL_NEXT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_NEXT_HPP_INCLUDED
+#define NDNBOOST_MPL_NEXT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -16,4 +16,4 @@
 
 #include <ndnboost/mpl/next_prior.hpp>
 
-#endif // BOOST_MPL_NEXT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_NEXT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/next_prior.hpp b/include/ndnboost/mpl/next_prior.hpp
index 4893533..e1902c7 100644
--- a/include/ndnboost/mpl/next_prior.hpp
+++ b/include/ndnboost/mpl/next_prior.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
-#define BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
+#define NDNBOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -20,30 +20,30 @@
 
 namespace ndnboost { namespace mpl {
 
-BOOST_MPL_AUX_COMMON_NAME_WKND(next)
-BOOST_MPL_AUX_COMMON_NAME_WKND(prior)
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(next)
+NDNBOOST_MPL_AUX_COMMON_NAME_WKND(prior)
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct next
 {
     typedef typename T::next type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,next,(T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,next,(T))
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct prior
 {
     typedef typename T::prior type;
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,prior,(T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,prior,(T))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, next)
-BOOST_MPL_AUX_NA_SPEC(1, prior)
+NDNBOOST_MPL_AUX_NA_SPEC(1, next)
+NDNBOOST_MPL_AUX_NA_SPEC(1, prior)
 
 }}
 
-#endif // BOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_NEXT_PRIOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/not.hpp b/include/ndnboost/mpl/not.hpp
index bc3f1ab..2612a95 100644
--- a/include/ndnboost/mpl/not.hpp
+++ b/include/ndnboost/mpl/not.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_NOT_HPP_INCLUDED
-#define BOOST_MPL_NOT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_NOT_HPP_INCLUDED
+#define NDNBOOST_MPL_NOT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,7 +24,7 @@
 
 namespace aux {
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, C_) > // 'long' is intentional here
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, C_) > // 'long' is intentional here
 struct not_impl
     : bool_<!C_>
 {
@@ -34,18 +34,18 @@
 
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct not_
     : aux::not_impl<
-          BOOST_MPL_AUX_NESTED_TYPE_WKND(T)::value
+          NDNBOOST_MPL_AUX_NESTED_TYPE_WKND(T)::value
         >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,not_,(T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,not_,(T))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1,not_)
+NDNBOOST_MPL_AUX_NA_SPEC(1,not_)
 
 }}
 
-#endif // BOOST_MPL_NOT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_NOT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/not_equal_to.hpp b/include/ndnboost/mpl/not_equal_to.hpp
index 3698bf6..074af8a 100644
--- a/include/ndnboost/mpl/not_equal_to.hpp
+++ b/include/ndnboost/mpl/not_equal_to.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
-#define BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
+#define NDNBOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN !=
 #include <ndnboost/mpl/aux_/comparison_op.hpp>
 
-#endif // BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
+#endif // NDNBOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/numeric_cast.hpp b/include/ndnboost/mpl/numeric_cast.hpp
index 603bf75..1bf4abf 100644
--- a/include/ndnboost/mpl/numeric_cast.hpp
+++ b/include/ndnboost/mpl/numeric_cast.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
-#define BOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
+#define NDNBOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2003-2004
 //
@@ -21,21 +21,21 @@
 // resolves conflicts with 'ndnboost::numeric_cast' function template.
 // use it in your own code _only_ if you care about compatibility with
 // these outdated compilers!
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x570) )
-#   define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast_
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300) || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x570) )
+#   define NDNBOOST_MPL_AUX_NUMERIC_CAST numeric_cast_
 #else
-#   define BOOST_MPL_AUX_NUMERIC_CAST numeric_cast
+#   define NDNBOOST_MPL_AUX_NUMERIC_CAST numeric_cast
 #endif
 
 namespace ndnboost { namespace mpl {
 
 // no default implementation; the definition is needed to make MSVC happy
 
-template< typename SourceTag, typename TargetTag > struct BOOST_MPL_AUX_NUMERIC_CAST
+template< typename SourceTag, typename TargetTag > struct NDNBOOST_MPL_AUX_NUMERIC_CAST
 {
     template< typename N > struct apply;
 };
 
 }}
 
-#endif // BOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
+#endif // NDNBOOST_MPL_NUMERIC_CAST_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/or.hpp b/include/ndnboost/mpl/or.hpp
index b5116d9..d35db4d 100644
--- a/include/ndnboost/mpl/or.hpp
+++ b/include/ndnboost/mpl/or.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_OR_HPP_INCLUDED
-#define BOOST_MPL_OR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_OR_HPP_INCLUDED
+#define NDNBOOST_MPL_OR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,8 +16,8 @@
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
 #   include <ndnboost/mpl/bool.hpp>
 #   include <ndnboost/mpl/aux_/nested_type_wknd.hpp>
@@ -39,7 +39,7 @@
 #endif
 #endif
 
-#   define BOOST_MPL_PREPROCESSED_HEADER or.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER or.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #if defined(_MSC_VER) 
@@ -57,5 +57,5 @@
 #   define AUX778076_OP_VALUE2 false
 #   include <ndnboost/mpl/aux_/logical_op.hpp>
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_OR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_OR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/pair.hpp b/include/ndnboost/mpl/pair.hpp
index b58c0bd..3c295c5 100644
--- a/include/ndnboost/mpl/pair.hpp
+++ b/include/ndnboost/mpl/pair.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PAIR_HPP_INCLUDED
-#define BOOST_MPL_PAIR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PAIR_HPP_INCLUDED
+#define NDNBOOST_MPL_PAIR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -22,8 +22,8 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T1)
-    , typename BOOST_MPL_AUX_NA_PARAM(T2)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T1)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T2)
     >
 struct pair
 {
@@ -31,40 +31,40 @@
     typedef T1 first;
     typedef T2 second;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,pair,(T1,T2))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,pair,(T1,T2))
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(P)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(P)
     >
 struct first
 {
-#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+#if !defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG)
     typedef typename P::first type;
 #else
     typedef typename aux::msvc_eti_base<P>::first type;
 #endif
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,first,(P))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,first,(P))
 };
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(P)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(P)
     >
 struct second
 {
-#if !defined(BOOST_MPL_CFG_MSVC_70_ETI_BUG)
+#if !defined(NDNBOOST_MPL_CFG_MSVC_70_ETI_BUG)
     typedef typename P::second type;
 #else
     typedef typename aux::msvc_eti_base<P>::second type;
 #endif
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,second,(P))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,second,(P))
 };
 
 
-BOOST_MPL_AUX_NA_SPEC_NO_ETI(2, pair)
-BOOST_MPL_AUX_NA_SPEC(1, first)
-BOOST_MPL_AUX_NA_SPEC(1, second)
+NDNBOOST_MPL_AUX_NA_SPEC_NO_ETI(2, pair)
+NDNBOOST_MPL_AUX_NA_SPEC(1, first)
+NDNBOOST_MPL_AUX_NA_SPEC(1, second)
 
 }}
 
-#endif // BOOST_MPL_PAIR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PAIR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/placeholders.hpp b/include/ndnboost/mpl/placeholders.hpp
index 86f8e09..0444d8a 100644
--- a/include/ndnboost/mpl/placeholders.hpp
+++ b/include/ndnboost/mpl/placeholders.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
-#define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+#define NDNBOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 // Copyright Peter Dimov 2001-2003
@@ -20,26 +20,26 @@
 // $Revision: 49267 $
 
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/arg.hpp>
 #   include <ndnboost/mpl/aux_/adl_barrier.hpp>
 
-#   if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
-#       define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
-        using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
+#   if !defined(NDNBOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
+#       define NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
+        using ::NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
         /**/
 #   else
-#       define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
+#       define NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
 #   endif
 
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -50,17 +50,17 @@
 #   include <ndnboost/preprocessor/cat.hpp>
 
 // watch out for GNU gettext users, who #define _(x)
-#if !defined(_) || defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+#if !defined(_) || defined(NDNBOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 typedef arg<-1> _;
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
 namespace ndnboost { namespace mpl { 
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 }
 
 }}
@@ -68,33 +68,33 @@
 
 /// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 /// specialization
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <ndnboost/mpl/placeholders.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(1, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <ndnboost/mpl/placeholders.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
 
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
-typedef arg<i_> BOOST_PP_CAT(_,i_);
+typedef arg<i_> NDNBOOST_PP_CAT(_,i_);
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
 namespace ndnboost { namespace mpl { 
 
-BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(BOOST_PP_CAT(_,i_))
+NDNBOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(NDNBOOST_PP_CAT(_,i_))
 
 namespace placeholders {
-using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::BOOST_PP_CAT(_,i_);
+using NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::NDNBOOST_PP_CAT(_,i_);
 }
 
 }}
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/plus.hpp b/include/ndnboost/mpl/plus.hpp
index 5ce534d..2265cfa 100644
--- a/include/ndnboost/mpl/plus.hpp
+++ b/include/ndnboost/mpl/plus.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PLUS_HPP_INCLUDED
-#define BOOST_MPL_PLUS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PLUS_HPP_INCLUDED
+#define NDNBOOST_MPL_PLUS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN +
 #include <ndnboost/mpl/aux_/arithmetic_op.hpp>
 
-#endif // BOOST_MPL_PLUS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PLUS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/pop_back_fwd.hpp b/include/ndnboost/mpl/pop_back_fwd.hpp
index 6a2278a..f3e9451 100644
--- a/include/ndnboost/mpl/pop_back_fwd.hpp
+++ b/include/ndnboost/mpl/pop_back_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
-#define BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_POP_BACK_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/pop_front_fwd.hpp b/include/ndnboost/mpl/pop_front_fwd.hpp
index cf5ab2b..f41205b 100644
--- a/include/ndnboost/mpl/pop_front_fwd.hpp
+++ b/include/ndnboost/mpl/pop_front_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
-#define BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_POP_FRONT_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/prior.hpp b/include/ndnboost/mpl/prior.hpp
index a7ae4e7..9e880ea 100644
--- a/include/ndnboost/mpl/prior.hpp
+++ b/include/ndnboost/mpl/prior.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PRIOR_HPP_INCLUDED
-#define BOOST_MPL_PRIOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PRIOR_HPP_INCLUDED
+#define NDNBOOST_MPL_PRIOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -16,4 +16,4 @@
 
 #include <ndnboost/mpl/next_prior.hpp>
 
-#endif // BOOST_MPL_PRIOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PRIOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/protect.hpp b/include/ndnboost/mpl/protect.hpp
index 3efcca1..02d4c41 100644
--- a/include/ndnboost/mpl/protect.hpp
+++ b/include/ndnboost/mpl/protect.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PROTECT_HPP_INCLUDED
-#define BOOST_MPL_PROTECT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PROTECT_HPP_INCLUDED
+#define NDNBOOST_MPL_PROTECT_HPP_INCLUDED
 
 // Copyright Peter Dimov 2001
 // Copyright Aleksey Gurtovoy 2002-2004
@@ -23,21 +23,21 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     , int not_le_ = 0
     >
 struct protect : T
 {
-#if BOOST_WORKAROUND(__EDG_VERSION__, == 238)
+#if NDNBOOST_WORKAROUND(__EDG_VERSION__, == 238)
     typedef mpl::protect type;
 #else
     typedef protect type;
 #endif
 };
 
-#if defined(BOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
+#if defined(NDNBOOST_MPL_CFG_BROKEN_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 namespace aux { 
-template< BOOST_MPL_AUX_NTTP_DECL(int, N), typename T >
+template< NDNBOOST_MPL_AUX_NTTP_DECL(int, N), typename T >
 struct arity< protect<T>, N > 
     : arity<T,N>
 { 
@@ -45,11 +45,11 @@
 } // namespace aux
 #endif
 
-BOOST_MPL_AUX_NA_SPEC_MAIN(1, protect)
-#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
-BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(1, 1, protect)
+NDNBOOST_MPL_AUX_NA_SPEC_MAIN(1, protect)
+#if !defined(NDNBOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
+NDNBOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(1, 1, protect)
 #endif
 
 }}
 
-#endif // BOOST_MPL_PROTECT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PROTECT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/push_back.hpp b/include/ndnboost/mpl/push_back.hpp
index ba98dac..9cea895 100644
--- a/include/ndnboost/mpl/push_back.hpp
+++ b/include/ndnboost/mpl/push_back.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PUSH_BACK_HPP_INCLUDED
-#define BOOST_MPL_PUSH_BACK_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PUSH_BACK_HPP_INCLUDED
+#define NDNBOOST_MPL_PUSH_BACK_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,31 +23,31 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct push_back
     : push_back_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence,T >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,push_back,(Sequence,T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,push_back,(Sequence,T))
 };
 
 
 template< 
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct has_push_back
     : has_push_back_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_push_back,(Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_push_back,(Sequence))
 };
 
 
-BOOST_MPL_AUX_NA_SPEC(2, push_back)
-BOOST_MPL_AUX_NA_SPEC(1, has_push_back)
+NDNBOOST_MPL_AUX_NA_SPEC(2, push_back)
+NDNBOOST_MPL_AUX_NA_SPEC(1, has_push_back)
 
 }}
 
-#endif // BOOST_MPL_PUSH_BACK_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PUSH_BACK_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/push_back_fwd.hpp b/include/ndnboost/mpl/push_back_fwd.hpp
index 499607c..9de0ff0 100644
--- a/include/ndnboost/mpl/push_back_fwd.hpp
+++ b/include/ndnboost/mpl/push_back_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
-#define BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PUSH_BACK_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/push_front.hpp b/include/ndnboost/mpl/push_front.hpp
index d08248f..d3313c8 100644
--- a/include/ndnboost/mpl/push_front.hpp
+++ b/include/ndnboost/mpl/push_front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PUSH_FRONT_HPP_INCLUDED
-#define BOOST_MPL_PUSH_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PUSH_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_PUSH_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,30 +23,30 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(T)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(T)
     >
 struct push_front
     : push_front_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence,T >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(2,push_front,(Sequence,T))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(2,push_front,(Sequence,T))
 };
 
 
 template< 
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct has_push_front
     : has_push_front_impl< typename sequence_tag<Sequence>::type >
         ::template apply< Sequence >
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_push_front,(Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1,has_push_front,(Sequence))
 };
 
-BOOST_MPL_AUX_NA_SPEC(2, push_front)
-BOOST_MPL_AUX_NA_SPEC(1, has_push_front)
+NDNBOOST_MPL_AUX_NA_SPEC(2, push_front)
+NDNBOOST_MPL_AUX_NA_SPEC(1, has_push_front)
 
 }}
 
-#endif // BOOST_MPL_PUSH_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PUSH_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/push_front_fwd.hpp b/include/ndnboost/mpl/push_front_fwd.hpp
index 5e62f10..44394fd 100644
--- a/include/ndnboost/mpl/push_front_fwd.hpp
+++ b/include/ndnboost/mpl/push_front_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
-#define BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_PUSH_FRONT_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/quote.hpp b/include/ndnboost/mpl/quote.hpp
index 3159e18..59b7d3a 100644
--- a/include/ndnboost/mpl/quote.hpp
+++ b/include/ndnboost/mpl/quote.hpp
@@ -1,10 +1,10 @@
 
-#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(NDNBOOST_PP_IS_ITERATING)
 
 ///// header body
 
-#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
-#define BOOST_MPL_QUOTE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_QUOTE_HPP_INCLUDED
+#define NDNBOOST_MPL_QUOTE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -18,7 +18,7 @@
 // $Date: 2008-10-10 23:50:46 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49272 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/void.hpp>
 #   include <ndnboost/mpl/aux_/has_type.hpp>
 #endif
@@ -26,22 +26,22 @@
 #include <ndnboost/mpl/aux_/config/bcc.hpp>
 #include <ndnboost/mpl/aux_/config/ttp.hpp>
 
-#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
-    && !defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
-#   define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
+#if defined(NDNBOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS) \
+    && !defined(NDNBOOST_MPL_CFG_BCC590_WORKAROUNDS)
+#   define NDNBOOST_MPL_CFG_NO_QUOTE_TEMPLATE
 #endif
 
-#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
-    && defined(BOOST_MPL_CFG_NO_HAS_XXX)
-#   define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
+#if !defined(NDNBOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
+    && defined(NDNBOOST_MPL_CFG_NO_HAS_XXX)
+#   define NDNBOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER quote.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -54,19 +54,19 @@
 #   include <ndnboost/preprocessor/iterate.hpp>
 #   include <ndnboost/preprocessor/cat.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
+#if !defined(NDNBOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
 
 namespace ndnboost { namespace mpl {
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< typename T, bool has_type_ >
 struct quote_impl
 // GCC has a problem with metafunction forwarding when T is a
 // specialization of a template called 'type'.
-# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
-    && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
-    && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2))
+# if NDNBOOST_WORKAROUND(__GNUC__, NDNBOOST_TESTED_AT(4)) \
+    && NDNBOOST_WORKAROUND(__GNUC_MINOR__, NDNBOOST_TESTED_AT(0)) \
+    && NDNBOOST_WORKAROUND(__GNUC_PATCHLEVEL__, NDNBOOST_TESTED_AT(2))
 {
     typedef typename T::type type;
 };
@@ -82,7 +82,7 @@
     typedef T type;
 };
 
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 template< bool > struct quote_impl
 {
@@ -102,50 +102,50 @@
 
 #endif 
 
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/quote.hpp>))
-#include BOOST_PP_ITERATE()
+#define NDNBOOST_PP_ITERATION_PARAMS_1 \
+    (3,(1, NDNBOOST_MPL_LIMIT_METAFUNCTION_ARITY, <ndnboost/mpl/quote.hpp>))
+#include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
+#endif // NDNBOOST_MPL_CFG_NO_QUOTE_TEMPLATE
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_QUOTE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_QUOTE_HPP_INCLUDED
 
 ///// iteration
 
 #else
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
 template<
-      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
+      template< NDNBOOST_MPL_PP_PARAMS(i_, typename P) > class F
     , typename Tag = void_
     >
-struct BOOST_PP_CAT(quote,i_)
+struct NDNBOOST_PP_CAT(quote,i_)
 {
-    template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
-#if defined(BOOST_MPL_CFG_BCC590_WORKAROUNDS)
+    template< NDNBOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
+#if defined(NDNBOOST_MPL_CFG_BCC590_WORKAROUNDS)
     {
         typedef typename quote_impl<
-              F< BOOST_MPL_PP_PARAMS(i_, U) >
-            , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
+              F< NDNBOOST_MPL_PP_PARAMS(i_, U) >
+            , aux::has_type< F< NDNBOOST_MPL_PP_PARAMS(i_, U) > >::value
             >::type type;
     };
-#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#elif !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
         : quote_impl<
-              F< BOOST_MPL_PP_PARAMS(i_, U) >
-            , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
+              F< NDNBOOST_MPL_PP_PARAMS(i_, U) >
+            , aux::has_type< F< NDNBOOST_MPL_PP_PARAMS(i_, U) > >::value
             >
     {
     };
 #else
-        : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value >
-            ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > >
+        : quote_impl< aux::has_type< F< NDNBOOST_MPL_PP_PARAMS(i_, U) > >::value >
+            ::template result_< F< NDNBOOST_MPL_PP_PARAMS(i_, U) > >
     {
     };
 #endif
 };
 
 #undef i_
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/remove_if.hpp b/include/ndnboost/mpl/remove_if.hpp
index a20a01c..ad997e2 100644
--- a/include/ndnboost/mpl/remove_if.hpp
+++ b/include/ndnboost/mpl/remove_if.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_REMOVE_IF_HPP_INCLUDED
-#define BOOST_MPL_REMOVE_IF_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_REMOVE_IF_HPP_INCLUDED
+#define NDNBOOST_MPL_REMOVE_IF_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 // Copyright David Abrahams 2003-2004
@@ -76,8 +76,8 @@
 
 } // namespace aux
 
-BOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(3, remove_if)
+NDNBOOST_MPL_AUX_INSERTER_ALGORITHM_DEF(3, remove_if)
 
 }}
 
-#endif // BOOST_MPL_REMOVE_IF_HPP_INCLUDED
+#endif // NDNBOOST_MPL_REMOVE_IF_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/reverse_fold.hpp b/include/ndnboost/mpl/reverse_fold.hpp
index 5d5d9d8..b790a43 100644
--- a/include/ndnboost/mpl/reverse_fold.hpp
+++ b/include/ndnboost/mpl/reverse_fold.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
-#define BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
+#define NDNBOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 // Copyright David Abrahams 2001-2002
@@ -24,9 +24,9 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
-    , typename BOOST_MPL_AUX_NA_PARAM(State)
-    , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(State)
+    , typename NDNBOOST_MPL_AUX_NA_PARAM(BackwardOp)
     , typename ForwardOp = arg<1>
     >
 struct reverse_fold
@@ -40,11 +40,11 @@
         , ForwardOp
         >::state type;
 
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,reverse_fold,(Sequence,State,BackwardOp))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(3,reverse_fold,(Sequence,State,BackwardOp))
 };
 
-BOOST_MPL_AUX_NA_SPEC(3, reverse_fold)
+NDNBOOST_MPL_AUX_NA_SPEC(3, reverse_fold)
 
 }}
 
-#endif // BOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_REVERSE_FOLD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/same_as.hpp b/include/ndnboost/mpl/same_as.hpp
index e7736b0..d9fdbcb 100644
--- a/include/ndnboost/mpl/same_as.hpp
+++ b/include/ndnboost/mpl/same_as.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SAME_AS_HPP_INCLUDED
-#define BOOST_MPL_SAME_AS_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SAME_AS_HPP_INCLUDED
+#define NDNBOOST_MPL_SAME_AS_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -26,7 +26,7 @@
 struct same_as
 {
     template< typename T2 > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : is_same<T1,T2>
     {
 #else
@@ -40,7 +40,7 @@
 struct not_same_as
 {
     template< typename T2 > struct apply
-#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
+#if !defined(NDNBOOST_MPL_CFG_NO_NESTED_FORWARDING)
         : not_< is_same<T1,T2> >
     {
 #else
@@ -52,4 +52,4 @@
 
 }}
 
-#endif // BOOST_MPL_SAME_AS_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SAME_AS_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/sequence_tag.hpp b/include/ndnboost/mpl/sequence_tag.hpp
index 69a7193..51c1e78 100644
--- a/include/ndnboost/mpl/sequence_tag.hpp
+++ b/include/ndnboost/mpl/sequence_tag.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
-#define BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -27,18 +27,18 @@
 
 // agurt, 27/nov/02: have to use a simplistic 'sequence_tag' implementation
 // on MSVC to avoid dreadful "internal structure overflow" error
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
-    || defined(BOOST_MPL_CFG_NO_HAS_XXX)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300) \
+    || defined(NDNBOOST_MPL_CFG_NO_HAS_XXX)
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct sequence_tag
 {
     typedef typename Sequence::tag type;
 };
 
-#elif BOOST_WORKAROUND(BOOST_MSVC, == 1300)
+#elif NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1300)
 
 // agurt, 07/feb/03: workaround for what seems to be MSVC 7.0-specific ETI issue
 
@@ -65,7 +65,7 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct sequence_tag
     : aux::sequence_tag_impl< !aux::is_msvc_eti_arg<Sequence>::value >
@@ -105,7 +105,7 @@
 } // namespace aux
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct sequence_tag
     : aux::sequence_tag_impl<
@@ -115,10 +115,10 @@
 {
 };
 
-#endif // BOOST_MSVC
+#endif // NDNBOOST_MSVC
 
-BOOST_MPL_AUX_NA_SPEC(1, sequence_tag)
+NDNBOOST_MPL_AUX_NA_SPEC(1, sequence_tag)
 
 }}
 
-#endif // BOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SEQUENCE_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/sequence_tag_fwd.hpp b/include/ndnboost/mpl/sequence_tag_fwd.hpp
index 9140a6d..9e3aee3 100644
--- a/include/ndnboost/mpl/sequence_tag_fwd.hpp
+++ b/include/ndnboost/mpl/sequence_tag_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
-#define BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,4 +23,4 @@
 
 }}
 
-#endif // BOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SEQUENCE_TAG_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/size.hpp b/include/ndnboost/mpl/size.hpp
index 2538cc2..d51549b 100644
--- a/include/ndnboost/mpl/size.hpp
+++ b/include/ndnboost/mpl/size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SIZE_HPP_INCLUDED
-#define BOOST_MPL_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -24,7 +24,7 @@
 namespace ndnboost { namespace mpl {
 
 template<
-      typename BOOST_MPL_AUX_NA_PARAM(Sequence)
+      typename NDNBOOST_MPL_AUX_NA_PARAM(Sequence)
     >
 struct size
     : aux::msvc_eti_base<
@@ -32,11 +32,11 @@
             ::template apply< Sequence >::type
       >::type
 {
-    BOOST_MPL_AUX_LAMBDA_SUPPORT(1, size, (Sequence))
+    NDNBOOST_MPL_AUX_LAMBDA_SUPPORT(1, size, (Sequence))
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, size)
+NDNBOOST_MPL_AUX_NA_SPEC(1, size)
 
 }}
 
-#endif // BOOST_MPL_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/size_fwd.hpp b/include/ndnboost/mpl/size_fwd.hpp
index e84082a..1d948a2 100644
--- a/include/ndnboost/mpl/size_fwd.hpp
+++ b/include/ndnboost/mpl/size_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SIZE_FWD_HPP_INCLUDED
-#define BOOST_MPL_SIZE_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SIZE_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_SIZE_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,4 +21,4 @@
 
 }}
 
-#endif // BOOST_MPL_SIZE_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SIZE_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/size_t.hpp b/include/ndnboost/mpl/size_t.hpp
index 182f128..fc86699 100644
--- a/include/ndnboost/mpl/size_t.hpp
+++ b/include/ndnboost/mpl/size_t.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SIZE_T_HPP_INCLUDED
-#define BOOST_MPL_SIZE_T_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SIZE_T_HPP_INCLUDED
+#define NDNBOOST_MPL_SIZE_T_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -22,4 +22,4 @@
 
 #include <ndnboost/mpl/aux_/integral_wrapper.hpp>
 
-#endif // BOOST_MPL_SIZE_T_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SIZE_T_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/size_t_fwd.hpp b/include/ndnboost/mpl/size_t_fwd.hpp
index f6d8aaa..6adc981 100644
--- a/include/ndnboost/mpl/size_t_fwd.hpp
+++ b/include/ndnboost/mpl/size_t_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
-#define BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,11 +18,11 @@
 #include <ndnboost/config.hpp> // make sure 'size_t' is placed into 'std'
 #include <cstddef>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 template< std::size_t N > struct size_t;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(size_t)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(size_t)
 
-#endif // BOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_SIZE_T_FWD_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/tag.hpp b/include/ndnboost/mpl/tag.hpp
index 56b9fb4..4eed698 100644
--- a/include/ndnboost/mpl/tag.hpp
+++ b/include/ndnboost/mpl/tag.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_TAG_HPP_INCLUDED
-#define BOOST_MPL_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2004
 //
@@ -29,7 +29,7 @@
 }
 
 template< typename T, typename Default = void_ > struct tag
-#if !defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
+#if !defined(NDNBOOST_MPL_CFG_MSVC_ETI_BUG)
     : if_< 
           aux::has_tag<T>
         , aux::tag_impl<T>
@@ -49,4 +49,4 @@
 
 }}
 
-#endif // BOOST_MPL_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/times.hpp b/include/ndnboost/mpl/times.hpp
index 60984bb..e6fa702 100644
--- a/include/ndnboost/mpl/times.hpp
+++ b/include/ndnboost/mpl/times.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_TIMES_HPP_INCLUDED
-#define BOOST_MPL_TIMES_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_TIMES_HPP_INCLUDED
+#define NDNBOOST_MPL_TIMES_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -18,4 +18,4 @@
 #define AUX778076_OP_TOKEN *
 #include <ndnboost/mpl/aux_/arithmetic_op.hpp>
 
-#endif // BOOST_MPL_TIMES_HPP_INCLUDED
+#endif // NDNBOOST_MPL_TIMES_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector.hpp b/include/ndnboost/mpl/vector.hpp
index 81b404d..4492f22 100644
--- a/include/ndnboost/mpl/vector.hpp
+++ b/include/ndnboost/mpl/vector.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,7 +14,7 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/limits/vector.hpp>
 #   include <ndnboost/mpl/aux_/na.hpp>
 #   include <ndnboost/mpl/aux_/config/preprocessor.hpp>
@@ -23,26 +23,26 @@
 #   include <ndnboost/preprocessor/cat.hpp>
 #   include <ndnboost/preprocessor/stringize.hpp>
 
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+#if !defined(NDNBOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 #   define AUX778076_VECTOR_HEADER \
-    BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE).hpp \
+    NDNBOOST_PP_CAT(vector, NDNBOOST_MPL_LIMIT_VECTOR_SIZE).hpp \
     /**/
 #else
 #   define AUX778076_VECTOR_HEADER \
-    BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE)##.hpp \
+    NDNBOOST_PP_CAT(vector, NDNBOOST_MPL_LIMIT_VECTOR_SIZE)##.hpp \
     /**/
 #endif
 
-#   include BOOST_PP_STRINGIZE(ndnboost/mpl/vector/AUX778076_VECTOR_HEADER)
+#   include NDNBOOST_PP_STRINGIZE(ndnboost/mpl/vector/AUX778076_VECTOR_HEADER)
 #   undef AUX778076_VECTOR_HEADER
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector.hpp
 #   include <ndnboost/mpl/aux_/include_preprocessed.hpp>
 
 #else
@@ -50,8 +50,8 @@
 #   include <ndnboost/mpl/limits/vector.hpp>
 
 #   define AUX778076_SEQUENCE_NAME vector
-#   define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_VECTOR_SIZE
+#   define AUX778076_SEQUENCE_LIMIT NDNBOOST_MPL_LIMIT_VECTOR_SIZE
 #   include <ndnboost/mpl/aux_/sequence_wrapper.hpp>
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_VECTOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_VECTOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/O1_size.hpp b/include/ndnboost/mpl/vector/aux_/O1_size.hpp
index 279ade9..50b0f88 100644
--- a/include/ndnboost/mpl/vector/aux_/O1_size.hpp
+++ b/include/ndnboost/mpl/vector/aux_/O1_size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,7 +23,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template<>
 struct O1_size_impl< aux::vector_tag >
@@ -36,7 +36,7 @@
 
 #else
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< long N >
 struct O1_size_impl< aux::vector_tag<N> >
@@ -47,10 +47,10 @@
     };
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/at.hpp b/include/ndnboost/mpl/vector/aux_/at.hpp
index c5f7d5e..b507743 100644
--- a/include/ndnboost/mpl/vector/aux_/at.hpp
+++ b/include/ndnboost/mpl/vector/aux_/at.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -26,7 +26,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template< typename Vector, long n_ >
 struct v_at_impl
@@ -48,7 +48,7 @@
     template< typename Vector, typename N > struct apply
         : v_at<
               Vector
-            , BOOST_MPL_AUX_VALUE_WKND(N)::value
+            , NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
             >
     {
     };
@@ -56,26 +56,26 @@
 
 #else
 
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+#   if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 
-template< typename Vector, BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at;
+template< typename Vector, NDNBOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at;
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, n_) >
 struct at_impl< aux::vector_tag<n_> >
 {
     template< typename Vector, typename N > struct apply
 #if !defined(__BORLANDC__)
         : v_at<
               Vector
-            , BOOST_MPL_AUX_VALUE_WKND(N)::value
+            , NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
             >
     {
 #else
     {
         typedef typename v_at<
               Vector
-            , BOOST_MPL_AUX_VALUE_WKND(N)::value
+            , NDNBOOST_MPL_AUX_VALUE_WKND(N)::value
             >::type type;
 #endif
     };
@@ -85,7 +85,7 @@
 
 namespace aux {
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at_impl
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, n_) > struct v_at_impl
 {
     template< typename V > struct result_;
 };
@@ -101,16 +101,16 @@
 
 } // namespace aux
 
-template< typename T, BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+template< typename T, NDNBOOST_MPL_AUX_NTTP_DECL(long, n_) >
 struct v_at
     : aux::v_at_impl<n_>::template result_<T>
 {
 };
 
-#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_AT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/back.hpp b/include/ndnboost/mpl/vector/aux_/back.hpp
index d952c62..e7946af 100644
--- a/include/ndnboost/mpl/vector/aux_/back.hpp
+++ b/include/ndnboost/mpl/vector/aux_/back.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,7 +23,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template<>
 struct back_impl< aux::vector_tag >
@@ -39,7 +39,7 @@
 
 #else
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< long n_ >
 struct back_impl< aux::vector_tag<n_> >
@@ -50,10 +50,10 @@
     };
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_BACK_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/begin_end.hpp b/include/ndnboost/mpl/vector/aux_/begin_end.hpp
index f345503..1b4d068 100644
--- a/include/ndnboost/mpl/vector/aux_/begin_end.hpp
+++ b/include/ndnboost/mpl/vector/aux_/begin_end.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -16,7 +16,7 @@
 
 #include <ndnboost/mpl/aux_/config/typeof.hpp>
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   include <ndnboost/mpl/begin_end_fwd.hpp>
 #   include <ndnboost/mpl/vector/aux_/iterator.hpp>
@@ -44,6 +44,6 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
-#endif // BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/clear.hpp b/include/ndnboost/mpl/vector/aux_/clear.hpp
index db09943..6bbc78c 100644
--- a/include/ndnboost/mpl/vector/aux_/clear.hpp
+++ b/include/ndnboost/mpl/vector/aux_/clear.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -22,7 +22,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template<>
 struct clear_impl< aux::vector_tag >
@@ -35,7 +35,7 @@
 
 #else
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< long N >
 struct clear_impl< aux::vector_tag<N> >
@@ -46,10 +46,10 @@
     };
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/empty.hpp b/include/ndnboost/mpl/vector/aux_/empty.hpp
index 678af94..91779e3 100644
--- a/include/ndnboost/mpl/vector/aux_/empty.hpp
+++ b/include/ndnboost/mpl/vector/aux_/empty.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,7 +23,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template<>
 struct empty_impl< aux::vector_tag >
@@ -48,7 +48,7 @@
     };
 };
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< long N >
 struct empty_impl< aux::vector_tag<N> >
@@ -59,10 +59,10 @@
     };
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_EMPTY_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/front.hpp b/include/ndnboost/mpl/vector/aux_/front.hpp
index 7705d3d..d01b4ae 100644
--- a/include/ndnboost/mpl/vector/aux_/front.hpp
+++ b/include/ndnboost/mpl/vector/aux_/front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2008
 //
@@ -23,7 +23,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template<>
 struct front_impl< aux::vector_tag >
@@ -36,9 +36,9 @@
 
 #else
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
-template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, n_) >
 struct front_impl< aux::vector_tag<n_> >
 {
     template< typename Vector > struct apply
@@ -47,10 +47,10 @@
     };
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/include_preprocessed.hpp b/include/ndnboost/mpl/vector/aux_/include_preprocessed.hpp
index 3cd7b7c..34270da 100644
--- a/include/ndnboost/mpl/vector/aux_/include_preprocessed.hpp
+++ b/include/ndnboost/mpl/vector/aux_/include_preprocessed.hpp
@@ -21,35 +21,35 @@
 #include <ndnboost/preprocessor/cat.hpp>
 #include <ndnboost/preprocessor/stringize.hpp>
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 #   define AUX778076_INCLUDE_DIR typeof_based
-#elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-   || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+#elif defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+   || defined(NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 #   define AUX778076_INCLUDE_DIR no_ctps
 #else
 #   define AUX778076_INCLUDE_DIR plain
 #endif
 
-#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
+#if !defined(NDNBOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 #   define AUX778076_HEADER \
-    AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER \
+    AUX778076_INCLUDE_DIR/NDNBOOST_MPL_PREPROCESSED_HEADER \
 /**/
 #else
 #   define AUX778076_HEADER \
-    BOOST_PP_CAT(AUX778076_INCLUDE_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
+    NDNBOOST_PP_CAT(AUX778076_INCLUDE_DIR,/)##NDNBOOST_MPL_PREPROCESSED_HEADER \
 /**/
 #endif
 
 
-#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
-#   define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(ndnboost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
+#if NDNBOOST_WORKAROUND(__IBMCPP__, NDNBOOST_TESTED_AT(700))
+#   define AUX778076_INCLUDE_STRING NDNBOOST_PP_STRINGIZE(ndnboost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
 #   include AUX778076_INCLUDE_STRING
 #   undef AUX778076_INCLUDE_STRING
 #else
-#   include BOOST_PP_STRINGIZE(ndnboost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
+#   include NDNBOOST_PP_STRINGIZE(ndnboost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
 #endif
 
 #   undef AUX778076_HEADER
 #   undef AUX778076_INCLUDE_DIR
 
-#undef BOOST_MPL_PREPROCESSED_HEADER
+#undef NDNBOOST_MPL_PREPROCESSED_HEADER
diff --git a/include/ndnboost/mpl/vector/aux_/item.hpp b/include/ndnboost/mpl/vector/aux_/item.hpp
index 7e3885c..8858aa0 100644
--- a/include/ndnboost/mpl/vector/aux_/item.hpp
+++ b/include/ndnboost/mpl/vector/aux_/item.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -23,7 +23,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template< 
       typename T
@@ -96,8 +96,8 @@
     using Base::item_;
 };
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/iterator.hpp b/include/ndnboost/mpl/vector/aux_/iterator.hpp
index 8a7915b..799d0e7 100644
--- a/include/ndnboost/mpl/vector/aux_/iterator.hpp
+++ b/include/ndnboost/mpl/vector/aux_/iterator.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
-#define BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
+#define NDNBOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,7 +31,7 @@
 
 template<
       typename Vector
-    , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, n_)
     >
 struct v_iter
 {
@@ -42,7 +42,7 @@
     typedef Vector vector_;
     typedef mpl::long_<n_> pos;
 
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
     enum { 
           next_ = n_ + 1
         , prior_ = n_ - 1
@@ -56,11 +56,11 @@
 };
 
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template<
       typename Vector
-    , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, n_)
     >
 struct next< v_iter<Vector,n_> >
 {
@@ -69,7 +69,7 @@
 
 template<
       typename Vector
-    , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, n_)
     >
 struct prior< v_iter<Vector,n_> >
 {
@@ -78,28 +78,28 @@
 
 template<
       typename Vector
-    , BOOST_MPL_AUX_NTTP_DECL(long, n_)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, n_)
     , typename Distance
     >
 struct advance< v_iter<Vector,n_>,Distance>
 {
     typedef v_iter<
           Vector
-        , (n_ + BOOST_MPL_AUX_NESTED_VALUE_WKND(long, Distance))
+        , (n_ + NDNBOOST_MPL_AUX_NESTED_VALUE_WKND(long, Distance))
         > type;
 };
 
 template< 
       typename Vector
-    , BOOST_MPL_AUX_NTTP_DECL(long, n_)
-    , BOOST_MPL_AUX_NTTP_DECL(long, m_)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, n_)
+    , NDNBOOST_MPL_AUX_NTTP_DECL(long, m_)
     > 
 struct distance< v_iter<Vector,n_>, v_iter<Vector,m_> >
     : mpl::long_<(m_ - n_)>
 {
 };
 
-#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
 template<> struct advance_impl<aux::v_iter_tag>
 {
@@ -119,7 +119,7 @@
     {
         enum { pos1_ = Iter1::pos_, pos2_ = Iter2::pos_ };
         typedef long_<( pos2_ - pos1_ )> type;
-        BOOST_STATIC_CONSTANT(long, value = ( pos2_ - pos1_ ));
+        NDNBOOST_STATIC_CONSTANT(long, value = ( pos2_ - pos1_ ));
     };
 };
 
@@ -127,4 +127,4 @@
 
 }}
 
-#endif // BOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
+#endif // NDNBOOST_MPL_AUX_VECTOR_ITERATOR_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/numbered.hpp b/include/ndnboost/mpl/vector/aux_/numbered.hpp
index 98ebc50..d256e31 100644
--- a/include/ndnboost/mpl/vector/aux_/numbered.hpp
+++ b/include/ndnboost/mpl/vector/aux_/numbered.hpp
@@ -1,7 +1,7 @@
 
 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
 
-#if defined(BOOST_PP_IS_ITERATING)
+#if defined(NDNBOOST_PP_IS_ITERATING)
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -22,27 +22,27 @@
 #include <ndnboost/preprocessor/dec.hpp>
 #include <ndnboost/preprocessor/cat.hpp>
 
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   define AUX778076_VECTOR_TAIL(vector, i_, T) \
-    BOOST_PP_CAT(vector,i_)< \
-          BOOST_PP_ENUM_PARAMS(i_, T) \
+    NDNBOOST_PP_CAT(vector,i_)< \
+          NDNBOOST_PP_ENUM_PARAMS(i_, T) \
         > \
     /**/
 
 #if i_ > 0
 template<
-      BOOST_PP_ENUM_PARAMS(i_, typename T)
+      NDNBOOST_PP_ENUM_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(vector,i_)
+struct NDNBOOST_PP_CAT(vector,i_)
     : v_item<
-          BOOST_PP_CAT(T,BOOST_PP_DEC(i_))
-        , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),T)
+          NDNBOOST_PP_CAT(T,NDNBOOST_PP_DEC(i_))
+        , AUX778076_VECTOR_TAIL(vector,NDNBOOST_PP_DEC(i_),T)
         >
 {
-    typedef BOOST_PP_CAT(vector,i_) type;
+    typedef NDNBOOST_PP_CAT(vector,i_) type;
 };
 #endif
 
@@ -53,21 +53,21 @@
 #   if i_ > 0
 
 template<
-      BOOST_PP_ENUM_PARAMS(i_, typename T)
+      NDNBOOST_PP_ENUM_PARAMS(i_, typename T)
     >
-struct BOOST_PP_CAT(vector,i_)
+struct NDNBOOST_PP_CAT(vector,i_)
 {
     typedef aux::vector_tag<i_> tag;
-    typedef BOOST_PP_CAT(vector,i_) type;
+    typedef NDNBOOST_PP_CAT(vector,i_) type;
 
 #   define AUX778076_VECTOR_ITEM(unused, i_, unused2) \
-    typedef BOOST_PP_CAT(T,i_) BOOST_PP_CAT(item,i_); \
+    typedef NDNBOOST_PP_CAT(T,i_) NDNBOOST_PP_CAT(item,i_); \
     /**/
 
-    BOOST_PP_REPEAT(i_, AUX778076_VECTOR_ITEM, unused)
+    NDNBOOST_PP_REPEAT(i_, AUX778076_VECTOR_ITEM, unused)
 #   undef AUX778076_VECTOR_ITEM
-    typedef void_ BOOST_PP_CAT(item,i_);
-    typedef BOOST_PP_CAT(T,BOOST_PP_DEC(i_)) back;
+    typedef void_ NDNBOOST_PP_CAT(item,i_);
+    typedef NDNBOOST_PP_CAT(T,NDNBOOST_PP_DEC(i_)) back;
 
     // Borland forces us to use 'type' here (instead of the class name)
     typedef v_iter<type,0> begin;
@@ -75,14 +75,14 @@
 };
 
 template<>
-struct push_front_impl< aux::vector_tag<BOOST_PP_DEC(i_)> >
+struct push_front_impl< aux::vector_tag<NDNBOOST_PP_DEC(i_)> >
 {
     template< typename Vector, typename T > struct apply
     {
-        typedef BOOST_PP_CAT(vector,i_)<
+        typedef NDNBOOST_PP_CAT(vector,i_)<
               T
-              BOOST_PP_COMMA_IF(BOOST_PP_DEC(i_))
-              BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item)
+              NDNBOOST_PP_COMMA_IF(NDNBOOST_PP_DEC(i_))
+              NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_DEC(i_), typename Vector::item)
             > type;
     };
 };
@@ -92,21 +92,21 @@
 {
     template< typename Vector > struct apply
     {
-        typedef BOOST_PP_CAT(vector,BOOST_PP_DEC(i_))<
-              BOOST_PP_ENUM_SHIFTED_PARAMS(i_, typename Vector::item)
+        typedef NDNBOOST_PP_CAT(vector,NDNBOOST_PP_DEC(i_))<
+              NDNBOOST_PP_ENUM_SHIFTED_PARAMS(i_, typename Vector::item)
             > type;
     };
 };
 
 
 template<>
-struct push_back_impl< aux::vector_tag<BOOST_PP_DEC(i_)> >
+struct push_back_impl< aux::vector_tag<NDNBOOST_PP_DEC(i_)> >
 {
     template< typename Vector, typename T > struct apply
     {
-        typedef BOOST_PP_CAT(vector,i_)<
-              BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item)
-              BOOST_PP_COMMA_IF(BOOST_PP_DEC(i_))
+        typedef NDNBOOST_PP_CAT(vector,i_)<
+              NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_DEC(i_), typename Vector::item)
+              NDNBOOST_PP_COMMA_IF(NDNBOOST_PP_DEC(i_))
               T
             > type;
     };
@@ -117,21 +117,21 @@
 {
     template< typename Vector > struct apply
     {
-        typedef BOOST_PP_CAT(vector,BOOST_PP_DEC(i_))<
-              BOOST_PP_ENUM_PARAMS(BOOST_PP_DEC(i_), typename Vector::item)
+        typedef NDNBOOST_PP_CAT(vector,NDNBOOST_PP_DEC(i_))<
+              NDNBOOST_PP_ENUM_PARAMS(NDNBOOST_PP_DEC(i_), typename Vector::item)
             > type;
     };
 };
 
 #   endif // i_ > 0
 
-#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
-    && !defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
+#   if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+    && !defined(NDNBOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 
 template< typename V >
 struct v_at<V,i_>
 {
-    typedef typename V::BOOST_PP_CAT(item,i_) type;
+    typedef typename V::NDNBOOST_PP_CAT(item,i_) type;
 };
 
 #   else
@@ -141,7 +141,7 @@
 {
     template< typename V_ > struct result_
     {
-        typedef typename V_::BOOST_PP_CAT(item,i_) type;
+        typedef typename V_::NDNBOOST_PP_CAT(item,i_) type;
     };
 };
 }
@@ -151,7 +151,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -209,10 +209,10 @@
     };
 };
 
-#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#   endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 #undef i_
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/vector/aux_/numbered_c.hpp b/include/ndnboost/mpl/vector/aux_/numbered_c.hpp
index f7a6db8..a9fd904 100644
--- a/include/ndnboost/mpl/vector/aux_/numbered_c.hpp
+++ b/include/ndnboost/mpl/vector/aux_/numbered_c.hpp
@@ -1,7 +1,7 @@
 
 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
 
-#if defined(BOOST_PP_IS_ITERATING)
+#if defined(NDNBOOST_PP_IS_ITERATING)
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -22,28 +22,28 @@
 #include <ndnboost/preprocessor/dec.hpp>
 #include <ndnboost/preprocessor/cat.hpp>
 
-#define i_ BOOST_PP_FRAME_ITERATION(1)
+#define i_ NDNBOOST_PP_FRAME_ITERATION(1)
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   define AUX778076_VECTOR_TAIL(vector, i_, C) \
-    BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)<T \
-          BOOST_PP_COMMA_IF(i_) BOOST_PP_ENUM_PARAMS(i_, C) \
+    NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(vector,i_),_c)<T \
+          NDNBOOST_PP_COMMA_IF(i_) NDNBOOST_PP_ENUM_PARAMS(i_, C) \
         > \
     /**/
 
 #if i_ > 0
 template<
       typename T
-    , BOOST_PP_ENUM_PARAMS(i_, T C)
+    , NDNBOOST_PP_ENUM_PARAMS(i_, T C)
     >
-struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
+struct NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(vector,i_),_c)
     : v_item<
-          integral_c<T,BOOST_PP_CAT(C,BOOST_PP_DEC(i_))>
-        , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),C)
+          integral_c<T,NDNBOOST_PP_CAT(C,NDNBOOST_PP_DEC(i_))>
+        , AUX778076_VECTOR_TAIL(vector,NDNBOOST_PP_DEC(i_),C)
         >
 {
-    typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
+    typedef NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(vector,i_),_c) type;
     typedef T value_type;
 };
 #endif
@@ -53,25 +53,25 @@
 #else // "brute force" implementation
 
 #   define AUX778076_VECTOR_C_PARAM_FUNC(unused, i_, param) \
-    BOOST_PP_COMMA_IF(i_) \
-    integral_c<T,BOOST_PP_CAT(param,i_)> \
+    NDNBOOST_PP_COMMA_IF(i_) \
+    integral_c<T,NDNBOOST_PP_CAT(param,i_)> \
     /**/
 
 template<
       typename T
-    , BOOST_PP_ENUM_PARAMS(i_, T C)
+    , NDNBOOST_PP_ENUM_PARAMS(i_, T C)
     >
-struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
-    : BOOST_PP_CAT(vector,i_)< BOOST_PP_REPEAT(i_,AUX778076_VECTOR_C_PARAM_FUNC,C) >
+struct NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(vector,i_),_c)
+    : NDNBOOST_PP_CAT(vector,i_)< NDNBOOST_PP_REPEAT(i_,AUX778076_VECTOR_C_PARAM_FUNC,C) >
 {
-    typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
+    typedef NDNBOOST_PP_CAT(NDNBOOST_PP_CAT(vector,i_),_c) type;
     typedef T value_type;
 };
 
 #   undef AUX778076_VECTOR_C_PARAM_FUNC
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 #undef i_
 
-#endif // BOOST_PP_IS_ITERATING
+#endif // NDNBOOST_PP_IS_ITERATING
diff --git a/include/ndnboost/mpl/vector/aux_/pop_back.hpp b/include/ndnboost/mpl/vector/aux_/pop_back.hpp
index d80bd67..fb603aa 100644
--- a/include/ndnboost/mpl/vector/aux_/pop_back.hpp
+++ b/include/ndnboost/mpl/vector/aux_/pop_back.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/pop_back_fwd.hpp>
 #include <ndnboost/mpl/aux_/config/typeof.hpp>
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   include <ndnboost/mpl/vector/aux_/item.hpp>
 #   include <ndnboost/mpl/vector/aux_/tag.hpp>
@@ -35,6 +35,6 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
-#endif // BOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_POP_BACK_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/pop_front.hpp b/include/ndnboost/mpl/vector/aux_/pop_front.hpp
index da7e7a8..497b540 100644
--- a/include/ndnboost/mpl/vector/aux_/pop_front.hpp
+++ b/include/ndnboost/mpl/vector/aux_/pop_front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/pop_front_fwd.hpp>
 #include <ndnboost/mpl/aux_/config/typeof.hpp>
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   include <ndnboost/mpl/vector/aux_/item.hpp>
 #   include <ndnboost/mpl/vector/aux_/tag.hpp>
@@ -35,6 +35,6 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
-#endif // BOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_POP_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp
index 08300c6..1f9ae7f 100644
--- a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp
+++ b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp
@@ -27,7 +27,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -131,7 +131,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -268,7 +268,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -406,7 +406,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -549,7 +549,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -693,7 +693,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -843,7 +843,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -994,7 +994,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1150,7 +1150,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1307,7 +1307,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1469,7 +1469,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
diff --git a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp
index fc56907..2fb6d7d 100644
--- a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp
+++ b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp
@@ -119,7 +119,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -288,7 +288,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -458,7 +458,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -633,7 +633,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -809,7 +809,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -991,7 +991,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1174,7 +1174,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1362,7 +1362,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1551,7 +1551,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1745,7 +1745,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
diff --git a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp
index 7bbc9e0..d0705f6 100644
--- a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp
+++ b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp
@@ -151,7 +151,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -352,7 +352,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -554,7 +554,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -761,7 +761,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -969,7 +969,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1183,7 +1183,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1398,7 +1398,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1618,7 +1618,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1839,7 +1839,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -2065,7 +2065,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
diff --git a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp
index bbcfe78..b520455 100644
--- a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp
+++ b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp
@@ -183,7 +183,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -416,7 +416,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -650,7 +650,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -889,7 +889,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1129,7 +1129,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1375,7 +1375,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1622,7 +1622,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1874,7 +1874,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -2127,7 +2127,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -2385,7 +2385,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
diff --git a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp
index 26ca77d..2e6e5de 100644
--- a/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp
+++ b/include/ndnboost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp
@@ -215,7 +215,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -480,7 +480,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -746,7 +746,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1017,7 +1017,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1289,7 +1289,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1567,7 +1567,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -1846,7 +1846,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -2130,7 +2130,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -2415,7 +2415,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
@@ -2705,7 +2705,7 @@
 {
     template< typename V_, typename N > struct apply
     {
-        typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
+        typedef typename aux::v_at_impl<NDNBOOST_MPL_AUX_VALUE_WKND(N)::value>
             ::template result_<V_>::type type;
     };
 };
diff --git a/include/ndnboost/mpl/vector/aux_/push_back.hpp b/include/ndnboost/mpl/vector/aux_/push_back.hpp
index d2722b2..f61d9b2 100644
--- a/include/ndnboost/mpl/vector/aux_/push_back.hpp
+++ b/include/ndnboost/mpl/vector/aux_/push_back.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/push_back_fwd.hpp>
 #include <ndnboost/mpl/aux_/config/typeof.hpp>
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   include <ndnboost/mpl/vector/aux_/item.hpp>
 #   include <ndnboost/mpl/vector/aux_/tag.hpp>
@@ -37,4 +37,4 @@
 
 #endif 
 
-#endif // BOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_PUSH_BACK_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/push_front.hpp b/include/ndnboost/mpl/vector/aux_/push_front.hpp
index 1200174..0643fef 100644
--- a/include/ndnboost/mpl/vector/aux_/push_front.hpp
+++ b/include/ndnboost/mpl/vector/aux_/push_front.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -17,7 +17,7 @@
 #include <ndnboost/mpl/push_front_fwd.hpp>
 #include <ndnboost/mpl/aux_/config/typeof.hpp>
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 #   include <ndnboost/mpl/vector/aux_/item.hpp>
 #   include <ndnboost/mpl/vector/aux_/tag.hpp>
@@ -35,6 +35,6 @@
 
 }}
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
-#endif // BOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_PUSH_FRONT_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/size.hpp b/include/ndnboost/mpl/vector/aux_/size.hpp
index dc9749f..e387afa 100644
--- a/include/ndnboost/mpl/vector/aux_/size.hpp
+++ b/include/ndnboost/mpl/vector/aux_/size.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -22,7 +22,7 @@
 
 namespace ndnboost { namespace mpl {
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 
 template<>
 struct size_impl< aux::vector_tag >
@@ -32,7 +32,7 @@
 
 #else
 
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
+#if !defined(NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 
 template< long N >
 struct size_impl< aux::vector_tag<N> >
@@ -40,10 +40,10 @@
 {
 };
 
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // NDNBOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 
-#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
+#endif // NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_SIZE_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/tag.hpp b/include/ndnboost/mpl/vector/aux_/tag.hpp
index 9576454..bcd51d4 100644
--- a/include/ndnboost/mpl/vector/aux_/tag.hpp
+++ b/include/ndnboost/mpl/vector/aux_/tag.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -21,12 +21,12 @@
 
 struct v_iter_tag;
 
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 struct vector_tag;
 #else
-template< BOOST_MPL_AUX_NTTP_DECL(long, N) > struct vector_tag;
+template< NDNBOOST_MPL_AUX_NTTP_DECL(long, N) > struct vector_tag;
 #endif
 
 }}}
 
-#endif // BOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_TAG_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/aux_/vector0.hpp b/include/ndnboost/mpl/vector/aux_/vector0.hpp
index a54058b..8aadb13 100644
--- a/include/ndnboost/mpl/vector/aux_/vector0.hpp
+++ b/include/ndnboost/mpl/vector/aux_/vector0.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -29,7 +29,7 @@
 
 template<> struct vector0<na>
 {
-#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
+#if defined(NDNBOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
     typedef aux::vector_tag tag;
     typedef vector0         type;
     typedef long_<32768>    lower_bound_;
@@ -49,4 +49,4 @@
 
 }}
 
-#endif // BOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_AUX_VECTOR0_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector0.hpp b/include/ndnboost/mpl/vector/vector0.hpp
index f23f5d2..fe11b61 100644
--- a/include/ndnboost/mpl/vector/vector0.hpp
+++ b/include/ndnboost/mpl/vector/vector0.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -31,4 +31,4 @@
 #include <ndnboost/mpl/vector/aux_/begin_end.hpp>
 #include <ndnboost/mpl/vector/aux_/tag.hpp>
 
-#endif // BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector0_c.hpp b/include/ndnboost/mpl/vector/vector0_c.hpp
index 6b28472..1c6bbab 100644
--- a/include/ndnboost/mpl/vector/vector0_c.hpp
+++ b/include/ndnboost/mpl/vector/vector0_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -28,4 +28,4 @@
 
 }}
 
-#endif // BOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR0_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector10.hpp b/include/ndnboost/mpl/vector/vector10.hpp
index 45c937a..0db48cb 100644
--- a/include/ndnboost/mpl/vector/vector10.hpp
+++ b/include/ndnboost/mpl/vector/vector10.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector0.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector10.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector10.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -34,12 +34,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(0, 10, <ndnboost/mpl/vector/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector10_c.hpp b/include/ndnboost/mpl/vector/vector10_c.hpp
index 68efb63..cafd1f9 100644
--- a/include/ndnboost/mpl/vector/vector10_c.hpp
+++ b/include/ndnboost/mpl/vector/vector10_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,17 +14,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector0_c.hpp>
 #   include <ndnboost/mpl/vector/vector10.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector10_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector10_c.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -35,12 +35,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(1, 10, <ndnboost/mpl/vector/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR10_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector20.hpp b/include/ndnboost/mpl/vector/vector20.hpp
index ae54255..7b0a0d4 100644
--- a/include/ndnboost/mpl/vector/vector20.hpp
+++ b/include/ndnboost/mpl/vector/vector20.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector10.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector20.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector20.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -34,12 +34,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(11, 20, <ndnboost/mpl/vector/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector20_c.hpp b/include/ndnboost/mpl/vector/vector20_c.hpp
index fe8d591..0324ed2 100644
--- a/include/ndnboost/mpl/vector/vector20_c.hpp
+++ b/include/ndnboost/mpl/vector/vector20_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,17 +14,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector10_c.hpp>
 #   include <ndnboost/mpl/vector/vector20.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector20_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector20_c.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -35,12 +35,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(11, 20, <ndnboost/mpl/vector/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR20_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector30.hpp b/include/ndnboost/mpl/vector/vector30.hpp
index 5898155..4ee4e46 100644
--- a/include/ndnboost/mpl/vector/vector30.hpp
+++ b/include/ndnboost/mpl/vector/vector30.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector20.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector30.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector30.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -34,12 +34,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(21, 30, <ndnboost/mpl/vector/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR30_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector30_c.hpp b/include/ndnboost/mpl/vector/vector30_c.hpp
index 9cc9300..5ca10f2 100644
--- a/include/ndnboost/mpl/vector/vector30_c.hpp
+++ b/include/ndnboost/mpl/vector/vector30_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,17 +14,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector20_c.hpp>
 #   include <ndnboost/mpl/vector/vector30.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector30_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector30_c.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -36,12 +36,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(21, 30, <ndnboost/mpl/vector/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_USE_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_USE_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR30_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector40.hpp b/include/ndnboost/mpl/vector/vector40.hpp
index f92d0a3..555ffd7 100644
--- a/include/ndnboost/mpl/vector/vector40.hpp
+++ b/include/ndnboost/mpl/vector/vector40.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector30.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector40.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector40.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -34,12 +34,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(31, 40, <ndnboost/mpl/vector/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR40_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector40_c.hpp b/include/ndnboost/mpl/vector/vector40_c.hpp
index 10969f4..5047a02 100644
--- a/include/ndnboost/mpl/vector/vector40_c.hpp
+++ b/include/ndnboost/mpl/vector/vector40_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,17 +14,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector30_c.hpp>
 #   include <ndnboost/mpl/vector/vector40.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector40_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector40_c.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -35,12 +35,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(31, 40, <ndnboost/mpl/vector/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR40_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector50.hpp b/include/ndnboost/mpl/vector/vector50.hpp
index 998e950..6fa916a 100644
--- a/include/ndnboost/mpl/vector/vector50.hpp
+++ b/include/ndnboost/mpl/vector/vector50.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,16 +14,16 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector40.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
-    && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+    && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector50.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector50.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -34,12 +34,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(41, 50, <ndnboost/mpl/vector/aux_/numbered.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR50_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/vector/vector50_c.hpp b/include/ndnboost/mpl/vector/vector50_c.hpp
index ea057be..3bdcf64 100644
--- a/include/ndnboost/mpl/vector/vector50_c.hpp
+++ b/include/ndnboost/mpl/vector/vector50_c.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
-#define BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
+#define NDNBOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2000-2004
 //
@@ -14,17 +14,17 @@
 // $Date: 2008-10-10 23:19:02 -0700 (Fri, 10 Oct 2008) $
 // $Revision: 49267 $
 
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 #   include <ndnboost/mpl/vector/vector40_c.hpp>
 #   include <ndnboost/mpl/vector/vector50.hpp>
 #endif
 
 #include <ndnboost/mpl/aux_/config/use_preprocessed.hpp>
 
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
+#if !defined(NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
+ && !defined(NDNBOOST_MPL_PREPROCESSING_MODE)
 
-#   define BOOST_MPL_PREPROCESSED_HEADER vector50_c.hpp
+#   define NDNBOOST_MPL_PREPROCESSED_HEADER vector50_c.hpp
 #   include <ndnboost/mpl/vector/aux_/include_preprocessed.hpp>
 
 #else
@@ -35,12 +35,12 @@
 
 namespace ndnboost { namespace mpl {
 
-#   define BOOST_PP_ITERATION_PARAMS_1 \
+#   define NDNBOOST_PP_ITERATION_PARAMS_1 \
     (3,(41, 50, <ndnboost/mpl/vector/aux_/numbered_c.hpp>))
-#   include BOOST_PP_ITERATE()
+#   include NDNBOOST_PP_ITERATE()
 
 }}
 
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif // NDNBOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 
-#endif // BOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VECTOR_VECTOR50_C_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/void.hpp b/include/ndnboost/mpl/void.hpp
index a5c7aef..9aa237b 100644
--- a/include/ndnboost/mpl/void.hpp
+++ b/include/ndnboost/mpl/void.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VOID_HPP_INCLUDED
-#define BOOST_MPL_VOID_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VOID_HPP_INCLUDED
+#define NDNBOOST_MPL_VOID_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -20,7 +20,7 @@
 #include <ndnboost/mpl/aux_/config/msvc.hpp>
 #include <ndnboost/mpl/aux_/config/workaround.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 //  [JDG Feb-4-2003] made void_ a complete type to allow it to be
 //  instantiated so that it can be passed in as an object that can be
@@ -28,7 +28,7 @@
 //  a zero arity functor evaluation call.
 struct void_ { typedef void_ type; };
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 
 namespace ndnboost { namespace mpl {
 
@@ -36,7 +36,7 @@
 struct is_void_
     : false_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using false_::value;
 #endif
 };
@@ -45,7 +45,7 @@
 struct is_void_<void_>
     : true_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using true_::value;
 #endif
 };
@@ -54,7 +54,7 @@
 struct is_not_void_
     : true_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using true_::value;
 #endif
 };
@@ -63,14 +63,14 @@
 struct is_not_void_<void_>
     : false_
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300)
     using false_::value;
 #endif
 };
 
-BOOST_MPL_AUX_NA_SPEC(1, is_void_)
-BOOST_MPL_AUX_NA_SPEC(1, is_not_void_)
+NDNBOOST_MPL_AUX_NA_SPEC(1, is_void_)
+NDNBOOST_MPL_AUX_NA_SPEC(1, is_not_void_)
 
 }}
 
-#endif // BOOST_MPL_VOID_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VOID_HPP_INCLUDED
diff --git a/include/ndnboost/mpl/void_fwd.hpp b/include/ndnboost/mpl/void_fwd.hpp
index bb493d7..0f2a76d 100644
--- a/include/ndnboost/mpl/void_fwd.hpp
+++ b/include/ndnboost/mpl/void_fwd.hpp
@@ -1,6 +1,6 @@
 
-#ifndef BOOST_MPL_VOID_FWD_HPP_INCLUDED
-#define BOOST_MPL_VOID_FWD_HPP_INCLUDED
+#ifndef NDNBOOST_MPL_VOID_FWD_HPP_INCLUDED
+#define NDNBOOST_MPL_VOID_FWD_HPP_INCLUDED
 
 // Copyright Aleksey Gurtovoy 2001-2004
 //
@@ -16,11 +16,11 @@
 
 #include <ndnboost/mpl/aux_/adl_barrier.hpp>
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 
 struct void_;
 
-BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
-BOOST_MPL_AUX_ADL_BARRIER_DECL(void_)
+NDNBOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
+NDNBOOST_MPL_AUX_ADL_BARRIER_DECL(void_)
 
-#endif // BOOST_MPL_VOID_FWD_HPP_INCLUDED
+#endif // NDNBOOST_MPL_VOID_FWD_HPP_INCLUDED
