better perf by caching versions