All these conditionals are kind of gross, but I see they're necessary for now.  If we see a pattern start to emerge, maybe we can create a helper do DRY up this kind of logic.