wip
refactoring...
refactoring...
clean up