diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/TickList.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/TickList.kt
index d76dd95e1..ed53c1e2e 100644
--- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/TickList.kt
+++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/util/TickList.kt
@@ -1,16 +1,13 @@
 package ru.dbotthepony.mc.otm.core.util
 
-import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap
-import it.unimi.dsi.fastutil.objects.ObjectAVLTreeSet
+import it.unimi.dsi.fastutil.objects.ObjectArrayList
+import it.unimi.dsi.fastutil.objects.ObjectArraySet
 import org.apache.logging.log4j.LogManager
-import ru.dbotthepony.mc.otm.core.addSorted
-import java.util.LinkedList
-import java.util.PriorityQueue
-import java.util.concurrent.atomic.AtomicInteger
+import java.util.*
 
 class TickList : ITickable {
 	private val tickers = LinkedList<IConditionalTickable>()
-	private val queuedTickers = ArrayList<IConditionalTickable>()
+	private val queuedTickers = ObjectArraySet<IConditionalTickable>()
 
 	private val timers = PriorityQueue<Timer>()
 	private val namedTimers = HashMap<Any?, Timer>()
@@ -71,6 +68,10 @@ class TickList : ITickable {
 						add(this)
 					} else {
 						queuedTickers.remove(this)
+
+						if (!inTicker) {
+							tickers.remove(this)
+						}
 					}
 				}
 			}