wip
cache instead of map