master: a bit redesign to use more std::string and path_up