first draft

needs to be sectioned off into classes and functions