it only has to be written once. i think it's an important enough problem to warrant such code - definitely could use a few more macros though