Completed Refactor to Abstract Factory. All creation now encapsulated and extracted from main application.