diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index bf3959afa55dd81d3bc6eaa9a05dd1f5beab8968..e3f47c10c4d0c718a6a19deb178ca4938a6bc62d 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,1,0),
+    "version": (2,2,1),
     "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/operators.py b/object_collection_manager/operators.py
index 27b5a032d871ca3a724f725f5e1843434ae4a505..5e7f465e4c773a32ef392769d0acab6535fd9af5 100644
--- a/object_collection_manager/operators.py
+++ b/object_collection_manager/operators.py
@@ -54,6 +54,7 @@ rto_history = {
     "render_all": {}
 }
 
+copy_buffer = {"RTO": "", "values": []}
 swap_buffer = {"A": {"RTO": "", "values": []}, "B": {"RTO": "", "values": []}}
 
 class ExpandAllOperator(Operator):
@@ -407,7 +408,7 @@ class CMExcludeOperator(Operator):
 
 
 class CMUnExcludeAllOperator(Operator):
-    '''  * Click to toggle between current excluded state and all included.\n  * Shift-Click to invert excluded status of all collections\n  * Ctrl-Alt-Click to swap RTOs'''
+    '''  * Click to toggle between current excluded state and all included.\n  * Shift-Click to invert excluded status of all collections\n  * Ctrl-Click to Copy/Paste RTOs\n  * Ctrl-Alt-Click to swap RTOs'''
     bl_label = "Toggle Excluded Status Of All Collections"
     bl_idname = "view3d.un_exclude_all_collections"
     bl_options = {'REGISTER', 'UNDO'}
@@ -416,13 +417,37 @@ class CMUnExcludeAllOperator(Operator):
         global rto_history
 
         view_layer = context.view_layer.name
+        modifiers = get_modifiers(event)
 
         if not view_layer in rto_history["exclude_all"]:
             rto_history["exclude_all"][view_layer] = []
 
         exclude_all_history = rto_history["exclude_all"][view_layer]
 
-        if event.ctrl and event.alt:
+        if modifiers == {"ctrl"}:
+            global copy_buffer
+
+            if not copy_buffer["values"]:
+                # copy
+                copy_buffer["RTO"] = "exclude"
+                for laycol in layer_collections.values():
+                    copy_buffer["values"].append(laycol["ptr"].exclude)
+
+            else:
+                if len(copy_buffer["values"]) != len(layer_collections):
+                    return {'CANCELLED'}
+
+                # paste
+                for x, laycol in enumerate(layer_collections.values()):
+                    laycol["ptr"].exclude = copy_buffer["values"][x]
+
+                # clear copy buffer
+                copy_buffer["RTO"] = ""
+                copy_buffer["values"].clear()
+
+            return {'FINISHED'}
+
+        if modifiers == {"ctrl", "alt"}:
             global swap_buffer
 
             if not swap_buffer["A"]["values"]:
@@ -695,7 +720,7 @@ class CMRestrictSelectOperator(Operator):
 
 
 class CMUnRestrictSelectAllOperator(Operator):
-    '''  * Click to toggle between current selectable state and all selectable.\n  * Shift-Click to invert selectable status of all collections\n  * Ctrl-Alt-Click to swap RTOs'''
+    '''  * Click to toggle between current selectable state and all selectable.\n  * Shift-Click to invert selectable status of all collections\n  * Ctrl-Click to Copy/Paste RTOs\n  * Ctrl-Alt-Click to swap RTOs'''
     bl_label = "Toggle Selectable Status Of All Collections"
     bl_idname = "view3d.un_restrict_select_all_collections"
     bl_options = {'REGISTER', 'UNDO'}
@@ -704,13 +729,37 @@ class CMUnRestrictSelectAllOperator(Operator):
         global rto_history
 
         view_layer = context.view_layer.name
+        modifiers = get_modifiers(event)
 
         if not view_layer in rto_history["select_all"]:
             rto_history["select_all"][view_layer] = []
 
         select_all_history = rto_history["select_all"][view_layer]
 
-        if event.ctrl and event.alt:
+        if modifiers == {"ctrl"}:
+            global copy_buffer
+
+            if not copy_buffer["values"]:
+                # copy
+                copy_buffer["RTO"] = "collection.hide_select"
+                for laycol in layer_collections.values():
+                    copy_buffer["values"].append(laycol["ptr"].collection.hide_select)
+
+            else:
+                if len(copy_buffer["values"]) != len(layer_collections):
+                    return {'CANCELLED'}
+
+                # paste
+                for x, laycol in enumerate(layer_collections.values()):
+                    laycol["ptr"].collection.hide_select = copy_buffer["values"][x]
+
+                # clear copy buffer
+                copy_buffer["RTO"] = ""
+                copy_buffer["values"].clear()
+
+            return {'FINISHED'}
+
+        if modifiers == {"ctrl", "alt"}:
             global swap_buffer
 
             if not swap_buffer["A"]["values"]:
