diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index 1c0c7267d2425d8f00373a71810dcf7a1c329aa8..fd2bd44b5acfbedd19ecc090201d00ef3afb04f7 100644
--- a/object_collection_manager/__init__.py
+++ b/object_collection_manager/__init__.py
@@ -6,7 +6,7 @@ bl_info = {
     "name": "Collection Manager",
     "description": "Manage collections and their objects",
     "author": "Ryan Inch",
-    "version": (2, 24, 2),
+    "version": (2, 24, 3),
     "blender": (2, 80, 0),
     "location": "View3D - Object Mode (Shortcut - M)",
     "warning": '',  # used for warning icon and text in addons panel
diff --git a/object_collection_manager/cm_init.py b/object_collection_manager/cm_init.py
index 38080cb883d606562c11414c18f72cbc52167b3a..679d8d3e2e58c8ec651c9af74e088b283ddbe1f0 100644
--- a/object_collection_manager/cm_init.py
+++ b/object_collection_manager/cm_init.py
@@ -144,6 +144,10 @@ def disable_objects_menu_addition(self, context):
 
 
 def register_disable_objects_hotkeys():
+    if addon_disable_objects_hotkey_keymaps:
+        # guard to handle default value updates (mouse hover + backspace)
+        return
+
     wm = bpy.context.window_manager
     if wm.keyconfigs.addon: # not present when started with --background
         km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py
index c2d555f5ee6b3a221b0243f28a1b1b614835e114..6d4ac7e7cff2d83b893b7f4e2a69c56497f77340 100644
--- a/object_collection_manager/qcd_init.py
+++ b/object_collection_manager/qcd_init.py
@@ -27,6 +27,7 @@ from bpy.app.handlers import persistent
 addon_qcd_keymaps = []
 addon_qcd_view_hotkey_keymaps = []
 addon_qcd_view_edit_mode_hotkey_keymaps = []
+qcd_registered = False
 
 
 qcd_classes = (
@@ -76,6 +77,11 @@ def load_pre_handler(dummy):
 
 
 def register_qcd():
+    global qcd_registered
+    if qcd_registered:
+        # guard to handle default value updates (mouse hover + backspace)
+        return
+
     for cls in qcd_classes:
         bpy.utils.register_class(cls)
 
@@ -107,8 +113,14 @@ def register_qcd():
     if prefs.enable_qcd_3dview_header_widget:
         register_qcd_3dview_header_widget()
 
+    qcd_registered = True
+
 
 def register_qcd_view_hotkeys():
+    if addon_qcd_view_hotkey_keymaps:
+        # guard to handle default value updates (mouse hover + backspace)
+        return
+
     wm = bpy.context.window_manager
     if wm.keyconfigs.addon: # not present when started with --background
         # create qcd hotkeys
@@ -180,6 +192,10 @@ def register_qcd_view_hotkeys():
 
 
 def register_qcd_view_edit_mode_hotkeys():
+    if addon_qcd_view_edit_mode_hotkey_keymaps:
+        # guard to handle default value updates (mouse hover + backspace)
+        return
+
     wm = bpy.context.window_manager
     if wm.keyconfigs.addon: # not present when started with --background
         # create qcd hotkeys
@@ -248,12 +264,22 @@ def register_qcd_view_edit_mode_hotkeys():
 
 
 def register_qcd_3dview_header_widget():
+    # unregister first to guard against default value updates (mouse hover + backspace)
+    # if the widget isn't registered it will just do nothing
+    unregister_qcd_3dview_header_widget()
+
+    # add the widget to the header, and an update function to the top bar to get view layer changes
     bpy.types.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots)
     bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update)
 
 
 
 def unregister_qcd():
+    global qcd_registered
+    if not qcd_registered:
+        # guard to handle default value updates (mouse hover + backspace)
+        return
+
     unregister_qcd_3dview_header_widget()
 
     for cls in qcd_classes:
@@ -279,6 +305,8 @@ def unregister_qcd():
 
     unregister_qcd_view_edit_mode_hotkeys()
 
+    qcd_registered = False
+
 
 def unregister_qcd_view_hotkeys():
     # remove keymaps when qcd view hotkeys are deactivated