add boost::function