refactored Application class and added shader class