Quick question: all the goto fail's where
fail:
return false;
This is just to perhaps change return false to something else in the future, correct? Else why not just return false everywhere instead of goto fail