     V{ } clone >>cursors
     [ [ cursors#>> ] keep 
       '[ read-longlong _ cursors>> push ] times ] keep ;
+
+M: mdb-update-op (read-message) ( msg-stub opcode -- message )
+    drop
+    [ mdb-update-msg new ] dip copy-header
+    read-cstring >>collection
+    read-int32 >>upsert?
+    H{ } stream>assoc change-bytes-read >>selector
+    H{ } stream>assoc change-bytes-read >>object ;
 
 M: mdb-reply-op (read-message) ( msg-stub opcode -- message )
     drop

    [ >>collection ] dip
    >>objects OP_Insert >>opcode ;

: <mdb-reply-msg> ( -- mdb-reply-msg )
    mdb-reply-msg new ; inline


       objects>> [ assoc>array write ] each
    ] (write-message) ;

M: mdb-update-msg write-message ( message -- )
    dup
    '[ _
       [ flags>> write-int32 ] keep
       [ collection>> write-cstring ] keep
       [ upsert?>> write-int32 ] keep
       [ selector>> assoc>array write ] keep
       object>> assoc>array write
    ] (write-message) ;

M: mdb-delete-msg write-message ( message -- )
    dup
    '[ _
