This very much looks like a candidate for a macro to me but we'll have to wait until macros stabilize.