added abstract-factory sample