diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index 6f9a4ae605ea148b64e2a1594af4b6c61a34bd1e..5c8c8e5f29cd2bc45912eed3ab924f3dcafb4ea8 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -91,6 +91,17 @@ def scene_load(context):
     preferences = bpy.context.preferences.addons['blenderkit'].preferences
     preferences.login_attempt = False
 
+def check_timers_timer():
+    ''' checks if all timers are registered regularly. Prevents possible bugs from stopping the addon.'''
+    if not bpy.app.timers.is_registered(search.timer_update):
+        bpy.app.timers.register(search.timer_update)
+    if not bpy.app.timers.is_registered(download.timer_update):
+        bpy.app.timers.register(download.timer_update)
+    if not (bpy.app.timers.is_registered(tasks_queue.queue_worker)):
+        bpy.app.timers.register(tasks_queue.queue_worker)
+    if not bpy.app.timers.is_registered(bg_blender.bg_update):
+        bpy.app.timers.register(bg_blender.bg_update)
+    return 5.0
 
 licenses = (
     ('royalty_free', 'Royalty Free', 'royalty free commercial license'),
@@ -1481,10 +1492,15 @@ def register():
     bkit_oauth.register()
     tasks_queue.register()
 
+    bpy.app.timers.register(check_timers_timer)
+
     bpy.app.handlers.load_post.append(scene_load)
 
 
 def unregister():
+
+    bpy.app.timers.unregister(check_timers_timer)
+
     ui.unregister_ui()
     search.unregister_search()
     asset_inspector.unregister_asset_inspector()
diff --git a/blenderkit/bg_blender.py b/blenderkit/bg_blender.py
index e2596013ada19c735a4c84c151eb6673e91876b7..9d3521e4fbb37a5759bc3f69c54d7eb81fdaa3c6 100644
--- a/blenderkit/bg_blender.py
+++ b/blenderkit/bg_blender.py
@@ -237,5 +237,6 @@ def register():
 
 def unregister():
     bpy.utils.unregister_class(KillBgProcess)
-    bpy.app.timers.unregister(bg_update)
+    if bpy.app.timers.is_registered(bg_update):
+        bpy.app.timers.unregister(bg_update)
 
diff --git a/blenderkit/download.py b/blenderkit/download.py
index 3e4d49d6fdbcbba6f4e74d339acff031562a8b09..6c3f8ccf2620fc73cd1bf0673d355aee561b2e52 100644
--- a/blenderkit/download.py
+++ b/blenderkit/download.py
@@ -928,4 +928,5 @@ def unregister_download():
     bpy.utils.unregister_class(BlenderkitKillDownloadOperator)
     bpy.app.handlers.load_post.remove(scene_load)
     bpy.app.handlers.save_pre.remove(scene_save)
-    bpy.app.timers.unregister(timer_update)
+    if bpy.app.timers.is_registered(timer_update):
+        bpy.app.timers.unregister(timer_update)
diff --git a/blenderkit/search.py b/blenderkit/search.py
index 3f381b929d684817bad2dc5893f253f447d9c675..414b9afcddb0289d2f7fd006112efe0ad930599d 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -1173,6 +1173,6 @@ def unregister_search():
 
     for c in classes:
         bpy.utils.unregister_class(c)
-
-    bpy.app.timers.unregister(timer_update)
+    if bpy.app.timers.is_registered(timer_update):
+        bpy.app.timers.unregister(timer_update)
 
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index 7c32da317cba8324df2607f4973da507b456bd21..8aa189139b885cde100cce7ba8e06b6cbcc7b4fd 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -29,8 +29,9 @@ if "bpy" in locals():
     download = importlib.reload(download)
     bg_blender = importlib.reload(bg_blender)
     colors = importlib.reload(colors)
+    tasks_queue = importlib.reload(tasks_queue)
 else:
-    from blenderkit import paths, ratings, utils, search, upload, ui_bgl, download, bg_blender, colors
+    from blenderkit import paths, ratings, utils, search, upload, ui_bgl, download, bg_blender, colors, tasks_queue
 
 import bpy
 
@@ -1151,6 +1152,8 @@ def update_ui_size(area, region):
     ui.rating_y = ui.bar_y - ui.bar_height
 
 
+
+
 class AssetBarOperator(bpy.types.Operator):
     '''runs search and displays the asset bar at the same time'''
     bl_idname = "view3d.blenderkit_asset_bar"