 						if from > to
 							c.p[common]++
 		else if otherC.oi != undefined && otherC.od != undefined
-			return dest if cplength > otherCplength and c.p[common] == otherC.p[common]
-			if c.oi != undefined and c.p[common] == otherC.p[common]
-				# we inserted where someone else replaced
-				if type == 'server'
-					# client wins
+			if c.p[common] == otherC.p[common]
+				if c.oi != undefined and commonOperand
+					# we inserted where someone else replaced
+					if type == 'server'
+						# client wins
+						return dest
+					else
+						# we win, make our op replace what they inserted
+						c.od = otherC.oi
+				else
+					# -> noop if the other component is deleting the same object (or any
+					# parent)
 					return dest
-				else
-					# we win, make our op a replacement
-					c.od = otherC.oi
-			else
-				# -> noop if the other component is deleting the same object (or any
-				# parent)
-				return dest if c.p[common] == otherC.p[common]
 		else if otherC.oi != undefined
 			if c.oi != undefined and c.p[common] == otherC.p[common]
 				# client wins if we try to insert at the same place

				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

					return dest
		else if otherC.od != undefined
			if c.p[common] == otherC.p[common]
				return dest if !commonOperand
				if c.oi != undefined
					delete c.od
				else
