made the `fn` a non-optional parameter instead, giving a decent name is important to get proper syntax highlighting in the gist