add map page, by porting over old code pretty much as-is