refactor first phase
refactor next phase :)
refactor next phase - dont work not - missing tests will be reason...
merge?