base abstract factory pattern realization added (100%)