diff --git a/include/ndnboost/numeric/conversion/bounds.hpp b/include/ndnboost/numeric/conversion/bounds.hpp
index 2792ab0..519de81 100644
--- a/include/ndnboost/numeric/conversion/bounds.hpp
+++ b/include/ndnboost/numeric/conversion/bounds.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_BOUNDS_12NOV2002_HPP
 
 #include "ndnboost/numeric/conversion/detail/bounds.hpp"
 
diff --git a/include/ndnboost/numeric/conversion/cast.hpp b/include/ndnboost/numeric/conversion/cast.hpp
index de542eb..5799fcd 100644
--- a/include/ndnboost/numeric/conversion/cast.hpp
+++ b/include/ndnboost/numeric/conversion/cast.hpp
@@ -18,12 +18,12 @@
 //    23 Jan 2004 Inital add to cvs (post review)s
 //    22 Jun 2011 Added support for specializing cast policies via numeric_cast_traits (Brandon Kohn).
 //
-#ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
-#define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
 
 #include <ndnboost/detail/workaround.hpp>
 
-#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, < 1300) || NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT(0x582))
 
 #  include<ndnboost/numeric/conversion/detail/old_numeric_cast.hpp>
 
diff --git a/include/ndnboost/numeric/conversion/conversion_traits.hpp b/include/ndnboost/numeric/conversion/conversion_traits.hpp
index 468acb1..de25d8e 100644
--- a/include/ndnboost/numeric/conversion/conversion_traits.hpp
+++ b/include/ndnboost/numeric/conversion/conversion_traits.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_CONVERSION_TRAITS_FLC_12NOV2002_HPP
 
 #include "ndnboost/numeric/conversion/detail/conversion_traits.hpp"
 #include "ndnboost/detail/workaround.hpp"
