add caching, throw away kwargs because decorator is stupid