Removed not applicable if conditions.
Adding a new base class to remove a lot of boilerplate code, no functionality changes