I don't really think so, but it isn't complicated.  It's just "copy the local, then promote the remainder", with some minor variation. Maybe we could make a shared function that generated a result from an ordered list of QContact pointers.