add cache_method_return wrapper