diff --git a/include/ndnboost/concept/assert.hpp b/include/ndnboost/concept/assert.hpp
index 148c5ad..5db4cce 100644
--- a/include/ndnboost/concept/assert.hpp
+++ b/include/ndnboost/concept/assert.hpp
@@ -1,8 +1,8 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_ASSERT_DWA2006430_HPP
-# define BOOST_CONCEPT_ASSERT_DWA2006430_HPP
+#ifndef NDNBOOST_CONCEPT_ASSERT_DWA2006430_HPP
+# define NDNBOOST_CONCEPT_ASSERT_DWA2006430_HPP
 
 # include <ndnboost/config.hpp>
 # include <ndnboost/detail/workaround.hpp>
@@ -15,22 +15,22 @@
 // The old protocol is deprecated, though, and backward compatibility
 // will no longer be the default in the next release.
 
-# if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT)                                         \
-    && !defined(BOOST_NO_SFINAE)                                                    \
+# if !defined(NDNBOOST_NO_OLD_CONCEPT_SUPPORT)                                         \
+    && !defined(NDNBOOST_NO_SFINAE)                                                    \
                                                                                     \
-    && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \
-    && !(BOOST_WORKAROUND(__GNUC__, == 2))
+    && !(NDNBOOST_WORKAROUND(__GNUC__, == 3) && NDNBOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \
+    && !(NDNBOOST_WORKAROUND(__GNUC__, == 2))
 
 // Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to
 // check for the presence of particularmember functions.
 
-#  define BOOST_OLD_CONCEPT_SUPPORT
+#  define NDNBOOST_OLD_CONCEPT_SUPPORT
 
 # endif
 
-# ifdef BOOST_MSVC
+# ifdef NDNBOOST_MSVC
 #  include <ndnboost/concept/detail/msvc.hpp>
-# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# elif NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x564))
 #  include <ndnboost/concept/detail/borland.hpp>
 # else 
 #  include <ndnboost/concept/detail/general.hpp>
@@ -38,9 +38,9 @@
 
   // Usage, in class or function context:
   //
-  //     BOOST_CONCEPT_ASSERT((UnaryFunctionConcept<F,bool,int>));
+  //     NDNBOOST_CONCEPT_ASSERT((UnaryFunctionConcept<F,bool,int>));
   //
-# define BOOST_CONCEPT_ASSERT(ModelInParens) \
-    BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
+# define NDNBOOST_CONCEPT_ASSERT(ModelInParens) \
+    NDNBOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
 
-#endif // BOOST_CONCEPT_ASSERT_DWA2006430_HPP
+#endif // NDNBOOST_CONCEPT_ASSERT_DWA2006430_HPP
diff --git a/include/ndnboost/concept/detail/backward_compatibility.hpp b/include/ndnboost/concept/detail/backward_compatibility.hpp
index f284564..536d011 100644
--- a/include/ndnboost/concept/detail/backward_compatibility.hpp
+++ b/include/ndnboost/concept/detail/backward_compatibility.hpp
@@ -1,16 +1,16 @@
 // Copyright David Abrahams 2009. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
-# define BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
+#ifndef NDNBOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
+# define NDNBOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
 
 namespace ndnboost
 {
   namespace concepts {}
 
-# if defined(BOOST_HAS_CONCEPTS) && !defined(BOOST_CONCEPT_NO_BACKWARD_KEYWORD)
+# if defined(NDNBOOST_HAS_CONCEPTS) && !defined(NDNBOOST_CONCEPT_NO_BACKWARD_KEYWORD)
   namespace concept = concepts;
 # endif 
 } // namespace ndnboost::concept
 
-#endif // BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
+#endif // NDNBOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
diff --git a/include/ndnboost/concept/detail/borland.hpp b/include/ndnboost/concept/detail/borland.hpp
index ade28ca..8518175 100644
--- a/include/ndnboost/concept/detail/borland.hpp
+++ b/include/ndnboost/concept/detail/borland.hpp
@@ -1,8 +1,8 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
-# define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+#ifndef NDNBOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+# define NDNBOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
 
 # include <ndnboost/preprocessor/cat.hpp>
 # include <ndnboost/concept/detail/backward_compatibility.hpp>
@@ -18,13 +18,13 @@
     enum { instantiate = sizeof((((Model*)0)->~Model()), 3) };
 };
 
