Checkpoint: Arrow to self works. Note: All of this code is very ugly.