+ refactoring work in progress