Added factory related interfaces, abstract classes, and concrete classes.