Cleanup code

All methods were static. This commit creates an App object
and splits code into 3 parts:

- Setup UI
- Initialize components
- Start application