corrections to abstract factory