refactor Application class. Ultimately it could be used as base class in applications using abilian framework