What are the point of these sub-classes? They are exactly the same as your "GenericComponent" and will act as such,