added classes structure for abstract factory package