Refactor - move stuff around a lot.