simplified many methods, further encapsulated code to make it easier to read, and reduced coupling