basic structure of program layed out (yea I know, a little haphazard)