Changing the name of a few MACROS to make them more obvious as to what they are accomplishing
Refactored the newInstance() function to move all the redundant code to the superclass.