add abstract factory pattern, concept of aggregation widget. Unstable state