Well, I think it's neater to have common code for all 3.  And I don't think it's ugly as well.

If you go for a veto, I'll change it though.