added tests and router