diff --git a/lib/models/Courseware/Block.php b/lib/models/Courseware/Block.php
index d311e0fc4911429bc8ff310f2b96451f929ef784..f5d8b202acbc9dd0c2abd6bc3ccbd5b5dc39cbf3 100644
--- a/lib/models/Courseware/Block.php
+++ b/lib/models/Courseware/Block.php
@@ -178,7 +178,7 @@ class Block extends \SimpleORMap implements \PrivacyObject
             ]
         ];
 
-        return json_encode($block, true);
+        return json_encode($block);
     }
 
     /**
@@ -218,18 +218,18 @@ class Block extends \SimpleORMap implements \PrivacyObject
         $struct = $container->structural_element;
         $rangeId = $struct->getRangeId();
 
-        $block = self::create([
+        $block = self::build([
             'container_id' => $container->id,
             'owner_id' => $user->id,
             'editor_id' => $user->id,
             'edit_blocker_id' => null,
             'position' => $container->countBlocks(),
             'block_type' => $data->attributes->{'block-type'},
+            'payload' => json_encode($data->attributes->payload),
             'visible' => 1,
         ]);
 
-        $dataPayload = (array)$data->attributes->payload;
-        $block->payload = json_encode($block->type->copyPayload('', $dataPayload), true);
+        $block->payload = json_encode($block->type->copyPayload($rangeId));
         $block->store();
 
         //update Container payload
diff --git a/lib/models/Courseware/BlockTypes/Audio.php b/lib/models/Courseware/BlockTypes/Audio.php
index 7196f209a7449b6a17a0f56f79094344ad9e96b2..dd2588a1e5ea301f8a5697591528790a2ba24435 100644
--- a/lib/models/Courseware/BlockTypes/Audio.php
+++ b/lib/models/Courseware/BlockTypes/Audio.php
@@ -74,13 +74,11 @@ class Audio extends BlockType
         }
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['file_id'])) {
+        if ('' != $payload['file_id']) {
             $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/BeforeAfter.php b/lib/models/Courseware/BlockTypes/BeforeAfter.php
index 5ad772cac72be9b2548950fcfffc5495222a317e..b4f33ca9c0854dbefc6eea994887f764547330c3 100644
--- a/lib/models/Courseware/BlockTypes/BeforeAfter.php
+++ b/lib/models/Courseware/BlockTypes/BeforeAfter.php
@@ -75,13 +75,11 @@ class BeforeAfter extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['before_file_id'])) {
+        if ('' != $payload['before_file_id']) {
             $payload['before_file_id'] = $this->copyFileById($payload['before_file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/BlockType.php b/lib/models/Courseware/BlockTypes/BlockType.php
index e5526f5866af34f476fbedb6cd0762dcea96ff77..50bcc4254f18ff75ab282f23bc1bb2810c78a523 100644
--- a/lib/models/Courseware/BlockTypes/BlockType.php
+++ b/lib/models/Courseware/BlockTypes/BlockType.php
@@ -233,9 +233,9 @@ abstract class BlockType
     }
 
     // TODO: (tgloeggl) DocBlock ergänzen
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        return $payload ?: $this->getPayload();
+        return $this->getPayload();
     }
 
     /**
@@ -340,10 +340,6 @@ abstract class BlockType
             return $file_map[$fileId];
         }
 
-        if ($rangeId === '') {
-            $rangeId = $this->block->container->structural_element->range_id;
-        }
-
         $user = \User::findCurrent();
         if ($file_ref = \FileRef::find($fileId)) {
             $copiedFile = \FileManager::copyFile(
@@ -380,10 +376,6 @@ abstract class BlockType
             return $folder_map[$folderId];
         }
 
-        if ($rangeId === '') {
-            $rangeId = $this->block->container->structural_element->range_id;
-        }
-
         $user = \User::findCurrent();
         $destinationFolder = $this->getDestinationFolder($user, $rangeId);
         if ($sourceFolder = \Folder::find($folderId)) {
diff --git a/lib/models/Courseware/BlockTypes/Canvas.php b/lib/models/Courseware/BlockTypes/Canvas.php
index 34dc431b5b0f9e123f60f1571ea9f3b6e0f820ad..e7b14e99665bd9ed3745aae213e7d8b41d2ff82e 100644
--- a/lib/models/Courseware/BlockTypes/Canvas.php
+++ b/lib/models/Courseware/BlockTypes/Canvas.php
@@ -65,13 +65,11 @@ class Canvas extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['file_id'])) {
+        if ('' != $payload['file_id']) {
             $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/DialogCards.php b/lib/models/Courseware/BlockTypes/DialogCards.php
index 62eea5fb3f99857b1d49fdf603b5d50abcd366f9..74b843cbe268886314886aa4ccae4e1514b6ad8f 100644
--- a/lib/models/Courseware/BlockTypes/DialogCards.php
+++ b/lib/models/Courseware/BlockTypes/DialogCards.php
@@ -80,12 +80,9 @@ class DialogCards extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
-
+        $payload = $this->getPayload();
         foreach ($payload['cards'] as &$card) {
             if ('' != $card['front_file_id']) {
                 $card['front_file_id'] = $this->copyFileById($card['front_file_id'], $rangeId);
diff --git a/lib/models/Courseware/BlockTypes/Document.php b/lib/models/Courseware/BlockTypes/Document.php
index 20950089c5bca208e4a8c7a361e17dde305e27da..db1ba6ee179fb0dfcc6ccc4d6808a2a155cb8eef 100644
--- a/lib/models/Courseware/BlockTypes/Document.php
+++ b/lib/models/Courseware/BlockTypes/Document.php
@@ -67,13 +67,11 @@ class Document extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['file_id'])) {
+        if ('' != $payload['file_id']) {
             $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/Download.php b/lib/models/Courseware/BlockTypes/Download.php
index f53c8c7f288331552eeb52de204701c16fa17bfc..d736009d1815230ec4a52367b32a8ff756039adb 100644
--- a/lib/models/Courseware/BlockTypes/Download.php
+++ b/lib/models/Courseware/BlockTypes/Download.php
@@ -61,13 +61,11 @@ class Download extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['file_id'])) {
+        if ('' != $payload['file_id']) {
             $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/Folder.php b/lib/models/Courseware/BlockTypes/Folder.php
index d5156b6298d04d63883d9acd3833320213477b07..bc34f854f24fc547829deeed13a9e04058dca5c8 100644
--- a/lib/models/Courseware/BlockTypes/Folder.php
+++ b/lib/models/Courseware/BlockTypes/Folder.php
@@ -104,13 +104,11 @@ class Folder extends BlockType
         return \FileRef::findByFolder_id($payload['folder_id']);
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['folder_id'])) {
+        if ('' != $payload['folder_id']) {
             $payload['folder_id'] = $this->copyFolderById($payload['folder_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/Gallery.php b/lib/models/Courseware/BlockTypes/Gallery.php
index 1d931ea99519104d24a1a958f773bf6c44855533..5f9bb0b6d56d3c8c8d5acc5f503f09306cef3f8d 100644
--- a/lib/models/Courseware/BlockTypes/Gallery.php
+++ b/lib/models/Courseware/BlockTypes/Gallery.php
@@ -123,13 +123,10 @@ class Gallery extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
-
-        if (!empty($payload['folder_id'])) {
+        $payload = $this->getPayload();
+        if ('' != $payload['folder_id']) {
             $payload['folder_id'] = $this->copyFolderById($payload['folder_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/Headline.php b/lib/models/Courseware/BlockTypes/Headline.php
index eace9465685f2a23c57fd76dcc745d23c4aea9f2..0c821386b82dee191489486bb10b5e2213596bc6 100644
--- a/lib/models/Courseware/BlockTypes/Headline.php
+++ b/lib/models/Courseware/BlockTypes/Headline.php
@@ -73,13 +73,11 @@ class Headline extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['background_image_id'])) {
+        if ('' != $payload['background_image_id']) {
             $payload['background_image_id'] = $this->copyFileById($payload['background_image_id'], $rangeId);
             $payload['background_image'] = '';
         }
diff --git a/lib/models/Courseware/BlockTypes/ImageMap.php b/lib/models/Courseware/BlockTypes/ImageMap.php
index 3f8f37b2b61c346c2b3ba078c8624483d132e47c..e275c46254ef90dd66b8e008977e41b1de9f8aa1 100644
--- a/lib/models/Courseware/BlockTypes/ImageMap.php
+++ b/lib/models/Courseware/BlockTypes/ImageMap.php
@@ -55,13 +55,11 @@ class ImageMap extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['file_id'])) {
+        if ('' != $payload['file_id']) {
             $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/BlockTypes/Text.php b/lib/models/Courseware/BlockTypes/Text.php
index e918c6a44e5ae1e68707adbfd732559a2c2f794e..0a8921932353c36ada25a896e5358cf791594a5c 100644
--- a/lib/models/Courseware/BlockTypes/Text.php
+++ b/lib/models/Courseware/BlockTypes/Text.php
@@ -88,11 +88,9 @@ class Text extends BlockType
         return $files;
     }
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
         $document = new \DOMDocument();
 
         if ($payload['text']) {
diff --git a/lib/models/Courseware/BlockTypes/Video.php b/lib/models/Courseware/BlockTypes/Video.php
index a32ca668f43dcbe7d4a8115e40bd407bad7099a7..431f69b68e6db77e87980ee7716cfcd03bd67345 100644
--- a/lib/models/Courseware/BlockTypes/Video.php
+++ b/lib/models/Courseware/BlockTypes/Video.php
@@ -68,13 +68,11 @@ class Video extends BlockType
     }
 
 
-    public function copyPayload(string $rangeId = '', $payload = null): array
+    public function copyPayload(string $rangeId = ''): array
     {
-        if (!$payload) {
-            $payload = $this->getPayload();
-        }
+        $payload = $this->getPayload();
 
-        if (!empty($payload['file_id'])) {
+        if ('' != $payload['file_id']) {
             $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId);
         }
 
diff --git a/lib/models/Courseware/Container.php b/lib/models/Courseware/Container.php
index 5ce8f29a7d96244930edebf7b4377f58d7ab12a7..ac5ef60bbccd2c16f6c01997489e317c494ede08 100644
--- a/lib/models/Courseware/Container.php
+++ b/lib/models/Courseware/Container.php
@@ -115,13 +115,13 @@ class Container extends \SimpleORMap implements \PrivacyObject
             ],
             'blocks' => $this->getClipboardBackupBlocks()
         ];
-        return json_encode($container, true);
+        return json_encode($container);
     }
 
     public function getClipboardBackupBlocks(): array
     {
         return $this->blocks->map(function (Block $block) {
-            return json_decode($block->getClipboardBackup());
+            return json_decode($block->getClipboardBackup(), true);
         });
     }
 
@@ -195,11 +195,11 @@ class Container extends \SimpleORMap implements \PrivacyObject
             'edit_blocker_id' => null,
             'position' => $element->countContainers(),
             'container_type' => $data->attributes->{'container-type'},
-            'payload' => json_encode($data->attributes->payload),
+            'payload' => $data->attributes->payload,
         ]);
 
         $blockMap = self::createBlocksFromData($user, $container, $data);
-        $container['payload'] = $container->type->copyPayload($blockMap);
+        $container->payload = $container->type->copyPayload($blockMap);
         $container->store();
 
         return $container;
diff --git a/lib/models/Courseware/ContainerTypes/ContainerType.php b/lib/models/Courseware/ContainerTypes/ContainerType.php
index 6cbcdf964a138a9c58f1dcfc9595fb02cdee5bcd..e358c9c95c1e03e8908f1ba8f5f9b22a1255948a 100644
--- a/lib/models/Courseware/ContainerTypes/ContainerType.php
+++ b/lib/models/Courseware/ContainerTypes/ContainerType.php
@@ -197,7 +197,7 @@ abstract class ContainerType
 
         foreach ($payload['sections'] as &$section) {
             foreach ($section['blocks'] as &$block) {
-                $block = strval($block_map[$block]) ?? null;
+                $block = $block_map[$block] ?? null;
             }
             $section['blocks'] = array_filter($section['blocks']);
         }
diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php
index d3c77fafe1e8709c1a5ef6ebfa19a8c610491c41..42b876042a613a90a71e8b8868efb4e85e316834 100644
--- a/lib/models/Courseware/StructuralElement.php
+++ b/lib/models/Courseware/StructuralElement.php
@@ -821,12 +821,6 @@ SQL;
         return null;
     }
 
-    public static function getClipboardBackup(): string
-    {
-        //TODO
-        return '';
-    }
-
     /**
      * Copies this instance into another course oder users contents.
      *