refactored app router