add ability to memoize functions which use keyword arguments