yet another refactor
moving things around