Fixed usage of exceptions, fixed inconsistancies
changed inconsistancies in string building to use the `format` method. I find this makes reading the code easier.
main function will catch any unexpected exceptions, the rest (expected) exceptions will be caught in there cooresponding function.
added many comments to explain the program more thoroughly