branches must always take string label