diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
index 5cee6a28efcaca47eb8b803e4dd2459483c57a9b..044bfeba440ed854a7dc5ee8e33aee58f27949cc 100644
--- a/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/session/ObjectStorage.kt
@@ -6,6 +6,7 @@ import de.kuschku.libquassel.protocol.Type
 import de.kuschku.libquassel.protocol.message.SignalProxyMessage
 import de.kuschku.libquassel.quassel.exceptions.ObjectNotFoundException
 import de.kuschku.libquassel.quassel.syncables.interfaces.ISyncableObject
+import de.kuschku.libquassel.util.helpers.removeIfEqual
 
 class ObjectStorage(private val proxy: SignalProxy) {
   private val objectTree: MutableMap<Pair<String, String>, ISyncableObject> = HashMap()
@@ -35,7 +36,7 @@ class ObjectStorage(private val proxy: SignalProxy) {
 
   fun rename(obj: ISyncableObject, new: String, old: String) {
     objectTree[Pair(obj.className, new)] = obj
-    objectTree.remove(Pair(obj.className, old), obj)
+    objectTree.removeIfEqual(Pair(obj.className, old), obj)
     if (get(obj.className, new) != obj) {
       throw IllegalStateException("Object should be existing")
     }
diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt
index 471d163478f74bc441746ff7610d5f0994dd9fa8..d0aeb7099416b027fd59baa908b30dd79221601f 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/MapHelper.kt
@@ -1,3 +1,14 @@
 package de.kuschku.libquassel.util.helpers
 
 fun <K, V> Map<K, V>.getOr(key: K, defValue: V) = this[key] ?: defValue
+
+fun <K, V> MutableMap<K, V>.removeIfEqual(key: K, value: V): Boolean {
+  if (!this.containsKey(key))
+    return false
+
+  if (this[key] != value)
+    return false
+
+  this.remove(key)
+  return true
+}