I think this is the best solution
Proper inheritance
Inheritance should be exploited to the MAX
GetClasses is redundant and wrong
GetClasses is redundant and wrong again
Merge