A Simple abstract factory pattern. (For Symphony CMS)