refactor Mapper.from_h