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
