keep versioning out of the actual router, handle exception outside as well, extract routes into separate file