branch is optional