-#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )         \
+#  define NDNBOOST_CONCEPT_ASSERT_FN( ModelFnPtr )         \
   enum                                                  \
   {                                                     \
-      BOOST_PP_CAT(boost_concept_check,__LINE__) =      \
+      NDNBOOST_PP_CAT(boost_concept_check,__LINE__) =      \
       ndnboost::concepts::require<ModelFnPtr>::instantiate  \
   }
 
 }} // namespace ndnboost::concept
 
-#endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
+#endif // NDNBOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
diff --git a/include/ndnboost/concept/detail/concept_def.hpp b/include/ndnboost/concept/detail/concept_def.hpp
index 59da034..196162e 100644
--- a/include/ndnboost/concept/detail/concept_def.hpp
+++ b/include/ndnboost/concept/detail/concept_def.hpp
@@ -1,51 +1,51 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
-# define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+#ifndef NDNBOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+# define NDNBOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
 # include <ndnboost/preprocessor/seq/for_each_i.hpp>
 # include <ndnboost/preprocessor/seq/enum.hpp>
 # include <ndnboost/preprocessor/comma_if.hpp>
 # include <ndnboost/preprocessor/cat.hpp>
-#endif // BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
+#endif // NDNBOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
 
-// BOOST_concept(SomeName, (p1)(p2)...(pN))
+// NDNBOOST_concept(SomeName, (p1)(p2)...(pN))
 //
 // Expands to "template <class p1, class p2, ...class pN> struct SomeName"
 //
 // Also defines an equivalent SomeNameConcept for backward compatibility.
 // Maybe in the next release we can kill off the "Concept" suffix for good.
-#if BOOST_WORKAROUND(__GNUC__, <= 3)
-# define BOOST_concept(name, params)                                            \
-    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
+#if NDNBOOST_WORKAROUND(__GNUC__, <= 3)
+# define NDNBOOST_concept(name, params)                                            \
+    template < NDNBOOST_PP_SEQ_FOR_EACH_I(NDNBOOST_CONCEPT_typename,~,params) >       \
     struct name; /* forward declaration */                                      \
                                                                                 \
-    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
-    struct BOOST_PP_CAT(name,Concept)                                           \
-      : name< BOOST_PP_SEQ_ENUM(params) >                                       \
+    template < NDNBOOST_PP_SEQ_FOR_EACH_I(NDNBOOST_CONCEPT_typename,~,params) >       \
+    struct NDNBOOST_PP_CAT(name,Concept)                                           \
+      : name< NDNBOOST_PP_SEQ_ENUM(params) >                                       \
     {                                                                           \
         /* at least 2.96 and 3.4.3 both need this */                            \
-        BOOST_PP_CAT(name,Concept)();                                           \
+        NDNBOOST_PP_CAT(name,Concept)();                                           \
     };                                                                          \
                                                                                 \
-    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
+    template < NDNBOOST_PP_SEQ_FOR_EACH_I(NDNBOOST_CONCEPT_typename,~,params) >       \
     struct name                                                                
 #else
-# define BOOST_concept(name, params)                                            \
-    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
+# define NDNBOOST_concept(name, params)                                            \
+    template < NDNBOOST_PP_SEQ_FOR_EACH_I(NDNBOOST_CONCEPT_typename,~,params) >       \
     struct name; /* forward declaration */                                      \
                                                                                 \
-    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
-    struct BOOST_PP_CAT(name,Concept)                                           \
-      : name< BOOST_PP_SEQ_ENUM(params) >                                       \
+    template < NDNBOOST_PP_SEQ_FOR_EACH_I(NDNBOOST_CONCEPT_typename,~,params) >       \
+    struct NDNBOOST_PP_CAT(name,Concept)                                           \
+      : name< NDNBOOST_PP_SEQ_ENUM(params) >                                       \
     {                                                                           \
     };                                                                          \
                                                                                 \
-    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
+    template < NDNBOOST_PP_SEQ_FOR_EACH_I(NDNBOOST_CONCEPT_typename,~,params) >       \
     struct name                                                                
 #endif
     
-// Helper for BOOST_concept, above.
-# define BOOST_CONCEPT_typename(r, ignored, index, t) \
-    BOOST_PP_COMMA_IF(index) typename t
+// Helper for NDNBOOST_concept, above.
+# define NDNBOOST_CONCEPT_typename(r, ignored, index, t) \
+    NDNBOOST_PP_COMMA_IF(index) typename t
 