@@ -979,7 +1028,7 @@ class CMHideOperator(Operator):
 
 
 class CMUnHideAllOperator(Operator):
-    '''  * Click to toggle between current visibility state and all visible.\n  * Shift-Click to invert visibility status of all collections\n  * Ctrl-Alt-Click to swap RTOs'''
+    '''  * Click to toggle between current visibility state and all visible.\n  * Shift-Click to invert visibility status of all collections\n  * Ctrl-Click to Copy/Paste RTOs\n  * Ctrl-Alt-Click to swap RTOs'''
     bl_label = "Toggle Hidden Status Of All Collections"
     bl_idname = "view3d.un_hide_all_collections"
     bl_options = {'REGISTER', 'UNDO'}
@@ -988,13 +1037,37 @@ class CMUnHideAllOperator(Operator):
         global rto_history
 
         view_layer = context.view_layer.name
+        modifiers = get_modifiers(event)
 
         if not view_layer in rto_history["hide_all"]:
             rto_history["hide_all"][view_layer] = []
 
         hide_all_history = rto_history["hide_all"][view_layer]
 
-        if event.ctrl and event.alt:
+        if modifiers == {"ctrl"}:
+            global copy_buffer
+
+            if not copy_buffer["values"]:
+                # copy
+                copy_buffer["RTO"] = "hide_viewport"
+                for laycol in layer_collections.values():
+                    copy_buffer["values"].append(laycol["ptr"].hide_viewport)
+
+            else:
+                if len(copy_buffer["values"]) != len(layer_collections):
+                    return {'CANCELLED'}
+
+                # paste
+                for x, laycol in enumerate(layer_collections.values()):
+                    laycol["ptr"].hide_viewport = copy_buffer["values"][x]
+
+                # clear copy buffer
+                copy_buffer["RTO"] = ""
+                copy_buffer["values"].clear()
+
+            return {'FINISHED'}
+
+        if modifiers == {"ctrl", "alt"}:
             global swap_buffer
 
             if not swap_buffer["A"]["values"]:
@@ -1261,7 +1334,7 @@ class CMDisableViewportOperator(Operator):
 
 
 class CMUnDisableViewportAllOperator(Operator):
-    '''  * Click to toggle between current viewport display and all enabled.\n  * Shift-Click to invert viewport display of all collections\n  * Ctrl-Alt-Click to swap RTOs'''
+    '''  * Click to toggle between current viewport display and all enabled.\n  * Shift-Click to invert viewport display of all collections\n  * Ctrl-Click to Copy/Paste RTOs\n  * Ctrl-Alt-Click to swap RTOs'''
     bl_label = "Toggle Viewport Display of All Collections"
     bl_idname = "view3d.un_disable_viewport_all_collections"
     bl_options = {'REGISTER', 'UNDO'}
@@ -1270,13 +1343,37 @@ class CMUnDisableViewportAllOperator(Operator):
         global rto_history
 
         view_layer = context.view_layer.name
+        modifiers = get_modifiers(event)
 
         if not view_layer in rto_history["disable_all"]:
             rto_history["disable_all"][view_layer] = []
 
         disable_all_history = rto_history["disable_all"][view_layer]
 
-        if event.ctrl and event.alt:
+        if modifiers == {"ctrl"}:
+            global copy_buffer
+
+            if not copy_buffer["values"]:
+                # copy
+                copy_buffer["RTO"] = "collection.hide_viewport"
+                for laycol in layer_collections.values():
+                    copy_buffer["values"].append(laycol["ptr"].collection.hide_viewport)
+
+            else:
+                if len(copy_buffer["values"]) != len(layer_collections):
+                    return {'CANCELLED'}
+
+                # paste
+                for x, laycol in enumerate(layer_collections.values()):
+                    laycol["ptr"].collection.hide_viewport = copy_buffer["values"][x]
+
+                # clear copy buffer
+                copy_buffer["RTO"] = ""
+                copy_buffer["values"].clear()
+
+            return {'FINISHED'}
+
+        if modifiers == {"ctrl", "alt"}:
             global swap_buffer
 
             if not swap_buffer["A"]["values"]:
@@ -1545,7 +1642,7 @@ class CMDisableRenderOperator(Operator):
 
 
 class CMUnDisableRenderAllOperator(Operator):
