minor changes to abstract factory