first of the new ghost refactor