More intelligent branch handling, can pass branches in as the first argument, etc...