In common.h, define func_lib for function objects.  In configure.ac, define HAVE_STD_FUNCTION and HAVE_BOOST_FUNCTION.  Include function headers in ndnboost.
diff --git a/ndnboost/preprocessor/logical/bitor.hpp b/ndnboost/preprocessor/logical/bitor.hpp
new file mode 100644
index 0000000..f05b0bf
--- /dev/null
+++ b/ndnboost/preprocessor/logical/bitor.hpp
@@ -0,0 +1,38 @@
+# /* **************************************************************************
+#  *                                                                          *
+#  *     (C) Copyright Paul Mensonides 2002.
+#  *     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)
+#  *                                                                          *
+#  ************************************************************************** */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_BITOR_HPP
+#
+# include <ndnboost/preprocessor/config/config.hpp>
+#
+# /* BOOST_PP_BITOR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
+#    define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_I(x, y)
+# else
+#    define BOOST_PP_BITOR(x, y) BOOST_PP_BITOR_OO((x, y))
+#    define BOOST_PP_BITOR_OO(par) BOOST_PP_BITOR_I ## par
+# endif
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
+#    define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ ## x ## y
+# else
+#    define BOOST_PP_BITOR_I(x, y) BOOST_PP_BITOR_ID(BOOST_PP_BITOR_ ## x ## y)
+#    define BOOST_PP_BITOR_ID(id) id
+# endif
+#
+# define BOOST_PP_BITOR_00 0
+# define BOOST_PP_BITOR_01 1
+# define BOOST_PP_BITOR_10 1
+# define BOOST_PP_BITOR_11 1
+#
+# endif
diff --git a/ndnboost/preprocessor/logical/not.hpp b/ndnboost/preprocessor/logical/not.hpp
new file mode 100644
index 0000000..6097078
--- /dev/null
+++ b/ndnboost/preprocessor/logical/not.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * 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)
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
+#
+# include <ndnboost/preprocessor/config/config.hpp>
+# include <ndnboost/preprocessor/logical/bool.hpp>
+# include <ndnboost/preprocessor/logical/compl.hpp>
+#
+# /* BOOST_PP_NOT */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# else
+#    define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
+#    define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
+# endif
+#
+# endif
diff --git a/ndnboost/preprocessor/logical/or.hpp b/ndnboost/preprocessor/logical/or.hpp
new file mode 100644
index 0000000..5ec5dbe
--- /dev/null
+++ b/ndnboost/preprocessor/logical/or.hpp
@@ -0,0 +1,30 @@
+# /* Copyright (C) 2001
+#  * Housemarque Oy
+#  * http://www.housemarque.com
+#  *
+#  * 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)
+#  */
+#
+# /* Revised by Paul Mensonides (2002) */
+#
+# /* See http://www.boost.org for most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
+#
+# include <ndnboost/preprocessor/config/config.hpp>
+# include <ndnboost/preprocessor/logical/bool.hpp>
+# include <ndnboost/preprocessor/logical/bitor.hpp>
+#
+# /* BOOST_PP_OR */
+#
+# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
+#    define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# else
+#    define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
+#    define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
+# endif
+#
+# endif