Factory turned into abstract factory