major refactor - wip