so, refactoring WIP