added abstract factory class diagram