basic architecture for the application

closes #4