The ops.OdtDocument.signalMemberUpdated is fired by the OpUpdateMember directly. Should add & remove operations also fire these themselves? I recall some discussion with Friedrich about this regarding cursors, and the impression I got there was the ops should be firing the signals, not the functions on the OdtDocument (I could be wrong here though! Please let me know if I am :) )