Changed `thunk` to use identity in case `fn` isn't a function