some refactor
wip refactor
wip refactor etc