diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index ad67c29bd472672343fa0160e7c9b5dae2a80a8b..1e74a3c0b56eb6a7b58953678293813cd9db0ed8 100644
--- a/object_collection_manager/__init__.py
+++ b/object_collection_manager/__init__.py
@@ -22,7 +22,7 @@ bl_info = {
     "name": "Collection Manager",
     "description": "Manage collections and their objects",
     "author": "Ryan Inch",
-    "version": (2, 12, 2),
+    "version": (2, 12, 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/internals.py b/object_collection_manager/internals.py
index 8a2254435c6180ee55451d2d1fab01bbf4f603ed..857e73aa6876553022574cb5d98ae77ee205f549 100644
--- a/object_collection_manager/internals.py
+++ b/object_collection_manager/internals.py
@@ -597,13 +597,21 @@ def generate_state():
     return state
 
 
-def get_move_selection():
+def get_move_selection(*, names_only=False):
     global move_selection
 
     if not move_selection:
-        move_selection = [obj.name for obj in bpy.context.selected_objects]
+        move_selection = {obj.name for obj in bpy.context.selected_objects}
 
-    return [bpy.data.objects[name] for name in move_selection]
+    if names_only:
+        return move_selection
+
+    else:
+        if len(move_selection) <= 5:
+            return {bpy.data.objects[name] for name in move_selection}
+
+        else:
+            return {obj for obj in bpy.data.objects if obj.name in move_selection}
 
 
 def get_move_active():
@@ -613,7 +621,7 @@ def get_move_active():
     if not move_active:
         move_active = getattr(bpy.context.view_layer.objects.active, "name", None)
 
-    if move_active not in [obj.name for obj in get_move_selection()]:
+    if move_active not in get_move_selection(names_only=True):
         move_active = None
 
     return bpy.data.objects[move_active] if move_active else None
diff --git a/object_collection_manager/qcd_move_widget.py b/object_collection_manager/qcd_move_widget.py
index 28ed9c019a2e7106580c119d8848eb67795f1a15..1b2a6beed9b6ae576e5a4e7c4bb1b2456bbdef82 100644
--- a/object_collection_manager/qcd_move_widget.py
+++ b/object_collection_manager/qcd_move_widget.py
@@ -655,6 +655,10 @@ def allocate_main_ui(self, context):
     self.areas["Button Row 2 B"] = button_row_2_b
 
 
+    selected_objects = qcd_operators.get_move_selection()
+    active_object = qcd_operators.get_move_active()
+
+
     # BUTTONS
     def get_buttons(button_row, row_num):
         cur_width_pos = button_row["vert"][0]
@@ -667,8 +671,6 @@ def allocate_main_ui(self, context):
             if qcd_slot_name:
                 qcd_laycol = layer_collections[qcd_slot_name]["ptr"]
                 collection_objects = qcd_laycol.collection.objects
-                selected_objects = qcd_operators.get_move_selection()
-                active_object = qcd_operators.get_move_active()
 
                 # BUTTON
                 x = cur_width_pos
diff --git a/object_collection_manager/ui.py b/object_collection_manager/ui.py
index c6403fe21c3fa7ae42790b77283e6fc4eff42131..7858e5bf58632e6e323db39d92b9df9d42ed2751 100644
--- a/object_collection_manager/ui.py
+++ b/object_collection_manager/ui.py
@@ -178,8 +178,12 @@ class CollectionManager(Operator):
         row_setcol = global_rto_row.row()
         row_setcol.alignment = 'LEFT'
         row_setcol.operator_context = 'INVOKE_DEFAULT'
+
         selected_objects = get_move_selection()
         active_object = get_move_active()
+        CM_UL_items.selected_objects = selected_objects
+        CM_UL_items.active_object = active_object
+
         collection = context.view_layer.layer_collection.collection
 
         icon = 'MESH_CUBE'
@@ -188,7 +192,7 @@ class CollectionManager(Operator):
             if active_object and active_object.name in collection.objects:
                 icon = 'SNAP_VOLUME'
 
-            elif not set(selected_objects).isdisjoint(collection.objects):
+            elif not selected_objects.isdisjoint(collection.objects):
                 icon = 'STICKY_UVS_LOC'
 
         else:
@@ -437,6 +441,9 @@ class CollectionManager(Operator):
 class CM_UL_items(UIList):
     last_filter_value = ""
 
+    selected_objects = set()
+    active_object = None
+
     filter_by_selected: BoolProperty(
                         name="Filter By Selected",
                         default=False,
@@ -456,8 +463,8 @@ class CM_UL_items(UIList):
         view_layer = context.view_layer
         laycol = layer_collections[item.name]
         collection = laycol["ptr"].collection
-        selected_objects = get_move_selection()
-        active_object = get_move_active()
+        selected_objects = CM_UL_items.selected_objects
+        active_object = CM_UL_items.active_object
 
         column = layout.column(align=True)
 
@@ -545,7 +552,7 @@ class CM_UL_items(UIList):
             if active_object and active_object.name in collection.objects:
                 icon = 'SNAP_VOLUME'
 
-            elif not set(selected_objects).isdisjoint(collection.objects):
+            elif not selected_objects.isdisjoint(collection.objects):
                 icon = 'STICKY_UVS_LOC'
 
         else:
@@ -781,14 +788,15 @@ def view3d_header_qcd_slots(self, context):
 
     update_collection_tree(context)
 
+    selected_objects = get_move_selection()
+    active_object = get_move_active()
+
     for x in range(20):
         qcd_slot_name = qcd_slots.get_name(str(x+1))
 
         if qcd_slot_name:
             qcd_laycol = layer_collections[qcd_slot_name]["ptr"]
             collection_objects = qcd_laycol.collection.objects
-            selected_objects = get_move_selection()
-            active_object = get_move_active()
 
             icon_value = 0
 
@@ -797,9 +805,8 @@ def view3d_header_qcd_slots(self, context):
                 active_object.name in collection_objects):
                 icon = 'LAYER_ACTIVE'
 
-
             # if there are selected objects use LAYER_ACTIVE
-            elif not set(selected_objects).isdisjoint(collection_objects):
+            elif not selected_objects.isdisjoint(collection_objects):
                 icon = 'LAYER_USED'
 
             # If there are objects use LAYER_USED