diff --git a/include/ndnboost/concept/detail/concept_undef.hpp b/include/ndnboost/concept/detail/concept_undef.hpp
index 713db89..b563876 100644
--- a/include/ndnboost/concept/detail/concept_undef.hpp
+++ b/include/ndnboost/concept/detail/concept_undef.hpp
@@ -1,5 +1,5 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-# undef BOOST_concept_typename
-# undef BOOST_concept
+# undef NDNBOOST_concept_typename
+# undef NDNBOOST_concept
diff --git a/include/ndnboost/concept/detail/general.hpp b/include/ndnboost/concept/detail/general.hpp
index defbf03..fcf579b 100644
--- a/include/ndnboost/concept/detail/general.hpp
+++ b/include/ndnboost/concept/detail/general.hpp
@@ -1,13 +1,13 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
-# define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+#ifndef NDNBOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+# define NDNBOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
 
 # include <ndnboost/preprocessor/cat.hpp>
 # include <ndnboost/concept/detail/backward_compatibility.hpp>
 
-# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# ifdef NDNBOOST_OLD_CONCEPT_SUPPORT
 #  include <ndnboost/concept/detail/has_constraints.hpp>
 #  include <ndnboost/mpl/if.hpp>
 # endif
@@ -38,7 +38,7 @@
     static void failed() { ((Model*)0)->~Model(); }
 };
 
-# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# ifdef NDNBOOST_OLD_CONCEPT_SUPPORT
 
 template <class Model>
 struct constraint
@@ -65,11 +65,11 @@
   
 # endif
 
-#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
+#  define NDNBOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
     typedef ::ndnboost::concepts::detail::instantiate<          \
     &::ndnboost::concepts::requirement_<ModelFnPtr>::failed>    \
-      BOOST_PP_CAT(boost_concept_check,__LINE__)
+      NDNBOOST_PP_CAT(boost_concept_check,__LINE__)
 
 }}
 
-#endif // BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
+#endif // NDNBOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
diff --git a/include/ndnboost/concept/detail/has_constraints.hpp b/include/ndnboost/concept/detail/has_constraints.hpp
index d70515e..289df91 100644
--- a/include/ndnboost/concept/detail/has_constraints.hpp
+++ b/include/ndnboost/concept/detail/has_constraints.hpp
@@ -1,8 +1,8 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
-# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+#ifndef NDNBOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+# define NDNBOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
 
 # include <ndnboost/mpl/bool.hpp>
 # include <ndnboost/detail/workaround.hpp>
@@ -21,7 +21,7 @@
   template <class Model, void (Model::*)()>
   struct wrap_constraints {};
     
-#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) || defined(__CUDACC__)
+#if NDNBOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) || defined(__CUDACC__)
   // Work around the following bogus error in Sun Studio 11, by
   // turning off the has_constraints function entirely:
   //    Error: complex expression not allowed in dependent template
@@ -39,7 +39,7 @@
 template <class Model>
 struct not_satisfied
 {
-    BOOST_STATIC_CONSTANT(
+    NDNBOOST_STATIC_CONSTANT(
         bool
       , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) );
     typedef mpl::bool_<value> type;
@@ -47,4 +47,4 @@
 
 }} // namespace ndnboost::concepts::detail
 
-#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
+#endif // NDNBOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
diff --git a/include/ndnboost/concept/detail/msvc.hpp b/include/ndnboost/concept/detail/msvc.hpp
index c11e949..183dda4 100644
--- a/include/ndnboost/concept/detail/msvc.hpp
+++ b/include/ndnboost/concept/detail/msvc.hpp
@@ -1,13 +1,13 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
-# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+#ifndef NDNBOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+# define NDNBOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
 
 # include <ndnboost/preprocessor/cat.hpp>
 # include <ndnboost/concept/detail/backward_compatibility.hpp>
 
-# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# ifdef NDNBOOST_OLD_CONCEPT_SUPPORT
 #  include <ndnboost/concept/detail/has_constraints.hpp>
 #  include <ndnboost/mpl/if.hpp>
 # endif
@@ -25,7 +25,7 @@
     }
 };
 
-# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+# ifndef NDNBOOST_NO_PARTIAL_SPECIALIZATION
 struct failed {};
 template <class Model>
 struct check<failed ************ Model::************>
@@ -37,7 +37,7 @@
 };
 # endif
 
