split up the program into separate modules so it will read better