diff --git a/soitool/serialize_export_import_soi.py b/soitool/serialize_export_import_soi.py
index 3900c67ec274156ef40b34aea9124f3ad1b7ad0e..18ba00bcb79ab56917733edf7b7e078cc63aa265 100644
--- a/soitool/serialize_export_import_soi.py
+++ b/soitool/serialize_export_import_soi.py
@@ -235,9 +235,53 @@ def construct_soi_from_serialized(serialized, compressed=False):
     if not SERIALIZED_SOI_SCHEMA.is_valid(serialized):
         raise ValueError("Serialized SOI does not have correct format.")
 
-    # Create dict for modules with instantiated widget(s)
+    # Construct modules and attachments
+    modules = construct_modules_from_serialized(serialized["modules"])
+    attachments = construct_modules_from_serialized(serialized["attachments"])
+
+    # Create SOI
+    soi = SOI(
+        serialized["title"],
+        serialized["description"],
+        serialized["version"],
+        serialized["date"],
+        serialized["valid"]["from_date"],
+        serialized["valid"]["to_date"],
+        serialized["icon"],
+        serialized["classification"],
+        serialized["orientation"],
+        serialized["placement_strategy"],
+        serialized["algorithm_bin"],
+        serialized["algorithm_pack"],
+        serialized["algorithm_sort"],
+        modules,
+        attachments,
+    )
+
+    return soi
+
+
+def construct_modules_from_serialized(serialized_modules):
+    """Instantiate modules from serialized format.
+
+    Parameters
+    ----------
+    serialized_modules : list
+        Containing dicts with serialized modules or attachment-modules.
+
+    Returns
+    -------
+    list
+        Containing dicts with instantiated modules or attachment-modules.
+
+    Raises
+    ------
+    TypeError
+        If type of module is not recognized.
+    """
     modules = []
-    for module in serialized["modules"]:
+
+    for module in serialized_modules:
         module_type = module["type"]
 
         if module_type == "TableModule":
@@ -275,44 +319,7 @@ def construct_soi_from_serialized(serialized, compressed=False):
                 "Module-type '{}' is not recognized.".format(module_type)
             )
 
-    # Create dict for attachments with instantiated widget(s)
-    attachments = []
-    for attachment in serialized["attachments"]:
-        module_type = attachment["type"]
-
-        if module_type == "TableModule":
-            size = attachment["size"]
-            data = attachment["data"]
-            attachments.append(
-                {
-                    "widget": TableModule(size, data),
-                    "meta": attachment["meta"],
-                }
-            )
-        else:
-            raise TypeError(
-                "Module-type '{}' is not recognized.".format(module_type)
-            )
-    # Create SOI
-    soi = SOI(
-        serialized["title"],
-        serialized["description"],
-        serialized["version"],
-        serialized["date"],
-        serialized["valid"]["from_date"],
-        serialized["valid"]["to_date"],
-        serialized["icon"],
-        serialized["classification"],
-        serialized["orientation"],
-        serialized["placement_strategy"],
-        serialized["algorithm_bin"],
-        serialized["algorithm_pack"],
-        serialized["algorithm_sort"],
-        modules,
-        attachments,
-    )
-
-    return soi
+    return modules
 
 
 def generate_soi_filename(soi):