Passing the workspace around is cleaner than mutating file.Path all over the place, imo.