added gem
added some caching