Refactored factories, the correct way.