rewrite stuff
next position refactor