Refactor
wip