use void instead of boost::none_t