As stated above, I expected all these conditionals to be a separate generic function.