abstract version of routing