-    '''  * Click to toggle between current render status and all rendered.\n  * Shift-Click to invert render status of all collections\n  * Ctrl-Alt-Click to swap RTOs'''
+    '''  * Click to toggle between current render status and all rendered.\n  * Shift-Click to invert render status of all collections\n  * Ctrl-Click to Copy/Paste RTOs\n  * Ctrl-Alt-Click to swap RTOs'''
     bl_label = "Toggle Render Status of All Collections"
     bl_idname = "view3d.un_disable_render_all_collections"
     bl_options = {'REGISTER', 'UNDO'}
@@ -1554,13 +1651,37 @@ class CMUnDisableRenderAllOperator(Operator):
         global rto_history
 
         view_layer = context.view_layer.name
+        modifiers = get_modifiers(event)
 
         if not view_layer in rto_history["render_all"]:
             rto_history["render_all"][view_layer] = []
 
         render_all_history = rto_history["render_all"][view_layer]
 
-        if event.ctrl and event.alt:
+        if modifiers == {"ctrl"}:
+            global copy_buffer
+
+            if not copy_buffer["values"]:
+                # copy
+                copy_buffer["RTO"] = "collection.hide_render"
+                for laycol in layer_collections.values():
+                    copy_buffer["values"].append(laycol["ptr"].collection.hide_render)
+
+            else:
+                if len(copy_buffer["values"]) != len(layer_collections):
+                    return {'CANCELLED'}
+
+                # paste
+                for x, laycol in enumerate(layer_collections.values()):
+                    laycol["ptr"].collection.hide_render = copy_buffer["values"][x]
+
+                # clear copy buffer
+                copy_buffer["RTO"] = ""
+                copy_buffer["values"].clear()
+
+            return {'FINISHED'}
+
+        if modifiers == {"ctrl", "alt"}:
             global swap_buffer
 
             if not swap_buffer["A"]["values"]:
diff --git a/object_collection_manager/ui.py b/object_collection_manager/ui.py
index dcc52455b338f3ab4fd4f61ea77f361494816126..7325a3e1f9c2a9d089f1073b174c289ac69fdb03 100644
--- a/object_collection_manager/ui.py
+++ b/object_collection_manager/ui.py
@@ -38,6 +38,7 @@ from .internals import (
 
 from .operators import (
     rto_history,
+    copy_buffer,
     swap_buffer,
     expand_history,
     phantom_history,
@@ -123,6 +124,9 @@ class CollectionManager(Operator):
             depress = True if len(exclude_all_history) else False
             icon = 'CHECKBOX_HLT'
 
+            if copy_buffer["RTO"] == "exclude":
+                icon = 'COPYDOWN'
+
             if swap_buffer["A"]["RTO"] == "exclude":
                 icon = 'ARROW_LEFTRIGHT'
 
@@ -133,6 +137,9 @@ class CollectionManager(Operator):
             depress = True if len(select_all_history) else False
             icon = 'RESTRICT_SELECT_OFF'
 
+            if copy_buffer["RTO"] == "collection.hide_select":
+                icon = 'COPYDOWN'
+
             if swap_buffer["A"]["RTO"] == "collection.hide_select":
                 icon = 'ARROW_LEFTRIGHT'
 
@@ -143,6 +150,9 @@ class CollectionManager(Operator):
             depress = True if len(hide_all_history) else False
             icon = 'HIDE_OFF'
 
+            if copy_buffer["RTO"] == "hide_viewport":
+                icon = 'COPYDOWN'
+
             if swap_buffer["A"]["RTO"] == "hide_viewport":
                 icon = 'ARROW_LEFTRIGHT'
 
@@ -153,6 +163,9 @@ class CollectionManager(Operator):
             depress = True if len(disable_all_history) else False
             icon = 'RESTRICT_VIEW_OFF'
 
+            if copy_buffer["RTO"] == "collection.hide_viewport":
+                icon = 'COPYDOWN'
+
             if swap_buffer["A"]["RTO"] == "collection.hide_viewport":
                 icon = 'ARROW_LEFTRIGHT'
 
@@ -163,6 +176,9 @@ class CollectionManager(Operator):
             depress = True if len(render_all_history) else False
             icon = 'RESTRICT_RENDER_OFF'
 
+            if copy_buffer["RTO"] == "collection.hide_render":
+                icon = 'COPYDOWN'
+
             if swap_buffer["A"]["RTO"] == "collection.hide_render":
                 icon = 'ARROW_LEFTRIGHT'