new feature: onRouteChange