use routeAndCall to keep backward compatibility