callback
BOOST_PP refactor