diff --git a/src/caosadvancedtools/table_json_conversion/fill_xlsx.py b/src/caosadvancedtools/table_json_conversion/fill_xlsx.py
index 3b22f1f9156f77165b0239d55941bf984e832c50..380a9d62ea85e6abf92194e7aaf8427d0eaef724 100644
--- a/src/caosadvancedtools/table_json_conversion/fill_xlsx.py
+++ b/src/caosadvancedtools/table_json_conversion/fill_xlsx.py
@@ -31,7 +31,7 @@ def _fill_leaves(json_doc: dict, workbook):
         for el in value:
             if isinstance(el, dict):
                 _fill_leaves(el, workbook)
-            wb.cell(1, 2, el)
+            workbook.cell(1, 2, el)
 
 
 def _get_row_type_column(worksheet):
diff --git a/src/caosadvancedtools/table_json_conversion/table_generator.py b/src/caosadvancedtools/table_json_conversion/table_generator.py
index 1e7020fbc1681caaeb56cfcd9e9c325dff24055e..e4a17a57edc388b1c24899116895a2fa0e7d50e1 100644
--- a/src/caosadvancedtools/table_json_conversion/table_generator.py
+++ b/src/caosadvancedtools/table_json_conversion/table_generator.py
@@ -22,13 +22,11 @@
 """
 This module allows to generate template tables from JSON schemas.
 """
-import argparse
 import re
 import sys
 from abc import ABC, abstractmethod
-from argparse import RawTextHelpFormatter
 from enum import Enum
-from typing import Dict, List, Tuple, Union
+from typing import Dict, List, Optional, Tuple, Union
 
 from openpyxl import Workbook
 from openpyxl.workbook.child import INVALID_TITLE_REGEX
@@ -52,7 +50,7 @@ class TableTemplateGenerator(ABC):
         pass
 
     @abstractmethod
-    def generate(self, schema: dict, foreign_keys: dict):
+    def generate(self, schema: dict, foreign_keys: dict, filepath: str):
         """ generates a sheet definition from a given JSON schema
 
         Parameters:
@@ -73,8 +71,8 @@ class TableTemplateGenerator(ABC):
         """
         pass
 
-    def _generate_sheets_from_schema(self, schema: dict, foreign_keys: dict = None
-                                     ) -> Dict[str, Dict[str, list]]:
+    def _generate_sheets_from_schema(self, schema: dict, foreign_keys: Optional[dict] = None
+                                     ) -> Dict[str, Dict[str, Tuple[ColumnType, Optional[str], list]]]:
         """ generates a sheet definition from a given JSON schema
 
         Parameters
@@ -104,7 +102,7 @@ class TableTemplateGenerator(ABC):
             foreign_keys = {}
         # here, we treat the top level
         # sheets[sheetname][colname]= (COL_TYPE, description, [path])
-        sheets: Dict[str, dict[str, Tuple[str, list]]] = {}
+        sheets: Dict[str, Dict[str, Tuple[ColumnType, Optional[str], list]]] = {}
         if "properties" not in schema:
             raise ValueError("Inappropriate JSON schema: The following part should contain "
                              f"the 'properties' key:\n{schema}\n")
@@ -128,10 +126,10 @@ class TableTemplateGenerator(ABC):
         else:
             raise ValueError(msg)
 
-    def _treat_schema_element(self, schema: dict, sheets: dict = None, path: list = None,
-                              foreign_keys: dict = None, level_in_sheet_name: int = 1,
-                              array_paths: list = None
-                              ) -> Dict[str, Tuple[str, str, list]]:
+    def _treat_schema_element(self, schema: dict, sheets: dict, path: list,
+                              foreign_keys: Optional[dict] = None, level_in_sheet_name: int = 1,
+                              array_paths: Optional[list] = None
+                              ) -> Dict[str, Tuple[ColumnType, Optional[str], list]]:
         """ recursively transforms elements from the schema into column definitions
 
         sheets is modified in place.
@@ -157,6 +155,8 @@ class TableTemplateGenerator(ABC):
             # if this is not set, we are at top level and the top level element may always be an
             # array
             array_paths = [path]
+        if foreign_keys is None:
+            foreign_keys = {}
 
         ctype = ColumnType.SCALAR
 
@@ -272,7 +272,8 @@ class XLSXTemplateGenerator(TableTemplateGenerator):
 
         return ordered_cols
 
-    def _create_workbook_from_sheets_def(self, sheets: Dict[str, Dict[str, Tuple[str, list]]]):
+    def _create_workbook_from_sheets_def(
+            self, sheets: Dict[str, Dict[str, Tuple[ColumnType, Optional[str], list]]]):
         wb = Workbook()
         assert wb.sheetnames == ["Sheet"]
         for sn, sheetdef in sheets.items():
@@ -322,18 +323,3 @@ class XLSXTemplateGenerator(TableTemplateGenerator):
             wb.move_sheet(sn, index-wb.index(wb[sn]))
 
         return wb
-
-
-def parse_args():
-    parser = argparse.ArgumentParser(description=__doc__,
-                                     formatter_class=RawTextHelpFormatter)
-    parser.add_argument("path",
-                        help="the subtree of files below the given path will "
-                        "be considered. Use '/' for everything.")
-
-    return parser.parse_args()
-
-
-if __name__ == "__main__":
-    args = parse_args()
-    sys.exit(main(args))