When something has too many primitive types whose purpose isn't clear, I like to use named parameters to help whoever gets to read it later. It also helps avoiding problems due to parameter position changes.