refactor: new architecture