close #45 with location caching