add more caching (optimistically)