The name `Callback` seems very generic now that I see it used in a declaration. We may want to consider renaming to `RouteCallback` or making `Callback` an inner class of `Router` so its `Router.Callback`.