removing Boost preprocessor dependency