Added proper __main__, removed __str__, since it should already inherit.
Added various function to add in work for exercise 18.3.