@@ -21,7 +21,7 @@
 struct conversion_traits 
     : convdetail::get_conversion_traits<T,S>::type 
 {
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#if NDNBOOST_WORKAROUND(NDNBOOST_MSVC, <= 1300)
     typedef typename convdetail::get_conversion_traits<T,S>::type base_;
     typedef typename base_::target_type     target_type;
     typedef typename base_::source_type     source_type;
diff --git a/include/ndnboost/numeric/conversion/converter.hpp b/include/ndnboost/numeric/conversion/converter.hpp
index ee406a5..95752ff 100644
--- a/include/ndnboost/numeric/conversion/converter.hpp
+++ b/include/ndnboost/numeric/conversion/converter.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_CONVERTER_FLC_12NOV2002_HPP
 
 #include "ndnboost/numeric/conversion/conversion_traits.hpp"
 #include "ndnboost/numeric/conversion/converter_policies.hpp"
@@ -22,7 +22,7 @@
          class S,
          class Traits           = conversion_traits<T,S>,
          class OverflowHandler  = def_overflow_handler,
-         class Float2IntRounder = Trunc< BOOST_DEDUCED_TYPENAME Traits::source_type>  ,
+         class Float2IntRounder = Trunc< NDNBOOST_DEDUCED_TYPENAME Traits::source_type>  ,
          class RawConverter     = raw_converter<Traits>,
          class UserRangeChecker = UseInternalRangeChecker
         >
diff --git a/include/ndnboost/numeric/conversion/converter_policies.hpp b/include/ndnboost/numeric/conversion/converter_policies.hpp
index fd02094..c1c978e 100644
--- a/include/ndnboost/numeric/conversion/converter_policies.hpp
+++ b/include/ndnboost/numeric/conversion/converter_policies.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 //
-#ifndef BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_CONVERTER_POLICIES_FLC_12NOV2002_HPP
 
 #include <typeinfo> // for std::bad_cast
 
@@ -34,7 +34,7 @@
 
   static source_type nearbyint ( argument_type s )
   {
-#if !defined(BOOST_NO_STDC_NAMESPACE)
+#if !defined(NDNBOOST_NO_STDC_NAMESPACE)
     using std::floor ;
     using std::ceil  ;
 #endif
@@ -56,7 +56,7 @@
 
   static source_type nearbyint ( argument_type s )
   {
-#if !defined(BOOST_NO_STDC_NAMESPACE)
+#if !defined(NDNBOOST_NO_STDC_NAMESPACE)
     using std::floor ;
 #endif
 
@@ -75,7 +75,7 @@
 
   static source_type nearbyint ( argument_type s )
   {
-#if !defined(BOOST_NO_STDC_NAMESPACE)
+#if !defined(NDNBOOST_NO_STDC_NAMESPACE)
     using std::ceil ;
 #endif
 
@@ -96,7 +96,7 @@
   {
     // Algorithm contributed by Guillaume Melquiond
 
-#if !defined(BOOST_NO_STDC_NAMESPACE)
+#if !defined(NDNBOOST_NO_STDC_NAMESPACE)
     using std::floor ;
     using std::ceil  ;
 #endif
@@ -159,7 +159,7 @@
 {
   void operator() ( range_check_result r ) // throw(negative_overflow,positive_overflow)
   {
-#ifndef BOOST_NO_EXCEPTIONS
+#ifndef NDNBOOST_NO_EXCEPTIONS
     if ( r == cNegOverflow )
       throw negative_overflow() ;
     else if ( r == cPosOverflow )
diff --git a/include/ndnboost/numeric/conversion/detail/bounds.hpp b/include/ndnboost/numeric/conversion/detail/bounds.hpp
index 34effae..59d3202 100644
--- a/include/ndnboost/numeric/conversion/detail/bounds.hpp
+++ b/include/ndnboost/numeric/conversion/detail/bounds.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
 
 #include "ndnboost/limits.hpp"
 #include "ndnboost/config.hpp"
@@ -23,8 +23,8 @@
 
     public :
     
-      static N lowest  () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
-      static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+      static N lowest  () { return limits::min NDNBOOST_PREVENT_MACRO_SUBSTITUTION (); }
+      static N highest () { return limits::max NDNBOOST_PREVENT_MACRO_SUBSTITUTION (); }
       static N smallest() { return static_cast<N>(1); }
   } ;
 
@@ -35,9 +35,9 @@
 
     public :
     
-      static N lowest  () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
-      static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
-      static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
+      static N lowest  () { return static_cast<N>(-limits::max NDNBOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
+      static N highest () { return limits::max NDNBOOST_PREVENT_MACRO_SUBSTITUTION (); }
+      static N smallest() { return limits::min NDNBOOST_PREVENT_MACRO_SUBSTITUTION (); }
   } ;
 
   template<class N>
diff --git a/include/ndnboost/numeric/conversion/detail/conversion_traits.hpp b/include/ndnboost/numeric/conversion/detail/conversion_traits.hpp
index 55c7d86..09fe107 100644
--- a/include/ndnboost/numeric/conversion/detail/conversion_traits.hpp
+++ b/include/ndnboost/numeric/conversion/detail/conversion_traits.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_CONVERSION_TRAITS_FLC_12NOV2002_HPP
 
 #include "ndnboost/type_traits/is_arithmetic.hpp"
 #include "ndnboost/type_traits/is_same.hpp"
diff --git a/include/ndnboost/numeric/conversion/detail/converter.hpp b/include/ndnboost/numeric/conversion/detail/converter.hpp
index 813a5c3..37099ef 100644
--- a/include/ndnboost/numeric/conversion/detail/converter.hpp
+++ b/include/ndnboost/numeric/conversion/detail/converter.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 //
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
 
 #include <functional>
 
@@ -450,8 +450,8 @@
   // Trivial Converter : used when (cv-unqualified) T == (cv-unqualified)  S
   //
   template<class Traits>
-  struct trivial_converter_impl : public std::unary_function<  BOOST_DEDUCED_TYPENAME Traits::argument_type
-                                                              ,BOOST_DEDUCED_TYPENAME Traits::result_type
+  struct trivial_converter_impl : public std::unary_function<  NDNBOOST_DEDUCED_TYPENAME Traits::argument_type
+                                                              ,NDNBOOST_DEDUCED_TYPENAME Traits::result_type
                                                             >
                                  ,public dummy_range_checker<Traits>
   {
@@ -471,8 +471,8 @@
   // Rounding Converter : used for float to integral conversions.
   //
   template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
-  struct rounding_converter : public std::unary_function<  BOOST_DEDUCED_TYPENAME Traits::argument_type
-                                                          ,BOOST_DEDUCED_TYPENAME Traits::result_type
+  struct rounding_converter : public std::unary_function<  NDNBOOST_DEDUCED_TYPENAME Traits::argument_type
+                                                          ,NDNBOOST_DEDUCED_TYPENAME Traits::result_type
                                                         >
                              ,public RangeChecker
                              ,public Float2IntRounder
@@ -501,8 +501,8 @@
   // Non-Rounding Converter : used for all other conversions.
   //
   template<class Traits,class RangeChecker,class RawConverter>
-  struct non_rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
-                                                             ,BOOST_DEDUCED_TYPENAME Traits::result_type
+  struct non_rounding_converter : public std::unary_function< NDNBOOST_DEDUCED_TYPENAME Traits::argument_type
+                                                             ,NDNBOOST_DEDUCED_TYPENAME Traits::result_type
                                                            >
                                  ,public RangeChecker
                                  ,public RawConverter
@@ -570,7 +570,7 @@
           >
   struct get_converter_impl
   {
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x0561 ) )
+#if NDNBOOST_WORKAROUND(__BORLANDC__, NDNBOOST_TESTED_AT( 0x0561 ) )
     // bcc55 prefers sometimes template parameters to be explicit local types.
     // (notice that is is illegal to reuse the names like this)
     typedef Traits           Traits ;
diff --git a/include/ndnboost/numeric/conversion/detail/int_float_mixture.hpp b/include/ndnboost/numeric/conversion/detail/int_float_mixture.hpp
index 437b56a..e91ac40 100644
--- a/include/ndnboost/numeric/conversion/detail/int_float_mixture.hpp
+++ b/include/ndnboost/numeric/conversion/detail/int_float_mixture.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_INT_FLOAT_MIXTURE_FLC_12NOV2002_HPP
 
 #include "ndnboost/config.hpp"
 #include "ndnboost/limits.hpp"
diff --git a/include/ndnboost/numeric/conversion/detail/is_subranged.hpp b/include/ndnboost/numeric/conversion/detail/is_subranged.hpp
index 6f84872..9af12c0 100644
--- a/include/ndnboost/numeric/conversion/detail/is_subranged.hpp
+++ b/include/ndnboost/numeric/conversion/detail/is_subranged.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_IS_SUBRANGED_FLC_12NOV2002_HPP
 
 #include "ndnboost/config.hpp"
 #include "ndnboost/limits.hpp"
diff --git a/include/ndnboost/numeric/conversion/detail/meta.hpp b/include/ndnboost/numeric/conversion/detail/meta.hpp
index a79d670..c87bbb8 100644
--- a/include/ndnboost/numeric/conversion/detail/meta.hpp
+++ b/include/ndnboost/numeric/conversion/detail/meta.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_META_FLC_12NOV2002_HPP
 
 #include "ndnboost/type_traits/remove_cv.hpp"
 
@@ -27,22 +27,22 @@
    {
    #if !defined(__BORLANDC__)
    
-       enum { x = ( BOOST_MPL_AUX_VALUE_WKND(T1)::value == BOOST_MPL_AUX_VALUE_WKND(T2)::value ) };
+       enum { x = ( NDNBOOST_MPL_AUX_VALUE_WKND(T1)::value == NDNBOOST_MPL_AUX_VALUE_WKND(T2)::value ) };
            
-       BOOST_STATIC_CONSTANT(bool, value = x);
+       NDNBOOST_STATIC_CONSTANT(bool, value = x);
            
        typedef mpl::bool_<value> type;
        
    #else
    
-       BOOST_STATIC_CONSTANT(bool, value = (
-             BOOST_MPL_AUX_VALUE_WKND(T1)::value 
-               == BOOST_MPL_AUX_VALUE_WKND(T2)::value
+       NDNBOOST_STATIC_CONSTANT(bool, value = (
+             NDNBOOST_MPL_AUX_VALUE_WKND(T1)::value 
+               == NDNBOOST_MPL_AUX_VALUE_WKND(T2)::value
            ));
            
        typedef mpl::bool_<(
-             BOOST_MPL_AUX_VALUE_WKND(T1)::value 
-               == BOOST_MPL_AUX_VALUE_WKND(T2)::value
+             NDNBOOST_MPL_AUX_VALUE_WKND(T1)::value 
+               == NDNBOOST_MPL_AUX_VALUE_WKND(T2)::value
            )> type;
    #endif
    };
diff --git a/include/ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp b/include/ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp
index eaccf5c..96bd961 100644
--- a/include/ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp
+++ b/include/ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp
@@ -7,22 +7,22 @@
 //  http://www.boost.org/LICENSE_1_0.txt)
 //
 
-#if !defined(BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES)
+#if !defined(NDNBOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES)
 
     #include <ndnboost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp>
 	
-	#if !defined(BOOST_NO_LONG_LONG)
+	#if !defined(NDNBOOST_NO_LONG_LONG)
         #include <ndnboost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp>
 	#endif
 	
 #else
-#if !BOOST_PP_IS_ITERATING
+#if !NDNBOOST_PP_IS_ITERATING
 
     #include <ndnboost/preprocessor/seq/elem.hpp>
     #include <ndnboost/preprocessor/seq/size.hpp>
     #include <ndnboost/preprocessor/iteration/iterate.hpp>
     
-    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+    #if defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
         #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_common.hpp")
     #endif
 //
@@ -33,12 +33,12 @@
 //  accompanying file LICENSE_1_0.txt or copy at
 //  http://www.boost.org/LICENSE_1_0.txt)
 //
-    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+    #if defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
         #pragma wave option(preserve: 1)
     #endif
 	
 	//! These are the assumed common built in fundamental types (not typedefs/macros.)
-	#define BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() \
+	#define NDNBOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES() \
         (char)                                            \
         (signed char)                                     \
         (unsigned char)                                   \
@@ -53,26 +53,26 @@
         (long double)                                     \
     /***/
 	
-    #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
-	#define BOOST_NUMERIC_CONVERSION_SEQ_B() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
+    #define NDNBOOST_NUMERIC_CONVERSION_SEQ_A() NDNBOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
+	#define NDNBOOST_NUMERIC_CONVERSION_SEQ_B() NDNBOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()
 
 namespace ndnboost { namespace numeric {
 
-    #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>))
-    #include BOOST_PP_ITERATE()    
+    #define NDNBOOST_PP_ITERATION_PARAMS_1 (3, (0, NDNBOOST_PP_DEC(NDNBOOST_PP_SEQ_SIZE(NDNBOOST_NUMERIC_CONVERSION_SEQ_A())), <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>))
+    #include NDNBOOST_PP_ITERATE()    
 
 }}//namespace ndnboost::numeric;
 
-    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+    #if defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
         #pragma wave option(output: null)
     #endif   
 	
-	#if ( defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) ) || !defined(BOOST_NO_LONG_LONG)
+	#if ( defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES) ) || !defined(NDNBOOST_NO_LONG_LONG)
 	
-	    #undef BOOST_NUMERIC_CONVERSION_SEQ_A
-	    #undef BOOST_NUMERIC_CONVERSION_SEQ_B
+	    #undef NDNBOOST_NUMERIC_CONVERSION_SEQ_A
+	    #undef NDNBOOST_NUMERIC_CONVERSION_SEQ_B
 
-	    #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+	    #if defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
             #pragma wave option(preserve: 2, line: 0, output: "preprocessed/numeric_cast_traits_long_long.hpp")
         #endif
 
@@ -84,55 +84,55 @@
 //  accompanying file LICENSE_1_0.txt or copy at
 //  http://www.boost.org/LICENSE_1_0.txt)
 //
-        #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+        #if defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
             #pragma wave option(preserve: 1)
         #endif
 
 namespace ndnboost { namespace numeric {
 
-    #define BOOST_NUMERIC_CONVERSION_SEQ_A() BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()(ndnboost::long_long_type)(ndnboost::ulong_long_type)
-	#define BOOST_NUMERIC_CONVERSION_SEQ_B() (ndnboost::long_long_type)(ndnboost::ulong_long_type)
+    #define NDNBOOST_NUMERIC_CONVERSION_SEQ_A() NDNBOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES()(ndnboost::long_long_type)(ndnboost::ulong_long_type)
+	#define NDNBOOST_NUMERIC_CONVERSION_SEQ_B() (ndnboost::long_long_type)(ndnboost::ulong_long_type)
     
-    #define BOOST_PP_ITERATION_PARAMS_1 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_A())), <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>))
-    #include BOOST_PP_ITERATE()    
+    #define NDNBOOST_PP_ITERATION_PARAMS_1 (3, (0, NDNBOOST_PP_DEC(NDNBOOST_PP_SEQ_SIZE(NDNBOOST_NUMERIC_CONVERSION_SEQ_A())), <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>))
+    #include NDNBOOST_PP_ITERATE()    
 
 }}//namespace ndnboost::numeric;
 
-        #if defined(__WAVE__) && defined(BOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
+        #if defined(__WAVE__) && defined(NDNBOOST_NUMERIC_CONVERSION_CREATE_PREPROCESSED_FILES)
             #pragma wave option(output: null)
         #endif   
 	
 	#endif
 		
-    #undef BOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES
-	#undef BOOST_NUMERIC_CONVERSION_SEQ_A
-	#undef BOOST_NUMERIC_CONVERSION_SEQ_B
+    #undef NDNBOOST_NUMERIC_CONVERSION_BASE_BUILTIN_TYPES
+	#undef NDNBOOST_NUMERIC_CONVERSION_SEQ_A
+	#undef NDNBOOST_NUMERIC_CONVERSION_SEQ_B
     
-#elif BOOST_PP_ITERATION_DEPTH() == 1
+#elif NDNBOOST_PP_ITERATION_DEPTH() == 1
 
-    #define BOOST_PP_ITERATION_PARAMS_2 (3, (0, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_NUMERIC_CONVERSION_SEQ_B())), <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>))
-    #include BOOST_PP_ITERATE()
+    #define NDNBOOST_PP_ITERATION_PARAMS_2 (3, (0, NDNBOOST_PP_DEC(NDNBOOST_PP_SEQ_SIZE(NDNBOOST_NUMERIC_CONVERSION_SEQ_B())), <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>))
+    #include NDNBOOST_PP_ITERATE()
 
-#elif BOOST_PP_ITERATION_DEPTH() == 2
+#elif NDNBOOST_PP_ITERATION_DEPTH() == 2
 
     //! Generate default traits for the specified source and target.
-    #define BOOST_NUMERIC_CONVERSION_A BOOST_PP_FRAME_ITERATION(1)
-    #define BOOST_NUMERIC_CONVERSION_B BOOST_PP_FRAME_ITERATION(2)
+    #define NDNBOOST_NUMERIC_CONVERSION_A NDNBOOST_PP_FRAME_ITERATION(1)
+    #define NDNBOOST_NUMERIC_CONVERSION_B NDNBOOST_PP_FRAME_ITERATION(2)
 
     template <>
     struct numeric_cast_traits
         <
-            BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_A, BOOST_NUMERIC_CONVERSION_SEQ_A())
-          , BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())
+            NDNBOOST_PP_SEQ_ELEM(NDNBOOST_NUMERIC_CONVERSION_A, NDNBOOST_NUMERIC_CONVERSION_SEQ_A())
+          , NDNBOOST_PP_SEQ_ELEM(NDNBOOST_NUMERIC_CONVERSION_B, NDNBOOST_NUMERIC_CONVERSION_SEQ_B())
         >
     {
         typedef def_overflow_handler overflow_policy;
         typedef UseInternalRangeChecker range_checking_policy;
-        typedef Trunc<BOOST_PP_SEQ_ELEM(BOOST_NUMERIC_CONVERSION_B, BOOST_NUMERIC_CONVERSION_SEQ_B())> rounding_policy;
+        typedef Trunc<NDNBOOST_PP_SEQ_ELEM(NDNBOOST_NUMERIC_CONVERSION_B, NDNBOOST_NUMERIC_CONVERSION_SEQ_B())> rounding_policy;
     };     
 
-    #undef BOOST_NUMERIC_CONVERSION_A
-    #undef BOOST_NUMERIC_CONVERSION_B
+    #undef NDNBOOST_NUMERIC_CONVERSION_A
+    #undef NDNBOOST_NUMERIC_CONVERSION_B
 
 #endif//! Depth 2.
-#endif// BOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES
+#endif// NDNBOOST_NUMERIC_CONVERSION_DONT_USE_PREPROCESSED_FILES
diff --git a/include/ndnboost/numeric/conversion/detail/old_numeric_cast.hpp b/include/ndnboost/numeric/conversion/detail/old_numeric_cast.hpp
index e9cc453..4fc4cab 100644
--- a/include/ndnboost/numeric/conversion/detail/old_numeric_cast.hpp
+++ b/include/ndnboost/numeric/conversion/detail/old_numeric_cast.hpp
@@ -12,15 +12,15 @@
 //             Keeps this legacy version of numeric_cast<> for old compilers
 //             wich can't compile the new version in /boost/numeric/conversion/cast.hpp
 //             (Fernando Cacciola)
-//  02 Apr 01  Removed BOOST_NO_LIMITS workarounds and included
+//  02 Apr 01  Removed NDNBOOST_NO_LIMITS workarounds and included
 //             <ndnboost/limits.hpp> instead (the workaround did not
-//             actually compile when BOOST_NO_LIMITS was defined in
+//             actually compile when NDNBOOST_NO_LIMITS was defined in
 //             any case, so we loose nothing). (John Maddock)
 //  21 Jan 01  Undid a bug I introduced yesterday. numeric_cast<> never
 //             worked with stock GCC; trying to get it to do that broke
 //             vc-stlport.
-//  20 Jan 01  Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp.
-//             Removed unused BOOST_EXPLICIT_TARGET macro. Moved
+//  20 Jan 01  Moved NDNBOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp.
+//             Removed unused NDNBOOST_EXPLICIT_TARGET macro. Moved
 //             ndnboost::detail::type to ndnboost/type.hpp. Made it compile with
 //             stock gcc again (Dave Abrahams)
 //  29 Nov 00  Remove nested namespace cast, cleanup spacing before Formal
@@ -43,8 +43,8 @@
 //             place in nested namespace.
 //   3 Aug 99  Initial version
 
-#ifndef BOOST_OLD_NUMERIC_CAST_HPP
-#define BOOST_OLD_NUMERIC_CAST_HPP
+#ifndef NDNBOOST_OLD_NUMERIC_CAST_HPP
+#define NDNBOOST_OLD_NUMERIC_CAST_HPP
 
 # include <ndnboost/config.hpp>
 # include <cassert>
@@ -60,10 +60,10 @@
 //  TODO: Add this to config.hpp?
 //  FLC: This macro is repeated in ndnboost/cast.hpp but only locally (is undefined at the bottom)
 //       so is OK to reproduce it here.
-# if defined(BOOST_MSVC) && BOOST_MSVC < 1300
-#  define BOOST_EXPLICIT_DEFAULT_TARGET , ::ndnboost::type<Target>* = 0
+# if defined(NDNBOOST_MSVC) && NDNBOOST_MSVC < 1300
+#  define NDNBOOST_EXPLICIT_DEFAULT_TARGET , ::ndnboost::type<Target>* = 0
 # else
-#  define BOOST_EXPLICIT_DEFAULT_TARGET
+#  define NDNBOOST_EXPLICIT_DEFAULT_TARGET
 # endif
 
 namespace ndnboost
@@ -76,14 +76,14 @@
 
 //  numeric_cast  ------------------------------------------------------------//
 
-#if !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(BOOST_SGI_CPP_LIMITS)
+#if !defined(NDNBOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) || defined(NDNBOOST_SGI_CPP_LIMITS)
 
     namespace detail
     {
       template <class T>
       struct signed_numeric_limits : std::numeric_limits<T>
       {
-             static inline T min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+             static inline T min NDNBOOST_PREVENT_MACRO_SUBSTITUTION ()
          {
              return (std::numeric_limits<T>::min)() >= 0
                      // unary minus causes integral promotion, thus the static_cast<>
@@ -96,7 +96,7 @@
       template <class T, bool specialized>
       struct fixed_numeric_limits_base
           : public if_true< std::numeric_limits<T>::is_signed >
-           ::BOOST_NESTED_TEMPLATE then< signed_numeric_limits<T>,
+           ::NDNBOOST_NESTED_TEMPLATE then< signed_numeric_limits<T>,
                             std::numeric_limits<T>
                    >::type
       {};
@@ -106,16 +106,16 @@
           : fixed_numeric_limits_base<T,(std::numeric_limits<T>::is_specialized)>
       {};
 
-# ifdef BOOST_HAS_LONG_LONG
+# ifdef NDNBOOST_HAS_LONG_LONG
       // cover implementations which supply no specialization for long
       // long / unsigned long long. Not intended to be full
       // numeric_limits replacements, but good enough for numeric_cast<>
       template <>
       struct fixed_numeric_limits_base< ::ndnboost::long_long_type, false>
       {
-          BOOST_STATIC_CONSTANT(bool, is_specialized = true);
-          BOOST_STATIC_CONSTANT(bool, is_signed = true);
-          static  ::ndnboost::long_long_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+          NDNBOOST_STATIC_CONSTANT(bool, is_specialized = true);
+          NDNBOOST_STATIC_CONSTANT(bool, is_signed = true);
+          static  ::ndnboost::long_long_type max NDNBOOST_PREVENT_MACRO_SUBSTITUTION ()
           {
 #  ifdef LONGLONG_MAX
               return LONGLONG_MAX;
@@ -124,7 +124,7 @@
 #  endif
           }
 
-          static  ::ndnboost::long_long_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+          static  ::ndnboost::long_long_type min NDNBOOST_PREVENT_MACRO_SUBSTITUTION ()
           {
 #  ifdef LONGLONG_MIN
               return LONGLONG_MIN;
@@ -137,9 +137,9 @@
       template <>
       struct fixed_numeric_limits_base< ::ndnboost::ulong_long_type, false>
       {
-          BOOST_STATIC_CONSTANT(bool, is_specialized = true);
-          BOOST_STATIC_CONSTANT(bool, is_signed = false);
-          static  ::ndnboost::ulong_long_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
+          NDNBOOST_STATIC_CONSTANT(bool, is_specialized = true);
+          NDNBOOST_STATIC_CONSTANT(bool, is_signed = false);
+          static  ::ndnboost::ulong_long_type max NDNBOOST_PREVENT_MACRO_SUBSTITUTION ()
           {
 #  ifdef ULONGLONG_MAX
               return ULONGLONG_MAX;
@@ -148,7 +148,7 @@
 #  endif
           }
 
-          static  ::ndnboost::ulong_long_type min BOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
+          static  ::ndnboost::ulong_long_type min NDNBOOST_PREVENT_MACRO_SUBSTITUTION () { return 0; }
       };
 # endif
     } // namespace detail
@@ -215,9 +215,9 @@
         static inline bool check(X x, Y)
             { return x >= 0 && static_cast<X>(static_cast<Y>(x)) != x; }
 
-# if defined(BOOST_MSVC) && BOOST_MSVC < 1300
+# if defined(NDNBOOST_MSVC) && NDNBOOST_MSVC < 1300
         // MSVC6 can't static_cast  unsigned __int64 -> floating types
-#  define BOOST_UINT64_CAST(src_type)                                   \
+#  define NDNBOOST_UINT64_CAST(src_type)                                   \
         static inline bool check(src_type x, unsigned __int64)          \
         {                                                               \
             if (x < 0) return false;                                    \
@@ -227,10 +227,10 @@
             return ((static_cast<src_type>(div2) * 2.0) + odd) != x;    \
         }
 
-        BOOST_UINT64_CAST(long double);
-        BOOST_UINT64_CAST(double);
-        BOOST_UINT64_CAST(float);
-#  undef BOOST_UINT64_CAST
+        NDNBOOST_UINT64_CAST(long double);
+        NDNBOOST_UINT64_CAST(double);
+        NDNBOOST_UINT64_CAST(float);
+#  undef NDNBOOST_UINT64_CAST
 # endif
     };
 
@@ -256,7 +256,7 @@
 
   namespace detail
   {
-# if BOOST_MSVC
+# if NDNBOOST_MSVC
 #  pragma warning(push)
 #  pragma warning(disable : 4018)
 #  pragma warning(disable : 4146)
@@ -268,14 +268,14 @@
        template <class T>
        struct fixed_numeric_limits : public std::numeric_limits<T>
        {
-           static inline T min BOOST_PREVENT_MACRO_SUBSTITUTION ()
+           static inline T min NDNBOOST_PREVENT_MACRO_SUBSTITUTION ()
            {
                return std::numeric_limits<T>::is_signed && (std::numeric_limits<T>::min)() >= 0
                    ? T(-(std::numeric_limits<T>::max)()) : (std::numeric_limits<T>::min)();
            }
        };
 
-# if BOOST_MSVC
+# if NDNBOOST_MSVC
 #  pragma warning(pop)
 #elif defined(__BORLANDC__)
 #  pragma option pop
@@ -285,16 +285,16 @@
 #endif
 
     template<typename Target, typename Source>
-    inline Target numeric_cast(Source arg BOOST_EXPLICIT_DEFAULT_TARGET)
+    inline Target numeric_cast(Source arg NDNBOOST_EXPLICIT_DEFAULT_TARGET)
     {
         // typedefs abbreviating respective trait classes
         typedef detail::fixed_numeric_limits<Source> arg_traits;
         typedef detail::fixed_numeric_limits<Target> result_traits;
 
-#if defined(BOOST_STRICT_CONFIG) \
+#if defined(NDNBOOST_STRICT_CONFIG) \
     || (!defined(__HP_aCC) || __HP_aCC > 33900) \
-         && (!defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) \
-             || defined(BOOST_SGI_CPP_LIMITS))
+         && (!defined(NDNBOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS) \
+             || defined(NDNBOOST_SGI_CPP_LIMITS))
         // typedefs that act as compile time assertions
         // (to be replaced by boost compile time assertions
         // as and when they become available and are stable)
@@ -311,7 +311,7 @@
 
 #else // We need to use #pragma hacks if available
 
-# if BOOST_MSVC
+# if NDNBOOST_MSVC
 #  pragma warning(push)
 #  pragma warning(disable : 4018)
 #elif defined(__BORLANDC__)
@@ -320,7 +320,7 @@
         if ((arg < 0 && !result_traits::is_signed)  // loss of negative range
              || (arg_traits::is_signed && arg < (result_traits::min)())  // underflow
              || arg > (result_traits::max)())            // overflow
-# if BOOST_MSVC
+# if NDNBOOST_MSVC
 #  pragma warning(pop)
 #elif defined(__BORLANDC__)
 #pragma option pop
@@ -332,8 +332,8 @@
         return static_cast<Target>(arg);
     } // numeric_cast
 
-#  undef BOOST_EXPLICIT_DEFAULT_TARGET
+#  undef NDNBOOST_EXPLICIT_DEFAULT_TARGET
 
 } // namespace ndnboost
 
-#endif  // BOOST_OLD_NUMERIC_CAST_HPP
+#endif  // NDNBOOST_OLD_NUMERIC_CAST_HPP
diff --git a/include/ndnboost/numeric/conversion/detail/sign_mixture.hpp b/include/ndnboost/numeric/conversion/detail/sign_mixture.hpp
index e49ad1d..1e90ee9 100644
--- a/include/ndnboost/numeric/conversion/detail/sign_mixture.hpp
+++ b/include/ndnboost/numeric/conversion/detail/sign_mixture.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_SIGN_MIXTURE_FLC_12NOV2002_HPP
 
 #include "ndnboost/config.hpp"
 #include "ndnboost/limits.hpp"
diff --git a/include/ndnboost/numeric/conversion/detail/udt_builtin_mixture.hpp b/include/ndnboost/numeric/conversion/detail/udt_builtin_mixture.hpp
index 6b1e282..33382ec 100644
--- a/include/ndnboost/numeric/conversion/detail/udt_builtin_mixture.hpp
+++ b/include/ndnboost/numeric/conversion/detail/udt_builtin_mixture.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_DETAIL_UDT_BUILTIN_MIXTURE_FLC_12NOV2002_HPP
 
 #include "ndnboost/type_traits/is_arithmetic.hpp"
 
diff --git a/include/ndnboost/numeric/conversion/int_float_mixture_enum.hpp b/include/ndnboost/numeric/conversion/int_float_mixture_enum.hpp
index a733404..165cc55 100644
--- a/include/ndnboost/numeric/conversion/int_float_mixture_enum.hpp
+++ b/include/ndnboost/numeric/conversion/int_float_mixture_enum.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_INT_FLOAT_MIXTURE_ENUM_FLC_12NOV2002_HPP
 
 namespace ndnboost { namespace numeric
 {
diff --git a/include/ndnboost/numeric/conversion/numeric_cast_traits.hpp b/include/ndnboost/numeric/conversion/numeric_cast_traits.hpp
index d482bfd..c49364b 100644
--- a/include/ndnboost/numeric/conversion/numeric_cast_traits.hpp
+++ b/include/ndnboost/numeric/conversion/numeric_cast_traits.hpp
@@ -6,8 +6,8 @@
 //  accompanying file LICENSE_1_0.txt or copy at
 //  http://www.boost.org/LICENSE_1_0.txt)
 //
-#ifndef BOOST_NUMERIC_CAST_TRAITS_HPP
-#define BOOST_NUMERIC_CAST_TRAITS_HPP
+#ifndef NDNBOOST_NUMERIC_CAST_TRAITS_HPP
+#define NDNBOOST_NUMERIC_CAST_TRAITS_HPP
 
 #include <ndnboost/numeric/conversion/converter_policies.hpp>
 
@@ -23,9 +23,9 @@
 
 }}//namespace ndnboost::numeric;
 
-#if !defined( BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS )
+#if !defined( NDNBOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS )
 #include <ndnboost/cstdint.hpp>
 #include <ndnboost/numeric/conversion/detail/numeric_cast_traits.hpp>
-#endif//!defined BOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS
+#endif//!defined NDNBOOST_NUMERIC_CONVERSION_RELAX_BUILT_IN_CAST_TRAITS
 
-#endif//BOOST_NUMERIC_CAST_TRAITS_HPP
+#endif//NDNBOOST_NUMERIC_CAST_TRAITS_HPP
diff --git a/include/ndnboost/numeric/conversion/sign_mixture_enum.hpp b/include/ndnboost/numeric/conversion/sign_mixture_enum.hpp
index cfb7151..bd41df2 100644
--- a/include/ndnboost/numeric/conversion/sign_mixture_enum.hpp
+++ b/include/ndnboost/numeric/conversion/sign_mixture_enum.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_SIGN_MIXTURE_ENUM_FLC_12NOV2002_HPP
 
 namespace ndnboost { namespace numeric
 {
diff --git a/include/ndnboost/numeric/conversion/udt_builtin_mixture_enum.hpp b/include/ndnboost/numeric/conversion/udt_builtin_mixture_enum.hpp
index 6e5bf5d..7ba441c 100644
--- a/include/ndnboost/numeric/conversion/udt_builtin_mixture_enum.hpp
+++ b/include/ndnboost/numeric/conversion/udt_builtin_mixture_enum.hpp
@@ -7,8 +7,8 @@
 //
 // Contact the author at: fernando_cacciola@hotmail.com
 // 
-#ifndef BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
-#define BOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#ifndef NDNBOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
+#define NDNBOOST_NUMERIC_CONVERSION_UDT_BUILTIN_MIXTURE_ENUM_FLC_12NOV2002_HPP
 
 namespace ndnboost { namespace numeric
 {
