Reworked abstract base class to use @property variables, but not sure if this is the best way to go.