corrected map.hpp