diff --git a/core/message_filters/include/message_filters/time_synchronizer.h b/core/message_filters/include/message_filters/time_synchronizer.h
index 81fc8682..7f584cba 100644
--- a/core/message_filters/include/message_filters/time_synchronizer.h
+++ b/core/message_filters/include/message_filters/time_synchronizer.h
@@ -130,6 +130,14 @@ public:
   typedef boost::shared_ptr<M8 const> M8ConstPtr;
   typedef boost::tuple<M0ConstPtr, M1ConstPtr, M2ConstPtr, M3ConstPtr, M4ConstPtr, M5ConstPtr, M6ConstPtr, M7ConstPtr, M8ConstPtr> Tuple;
   typedef boost::signal<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&, const M4ConstPtr&, const M5ConstPtr&, const M6ConstPtr&, const M7ConstPtr&, const M8ConstPtr&)> Signal;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&)> Callback2;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&)> Callback3;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&)> Callback4;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&, const M4ConstPtr&)> Callback5;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&, const M4ConstPtr&, const M5ConstPtr&)> Callback6;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&, const M4ConstPtr&, const M5ConstPtr&, const M6ConstPtr&)> Callback7;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&, const M4ConstPtr&, const M5ConstPtr&, const M6ConstPtr&, const M7ConstPtr&)> Callback8;
+  typedef boost::function<void(const M0ConstPtr&, const M1ConstPtr&, const M2ConstPtr&, const M3ConstPtr&, const M4ConstPtr&, const M5ConstPtr&, const M6ConstPtr&, const M7ConstPtr&, const M8ConstPtr&)> Callback9;
 
   template<class F0, class F1>
   TimeSynchronizer(F0& f0, F1& f1, uint32_t queue_size)
@@ -275,56 +283,56 @@ public:
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 2> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2));
+    return registerCallback(boost::bind(Callback2(callback), _1, _2));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 3> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3));
+    return registerCallback(boost::bind(Callback3(callback), _1, _2, _3));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 4> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3, _4));
+    return registerCallback(boost::bind(Callback4(callback), _1, _2, _3, _4));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 5> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3, _4, _5));
+    return registerCallback(boost::bind(Callback5(callback), _1, _2, _3, _4, _5));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 6> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3, _4, _5, _6));
+    return registerCallback(boost::bind(Callback6(callback), _1, _2, _3, _4, _5, _6));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 7> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3, _4, _5, _6, _7));
+    return registerCallback(boost::bind(Callback7(callback), _1, _2, _3, _4, _5, _6, _7));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 8> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3, _4, _5, _6, _7, _8));
+    return registerCallback(boost::bind(Callback8(callback), _1, _2, _3, _4, _5, _6, _7, _8));
   }
 
   template<class C>
   typename boost::enable_if<mpl::and_<ft::is_nonmember_callable_builtin<C>,
                                       mpl::equal_to<ft::function_arity<C>, mpl::integral_c<size_t, 9> > >, Connection >::type registerCallback(const C& callback)
   {
-    return registerCallback(boost::bind(callback, _1, _2, _3, _4, _5, _6, _7, _8, _9));
+    return registerCallback(boost::bind(Callback9(callback), _1, _2, _3, _4, _5, _6, _7, _8, _9));
   }
 
   template<class C>