Refactoring condition with separated factory.
Refactoring condition with separated factory.