First commit: implement a server/router interface