fixed transact! and update! semantics