First take on reimplementing Factory.