-# ifdef BOOST_OLD_CONCEPT_SUPPORT
+# ifdef NDNBOOST_OLD_CONCEPT_SUPPORT
   
 namespace detail
 {
@@ -52,7 +52,7 @@
   : mpl::if_c<
         not_satisfied<Model>::value
       , detail::constraint
-# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+# ifndef NDNBOOST_NO_PARTIAL_SPECIALIZATION
       , check<Model>
 # else
       , check<failed ************ Model::************>
@@ -64,7 +64,7 @@
   
 template <class Model>
 struct require
-# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
+# ifndef NDNBOOST_NO_PARTIAL_SPECIALIZATION
     : check<Model>
 # else
     : check<failed ************ Model::************>
@@ -73,7 +73,7 @@
   
 # endif
     
-# if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
+# if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, == 1310)
 
 //
 // The iterator library sees some really strange errors unless we
@@ -88,10 +88,10 @@
     }
 };
 
-# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )      \
+# define NDNBOOST_CONCEPT_ASSERT_FN( ModelFnPtr )      \
 enum                                                \
 {                                                   \
-    BOOST_PP_CAT(boost_concept_check,__LINE__) =    \
+    NDNBOOST_PP_CAT(boost_concept_check,__LINE__) =    \
     sizeof(::ndnboost::concepts::require<ModelFnPtr>)    \
 }
   
@@ -101,14 +101,14 @@
 require<Model>
 require_(void(*)(Model));
   
-# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )          \
+# define NDNBOOST_CONCEPT_ASSERT_FN( ModelFnPtr )          \
 enum                                                    \
 {                                                       \
-    BOOST_PP_CAT(boost_concept_check,__LINE__) =        \
+    NDNBOOST_PP_CAT(boost_concept_check,__LINE__) =        \
       sizeof(::ndnboost::concepts::require_((ModelFnPtr)0)) \
 }
   
 # endif
 }}
 
-#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
+#endif // NDNBOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
diff --git a/include/ndnboost/concept/usage.hpp b/include/ndnboost/concept/usage.hpp
index 085cdd9..dfedbc0 100644
--- a/include/ndnboost/concept/usage.hpp
+++ b/include/ndnboost/concept/usage.hpp
@@ -1,8 +1,8 @@
 // Copyright David Abrahams 2006. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying
 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-#ifndef BOOST_CONCEPT_USAGE_DWA2006919_HPP
-# define BOOST_CONCEPT_USAGE_DWA2006919_HPP
+#ifndef NDNBOOST_CONCEPT_USAGE_DWA2006919_HPP
+# define NDNBOOST_CONCEPT_USAGE_DWA2006919_HPP
 
 # include <ndnboost/concept/assert.hpp>
 # include <ndnboost/detail/workaround.hpp>
@@ -10,9 +10,9 @@
 
 namespace ndnboost { namespace concepts { 
 
-# if BOOST_WORKAROUND(__GNUC__, == 2)
+# if NDNBOOST_WORKAROUND(__GNUC__, == 2)
 
-#  define BOOST_CONCEPT_USAGE(model) ~model()
+#  define NDNBOOST_CONCEPT_USAGE(model) ~model()
 
 # else 
 
@@ -22,17 +22,17 @@
     ~usage_requirements() { ((Model*)0)->~Model(); }
 };
 
-#  if BOOST_WORKAROUND(__GNUC__, <= 3)
+#  if NDNBOOST_WORKAROUND(__GNUC__, <= 3)
 
-#   define BOOST_CONCEPT_USAGE(model)                                    \
+#   define NDNBOOST_CONCEPT_USAGE(model)                                    \
       model(); /* at least 2.96 and 3.4.3 both need this :( */           \
-      BOOST_CONCEPT_ASSERT((ndnboost::concepts::usage_requirements<model>)); \
+      NDNBOOST_CONCEPT_ASSERT((ndnboost::concepts::usage_requirements<model>)); \
       ~model()
 
 #  else
 
-#   define BOOST_CONCEPT_USAGE(model)                                    \
-      BOOST_CONCEPT_ASSERT((ndnboost::concepts::usage_requirements<model>)); \
+#   define NDNBOOST_CONCEPT_USAGE(model)                                    \
+      NDNBOOST_CONCEPT_ASSERT((ndnboost::concepts::usage_requirements<model>)); \
       ~model()
 
 #  endif
@@ -41,4 +41,4 @@
 
 }} // namespace ndnboost::concepts
 
-#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP
+#endif // NDNBOOST_CONCEPT_USAGE_DWA2006919_HPP
