It gets passed through several layers of abstraction and then modified. After talking with Jonathan we both think it should stay as a pointer. The reference would make it too easy to accidentally make a copy, and if not, you are still exposed to the parent object destroying it while you're still holding onto the reference.