calc like a router