added more caching stuff