added a router implementation