Why is returning three values weird when we're returning two all the time? This iterator gives you two pieces of information and an error code, so we should pass that to the user. For generic references we have the reference iterator. The point of this is to know about the branch specifics.