added router and tests