key should include function args & kwargs