refactoring: create ApplicationController and add init functionality to Controller (basic lifecycle)