map shit(unfinished)