diff --git a/functions/classes.py b/functions/classes.py
index 1d9c351378e34b29c236f9f598effb4672daee9c..abc3eee0b453efdae0423ee35416af19354c62e2 100644
--- a/functions/classes.py
+++ b/functions/classes.py
@@ -12,7 +12,6 @@ import copy
 # TODO
 # - Docstrings
 # - Minimalbeispiel für KPIs -> halb umgesetzt -> mit get_components veranschaulichen
-# - Erlaube Clone bei Assembly (jedes child muss durch durch Klon ersetzt werden)
 # - Änderungen an Beispiel umsetzen
 
 # - Gute String Darstellung -> Ist so schon ok bisher? -> Nä Semester
@@ -174,6 +173,15 @@ class LegoAssembly:
     def __repr__(self):
         return f"LegoAssembly {self.label} [{self.uuid}]"
 
+    def clone(self, label: str = None) -> LegoAssembly:
+        if label is None:
+            label = self.label
+        clone = LegoAssembly(label, copy.deepcopy(self.properties), self.layer)
+        for component in self.components:
+            clone.add_component(component.clone())
+        for assembly in self.assemblies:
+            clone.add_assembly(assembly.clone())
+        return clone
 
 def print_assembly_tree(root, level=0, is_last=False):
     # print component