The main purpose of this version was to refactor the code and hopefully make it easier to understand. The classes and there methods remained the same, for the most part. I have tried to cover all the ...