need to break everyhting up into easier to handle chunks of functionality.