better caching with new created method