* branch is now optional and will be deduced if not provided