refactor + main / router