Add checks to make sure every needed class is a subclass of the correct subclass
Split the base class into multiple Interfaces/Classes
Merge branch 'development'