expanding example to show caching based on arguments