factory and progression now completely refactored