start implement branch selection