add map cache implement