position refactor