I dislike all this, but I'm not sure how to DRY it. It's a fixed set of fields anyway, so I'm not sure how concerned to actually be..