wip3
green - wip4
refactor all factories to have same interface