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/function_types/detail/pp_loop.hpp b/ndnboost/function_types/detail/pp_loop.hpp
new file mode 100644
index 0000000..1ce6ab7
--- /dev/null
+++ b/ndnboost/function_types/detail/pp_loop.hpp
@@ -0,0 +1,80 @@
+
+// (C) Copyright Tobias Schwinger
+//
+// Use modification and distribution are subject to the boost Software License,
+// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
+
+//------------------------------------------------------------------------------
+
+// no include guards, this file is intended for multiple inclusions
+
+#ifndef BOOST_FT_DETAIL_PP_LOOP_HPP_INCLUDED
+#define BOOST_FT_DETAIL_PP_LOOP_HPP_INCLUDED
+#   include <ndnboost/preprocessor/facilities/expand.hpp>
+#   include <ndnboost/preprocessor/facilities/empty.hpp>
+#   include <ndnboost/preprocessor/punctuation/paren.hpp>
+#endif
+
+#include <ndnboost/function_types/detail/encoding/def.hpp>
+#include <ndnboost/function_types/detail/encoding/aliases_def.hpp>
+
+#if defined(BOOST_FT_PREPROCESSING_MODE)
+#   define BOOST_FT_loop <ndnboost/function_types/detail/pp_cc_loop/master.hpp>
+#else
+#   define BOOST_FT_loop \
+        <ndnboost/function_types/detail/pp_cc_loop/preprocessed.hpp>
+#endif
+
+#if defined(BOOST_FT_al_path)
+
+#   define BOOST_FT_cc_file \
+        <ndnboost/function_types/detail/pp_variate_loop/preprocessed.hpp>
+#   define BOOST_FT_variate_file \
+        <ndnboost/function_types/detail/pp_arity_loop.hpp>
+
+#   ifndef BOOST_FT_type_function
+#   define BOOST_FT_type_function(cc,name) BOOST_FT_SYNTAX( \
+      R BOOST_PP_EMPTY,BOOST_PP_EMPTY,cc,BOOST_PP_EMPTY,name,BOOST_PP_EMPTY)
+#   endif
+#   ifndef BOOST_FT_type_function_pointer
+#   define BOOST_FT_type_function_pointer(cc,name) BOOST_FT_SYNTAX( \
+      R BOOST_PP_EMPTY,BOOST_PP_LPAREN,cc,* BOOST_PP_EMPTY,name,BOOST_PP_RPAREN)
+#   endif
+#   ifndef BOOST_FT_type_function_reference
+#   define BOOST_FT_type_function_reference(cc,name) BOOST_FT_SYNTAX( \
+      R BOOST_PP_EMPTY,BOOST_PP_LPAREN,cc,& BOOST_PP_EMPTY,name,BOOST_PP_RPAREN)
+#   endif
+#   ifndef BOOST_FT_type_member_function_pointer
+#   define BOOST_FT_type_member_function_pointer(cc,name) BOOST_FT_SYNTAX( \
+      R BOOST_PP_EMPTY,BOOST_PP_LPAREN,cc,T0::* BOOST_PP_EMPTY,name,BOOST_PP_RPAREN)
+#   endif
+
+#   include BOOST_FT_loop
+
+#   undef BOOST_FT_type_function
+#   undef BOOST_FT_type_function_pointer
+#   undef BOOST_FT_type_function_reference
+#   undef BOOST_FT_type_member_function_pointer
+
+#   undef BOOST_FT_variations
+#   undef BOOST_FT_variate_file
+#   undef BOOST_FT_cc_file
+#   undef BOOST_FT_al_path
+
+#elif defined(BOOST_FT_cc_file)
+
+#   include BOOST_FT_loop
+#   undef BOOST_FT_cc_file
+
+#else
+
+#   error "argument missing"
+
+#endif
+
+#undef BOOST_FT_loop
+
+#include <ndnboost/function_types/detail/encoding/aliases_undef.hpp>
+#include <ndnboost/function_types/detail/encoding/undef.hpp>
+
+