add some caching to map calculation