refactoring 90%
new test created, implementation fixed