Refactor Merchandising-Component Creation Code

Simplifies class hierarchies and removes some redundant code.
Now you are just hiding the type... :laughing: 
I hope these aren't `[Product with Serializable]`. (I seen your commit message) :eyes: