unboxed closures and fn for route