refactor to_string.h