add MapHeader and refactor map