 					return dest
 		else if otherC.od != undefined
 			if c.p[common] == otherC.p[common]
-				return dest if cplength > otherCplength
+				return dest if !commonOperand
 				if c.oi != undefined
 					delete c.od
 				else

				c.p[common]++

			if c.lm != undefined
				if otherCplength == cplength
					# otherC edits the same list we edit
					if otherC.p[common] <= c.lm
						c.lm++
		else if otherC.ld != undefined
			if c.lm != undefined
				if otherCplength == cplength
					if otherC.p[common] == c.p[common]
						# they deleted the thing we're trying to move
						return dest

		else if otherC.li != undefined && otherC.ld != undefined
			if otherC.p[common] == c.p[common]
				# noop
				if !commonOperand
					# we're below the deleted element, so -> noop
					return dest
				else if c.ld != undefined
					# we're trying to delete the same element, -> noop
					if c.li != undefined and type == 'client'
						# we're both replacing one element with another. only one can
						# survive!
						c.ld = clone otherC.li
					else
						return dest
		else if otherC.li != undefined
			if c.li != undefined and c.ld == undefined and commonOperand and c.p[common] == otherC.p[common]
				# in li vs. li, client wins.
				if type == 'server'
					c.p[common]++
