diff --git a/ndnboost/function_types/config/cc_names.hpp b/ndnboost/function_types/config/cc_names.hpp
new file mode 100644
index 0000000..ab69d64
--- /dev/null
+++ b/ndnboost/function_types/config/cc_names.hpp
@@ -0,0 +1,31 @@
+
+// (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).
+
+//------------------------------------------------------------------------------
+
+#ifndef BOOST_FT_CONFIG_CC_NAMES_HPP_INCLUDED
+#define BOOST_FT_CONFIG_CC_NAMES_HPP_INCLUDED
+
+#define BOOST_FT_BUILTIN_CC_NAMES \
+  (( IMPLICIT           , implicit_cc , BOOST_PP_EMPTY                ))\
+  (( CDECL              , cdecl_cc    , BOOST_PP_IDENTITY(__cdecl   ) ))\
+  (( STDCALL            , stdcall_cc  , BOOST_PP_IDENTITY(__stdcall ) ))\
+  (( PASCAL             , pascal_cc   , BOOST_PP_IDENTITY(pascal    ) ))\
+  (( FASTCALL           , fastcall_cc , BOOST_PP_IDENTITY(__fastcall) ))\
+  (( CLRCALL            , clrcall_cc  , BOOST_PP_IDENTITY(__clrcall ) ))\
+  (( THISCALL           , thiscall_cc , BOOST_PP_IDENTITY(__thiscall) ))\
+  (( IMPLICIT_THISCALL  , thiscall_cc , BOOST_PP_EMPTY                )) 
+
+// append user-defined cc names to builtin ones
+#ifdef BOOST_FT_CC_NAMES 
+#   define BOOST_FT_CC_NAMES_SEQ BOOST_FT_BUILTIN_CC_NAMES BOOST_FT_CC_NAMES
+#   define BOOST_FT_CC_PREPROCESSING 1
+#else
+#   define BOOST_FT_CC_NAMES_SEQ BOOST_FT_BUILTIN_CC_NAMES
+#endif
+
+#endif
+
diff --git a/ndnboost/function_types/config/compiler.hpp b/ndnboost/function_types/config/compiler.hpp
new file mode 100644
index 0000000..9b06d18
--- /dev/null
+++ b/ndnboost/function_types/config/compiler.hpp
@@ -0,0 +1,116 @@
+
+// (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).
+
+//------------------------------------------------------------------------------
+
+#ifndef BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
+#define BOOST_FT_CONFIG_COMPILER_HPP_INCLUDED
+
+#include <ndnboost/config.hpp>
+#include <ndnboost/detail/workaround.hpp>
+
+#if defined(BOOST_MSVC)
+
+#   if BOOST_MSVC < 1310
+#     error "unsupported compiler version"
+#   endif
+
+#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
+
+      // enable clrcall calling covention (call to .NET managed code) when
+      // compiling with /clr 
+#     if BOOST_MSVC >= 1400 && defined(__cplusplus_cli)
+#       ifndef BOOST_FT_CC_CLRCALL
+#       define BOOST_FT_CC_CLRCALL callable_builtin
+#       endif
+#     endif
+
+      // Intel x86 architecture specific calling conventions
+#     ifdef _M_IX86
+#       define BOOST_FT_COMMON_X86_CCs callable_builtin
+#       if BOOST_MSVC < 1400
+          // version 7.1 is missing a keyword to specify the thiscall cc ...
+#         ifndef BOOST_FT_CC_IMPLICIT_THISCALL
+#         define BOOST_FT_CC_IMPLICIT_THISCALL non_variadic|member|callable_builtin
+#         ifndef BOOST_FT_CONFIG_OK
+#           pragma message("INFO| /Gd /Gr /Gz will compiler options will cause")
+#           pragma message("INFO| a compile error.")
+#           pragma message("INFO| Reconfigure Boost.FunctionTypes in this case.")
+#           pragma message("INFO| This message can be suppressed by defining")
+#           pragma message("INFO| BOOST_FT_CONFIG_OK.")
+#         endif
+#         endif
+#       else 
+          // ...introduced in version 8
+#         ifndef BOOST_FT_CC_THISCALL
+#         define BOOST_FT_CC_THISCALL non_variadic|member|callable_builtin
+#         endif
+#       endif
+#     endif
+#   endif
+
+#elif defined(__GNUC__) && !defined(BOOST_INTEL_LINUX)
+
+#   if __GNUC__ < 3
+#     error "unsupported compiler version"
+#   endif
+
+#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
+
+#     if defined(__i386__)
+#       // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20439
+#       // see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29328
+#       if BOOST_WORKAROUND(__GNUC__,BOOST_TESTED_AT(4))
+#         ifndef BOOST_FT_CC_IMPLICIT 
+#         define BOOST_FT_CC_IMPLICIT member|callable_builtin
+#         endif
+#         define BOOST_FT_COMMON_X86_CCs non_member|callable_builtin
+#       else
+#         define BOOST_FT_COMMON_X86_CCs callable_builtin
+#       endif
+#     else
+#       ifndef BOOST_FT_CC_IMPLICIT
+#       define BOOST_FT_CC_IMPLICIT callable_builtin
+#       endif
+#     endif
+#   endif
+
+#   if (defined(BOOST_FT_CC_CDECL) || defined(BOOST_FT_COMMON_X86_CCs)) \
+        && !defined(__cdecl)
+#     define __cdecl __attribute__((__cdecl__))
+#   endif
+#   if (defined(BOOST_FT_CC_STDCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \
+        && !defined(__stdcall)
+#     define __stdcall __attribute__((__stdcall__))
+#   endif
+#   if (defined(BOOST_FT_CC_FASTCALL) || defined(BOOST_FT_COMMON_X86_CCs)) \
+        && !defined(__fastcall)
+#     define __fastcall __attribute__((__fastcall__))
+#   endif
+
+#elif defined(__BORLANDC__)
+
+#   if __BORLANDC__ < 0x550
+#     error "unsupported compiler version"
+#   elif __BORLANDC__ > 0x565
+#     pragma message("WARNING: library untested with this compiler version")
+#   endif
+
+#   ifdef BOOST_FT_AUTODETECT_CALLING_CONVENTIONS
+#     define BOOST_FT_COMMON_X86_CCs callable_builtin
+#   endif
+
+    // syntactic specialities of cc specifier
+#   define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
+                        result() cc_spec() lparen() type_mod() name() rparen()
+#else
+    // only enable default calling convention
+#   define BOOST_FT_CC_IMPLICIT callable_builtin
+#endif
+
+
+#endif
+
diff --git a/ndnboost/function_types/config/config.hpp b/ndnboost/function_types/config/config.hpp
new file mode 100644
index 0000000..fb428a4
--- /dev/null
+++ b/ndnboost/function_types/config/config.hpp
@@ -0,0 +1,59 @@
+
+// (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).
+
+//------------------------------------------------------------------------------
+
+#ifndef BOOST_FT_CONFIG_HPP_INCLUDED
+#define BOOST_FT_CONFIG_HPP_INCLUDED
+
+#include <ndnboost/function_types/config/compiler.hpp>
+#include <ndnboost/function_types/config/cc_names.hpp>
+
+// maximum allowed arity
+#ifndef BOOST_FT_MAX_ARITY
+#define BOOST_FT_MAX_ARITY 20
+#endif
+
+// the most common calling conventions for x86 architecture can be enabled at
+// once in the compiler config
+#ifdef BOOST_FT_COMMON_X86_CCs
+#   ifndef BOOST_FT_CC_CDECL
+#   define BOOST_FT_CC_CDECL BOOST_FT_COMMON_X86_CCs
+#   endif
+#   ifndef BOOST_FT_CC_STDCALL
+#   define BOOST_FT_CC_STDCALL non_variadic|BOOST_FT_COMMON_X86_CCs
+#   endif
+#   ifndef BOOST_FT_CC_FASTCALL
+#   define BOOST_FT_CC_FASTCALL non_variadic|BOOST_FT_COMMON_X86_CCs
+#   endif
+#endif
+
+// where to place the cc specifier (the common way)
+#ifndef BOOST_FT_SYNTAX
+#   define BOOST_FT_SYNTAX(result,lparen,cc_spec,type_mod,name,rparen) \
+                        result() lparen() cc_spec() type_mod() name() rparen()
+#endif
+
+// param for nullary functions
+// set to "void" for compilers that require nullary functions to read 
+// "R (void)" in template partial specialization
+#ifndef BOOST_FT_NULLARY_PARAM
+#define BOOST_FT_NULLARY_PARAM 
+#endif
+
+// there is a pending defect report on cv qualified function types, so support
+// for these types is disabled, unless for compilers where it's known to work
+#ifndef BOOST_FT_NO_CV_FUNC_SUPPORT
+#define BOOST_FT_NO_CV_FUNC_SUPPORT 1
+#endif
+
+// full preprocessing implies preprocessing of the ccs
+#if defined(BOOST_FT_PREPROCESSING_MODE) && !defined(BOOST_FT_CC_PREPROCESSING)
+#   define BOOST_FT_CC_PREPROCESSING 1
+#endif
+
+#endif
+
