memoize key on kwargs.items(), not kwargs