Refactor out child-selection logic

Also, the beginnings of a staff view