So you use inheritance, but still have huge amounts of "if" and "switch" statements cluttering up your code. You thought classes and inheritance was suppose to help keep your code clean and easy to read. Why I am still having to duplicate pieces of code that should be reusable? Then abstraction is what you are missing. Parenting is not just important in life, but in development as well.