refactor - wip