Seperation of functionality into classes