actually implementing factories as a thing