Move Creation Knowledge to Factory

Data and code used to instantiate a class
is sprawled across numerous classes.

Move the creation knowledge into a single Factory class.