diff --git a/include/ndnboost/assert.hpp b/include/ndnboost/assert.hpp
index 0132fca..7c7a672 100644
--- a/include/ndnboost/assert.hpp
+++ b/include/ndnboost/assert.hpp
@@ -1,7 +1,7 @@
 //
-//  ndnboost/assert.hpp - BOOST_ASSERT(expr)
-//                     BOOST_ASSERT_MSG(expr, msg)
-//                     BOOST_VERIFY(expr)
+//  ndnboost/assert.hpp - NDNBOOST_ASSERT(expr)
+//                     NDNBOOST_ASSERT_MSG(expr, msg)
+//                     NDNBOOST_VERIFY(expr)
 //
 //  Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
 //  Copyright (c) 2007 Peter Dimov
@@ -23,16 +23,16 @@
 //
 
 //--------------------------------------------------------------------------------------//
-//                                     BOOST_ASSERT                                     //
+//                                     NDNBOOST_ASSERT                                     //
 //--------------------------------------------------------------------------------------//
 
-#undef BOOST_ASSERT
+#undef NDNBOOST_ASSERT
 
-#if defined(BOOST_DISABLE_ASSERTS)
+#if defined(NDNBOOST_DISABLE_ASSERTS)
 
-# define BOOST_ASSERT(expr) ((void)0)
+# define NDNBOOST_ASSERT(expr) ((void)0)
 
-#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
+#elif defined(NDNBOOST_ENABLE_ASSERT_HANDLER)
 
 #include <ndnboost/current_function.hpp>
 
@@ -42,26 +42,26 @@
                         char const * function, char const * file, long line); // user defined
 } // namespace ndnboost
 
-#define BOOST_ASSERT(expr) ((expr) \
+#define NDNBOOST_ASSERT(expr) ((expr) \
   ? ((void)0) \
-  : ::ndnboost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+  : ::ndnboost::assertion_failed(#expr, NDNBOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
 
 #else
 # include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
-# define BOOST_ASSERT(expr) assert(expr)
+# define NDNBOOST_ASSERT(expr) assert(expr)
 #endif
 
 //--------------------------------------------------------------------------------------//
-//                                   BOOST_ASSERT_MSG                                   //
+//                                   NDNBOOST_ASSERT_MSG                                   //
 //--------------------------------------------------------------------------------------//
 
-# undef BOOST_ASSERT_MSG
+# undef NDNBOOST_ASSERT_MSG
 
-#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
+#if defined(NDNBOOST_DISABLE_ASSERTS) || defined(NDEBUG)
 
-  #define BOOST_ASSERT_MSG(expr, msg) ((void)0)
+  #define NDNBOOST_ASSERT_MSG(expr, msg) ((void)0)
 
-#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
+#elif defined(NDNBOOST_ENABLE_ASSERT_HANDLER)
 
   #include <ndnboost/current_function.hpp>
 
@@ -71,21 +71,21 @@
                               char const * function, char const * file, long line); // user defined
   } // namespace ndnboost
 
-  #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
+  #define NDNBOOST_ASSERT_MSG(expr, msg) ((expr) \
     ? ((void)0) \
-    : ::ndnboost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+    : ::ndnboost::assertion_failed_msg(#expr, msg, NDNBOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
 
 #else
-  #ifndef BOOST_ASSERT_HPP
-    #define BOOST_ASSERT_HPP
+  #ifndef NDNBOOST_ASSERT_HPP
+    #define NDNBOOST_ASSERT_HPP
     #include <cstdlib>
     #include <iostream>
     #include <ndnboost/current_function.hpp>
 
     //  IDE's like Visual Studio perform better if output goes to std::cout or
     //  some other stream, so allow user to configure output stream:
-    #ifndef BOOST_ASSERT_MSG_OSTREAM
-    # define BOOST_ASSERT_MSG_OSTREAM std::cerr
+    #ifndef NDNBOOST_ASSERT_MSG_OSTREAM
+    # define NDNBOOST_ASSERT_MSG_OSTREAM std::cerr
     #endif
 
     namespace ndnboost
@@ -97,7 +97,7 @@
           inline void assertion_failed_msg(char const * expr, char const * msg, char const * function,
             char const * file, long line)
           {
-            BOOST_ASSERT_MSG_OSTREAM
+            NDNBOOST_ASSERT_MSG_OSTREAM
               << "***** Internal Program Error - assertion (" << expr << ") failed in "
               << function << ":\n"
               << file << '(' << line << "): " << msg << std::endl;
@@ -113,24 +113,24 @@
     } // detail
   #endif
 
-  #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
+  #define NDNBOOST_ASSERT_MSG(expr, msg) ((expr) \
     ? ((void)0) \
     : ::ndnboost::assertion::detail::assertion_failed_msg(#expr, msg, \
-          BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+          NDNBOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
 #endif
 
 //--------------------------------------------------------------------------------------//
-//                                     BOOST_VERIFY                                     //
+//                                     NDNBOOST_VERIFY                                     //
 //--------------------------------------------------------------------------------------//
 
-#undef BOOST_VERIFY
+#undef NDNBOOST_VERIFY
 
-#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
+#if defined(NDNBOOST_DISABLE_ASSERTS) || ( !defined(NDNBOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
 
-# define BOOST_VERIFY(expr) ((void)(expr))
+# define NDNBOOST_VERIFY(expr) ((void)(expr))
 
 #else
 
-# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
+# define NDNBOOST_VERIFY(expr) NDNBOOST_ASSERT(expr)
 
 #endif
