[Chris] refactored Factory