diff --git a/ics2mm.py b/ics2mm.py
index 3232611d17aee27be0a4ca2b83d8fa92fc844531..7013d388d58e87306d26398ad64e91b9592a2a2a 100644
--- a/ics2mm.py
+++ b/ics2mm.py
@@ -44,12 +44,29 @@ parser.add_argument(
     type=str,
 )
 
+parser.add_argument(
+    '-o', '--orientation',
+    choices=['l', 'r'],
+    default = None,
+    help =
+    """l - all mindmap nodes on left side,
+    r - all mindmap nodes on left side
+    empty = no parameter: first half nodes left, second half right side""",
+    type=str,
+)
+
+parser.add_argument(
+    '-v', '--verbose',
+    action='store_true'
+)
+
 # todo: Ort, Icons, Texte aus MM in ical übersetzen
 # todo: prüfen, ob Icons in Text umgewandelt werden können
 
 
 cal = icalendar.Calendar()  # todo: prüfen ob 'global cal' anders gelöst werden kann
 
+verbose = False
 
 def get_text(node):
     return node.get("TEXT")
@@ -146,14 +163,19 @@ def gehe_durch_ics_tree(tree, parent=None):
             gehe_durch_mindmap_tree(node, parent=node)
 
 
-
+def verbose_debug_print(string):
+    global verbose
+    if verbose:
+        print(string)
 
 def main(args):
-    global cal
+    global cal, verbose
     """Run main function."""
 
     ics_filename = args.ics_file  # input
     mm_filename = args.mindmap_file  # output
+    left_right_flag= args.orientation
+    verbose = args.verbose
 
     mm_content = freeplane_tools.data.get_template()  # Vorlage öffnen und verwenden
 
@@ -192,6 +214,9 @@ def main(args):
     # aus ics lesen
     cal = icalendar.cal.Component.from_ical(ics_string)
 
+    # Zähle die Anzahl von parent-nodes (ohne parent_uid)
+    count_parent_nodes = 0
+
     ## ics in list umwandeln
     list_todos = list()
     for ics_todo in cal.walk("VTODO"):
@@ -200,6 +225,7 @@ def main(args):
         except:
             parent_uid = None
 
+
         try:
             SUMMARY = str(ics_todo["SUMMARY"])
         except:
@@ -212,29 +238,53 @@ def main(args):
 
         try:
             status = str(ics_todo["STATUS"])
-            print(f"Status gefunden! ********* {status}")
+            verbose_debug_print(f"Status gefunden! ********* {status}")
         except:
             status = None
 
         if status != "COMPLETED": # or status != None or status is not None:
-            print([UID, SUMMARY, parent_uid])
+            verbose_debug_print([UID, SUMMARY, parent_uid])
             list_todos.append([UID, SUMMARY, parent_uid])
+            if parent_uid == None:
+                count_parent_nodes += 1 # root nodes zählen
         # print(ics_todo)
         # break
 
     # print(list_todos)
-    # todo: Liste sortieren, zuerst Aufgaben ohne parent
+    # Liste sortieren, zuerst Aufgaben ohne parent
     list_todos = sort_tree(list_todos)
+    count_converted_parent_nodes = 0
+
 
     # Liste sortieren oder Stück für Stück durchgehen
     for single_todo in list_todos:
         UID = single_todo[0]
         SUMMARY = single_todo[1]
         parent_uid = single_todo[2]
-        print(f"UID: {UID} | Parent_ID: {parent_uid}")
+        verbose_debug_print(f"UID: {UID} | Parent_ID: {parent_uid}")
 
         if parent_uid == None:
-            ET.SubElement(tree.findall("node")[0], "node", {"TEXT": SUMMARY, "ID": UID})
+            count_converted_parent_nodes += 1
+            if left_right_flag == None:
+                verbose_debug_print(f"Zweiseitig, konvertiert: {count_converted_parent_nodes}, gesamt: {count_parent_nodes}")
+                if count_converted_parent_nodes < count_parent_nodes / 2:
+                    # erste Hälft links
+                    mydict = {"TEXT": SUMMARY, "ID": UID, "POSITION": "left"}
+                else:
+                    # zweite Hälfte rechts
+                    mydict = {"TEXT": SUMMARY, "ID": UID}
+            if 'l' == left_right_flag:
+                mydict = {"TEXT": SUMMARY, "ID": UID, "POSITION":"left"}
+            elif 'r' == left_right_flag:
+                mydict = {"TEXT": SUMMARY, "ID": UID}
+            else:
+                pass
+
+
+
+
+            # todo je nach switch parent-nodes links, rechts oder verteilt (halbe-halbe) erzeugen, gesamtzahl ist in count_parent_nodes
+            ET.SubElement(tree.findall("node")[0], "node", mydict)
         else:
             # node finden mit attribut ID == parent_uid
             # find_text = f".//*[@ID={parent_uid}]"
@@ -244,7 +294,7 @@ def main(args):
                 for tag in tree.findall(".//*[@ID]")
                 if parent_uid in tag.attrib["ID"]
             ]
-            print(f"  parent_node: {parent_node}, len={len(parent_node)}")
+            verbose_debug_print(f"  parent_node: {parent_node}, len={len(parent_node)}")
             if (
                 len(parent_node) < 1
             ):  # keinen passenden Knoten gefunden
@@ -256,7 +306,7 @@ def main(args):
                 ET.SubElement(parent_node[0], "node", {"TEXT": SUMMARY, "ID": UID})
 
     ## MM Zentralknoten anlegen mit Dateinamen
-    print(ics_filename.split(".")[0])
+    verbose_debug_print(ics_filename.split(".")[0])
     # ET.SubElement(tree, 'node', {'TEXT': ics_filename, 'STYLE': 'oval'}) funktioniert nicht, legt einen zweiten untersten 'node' an
     tree.findall("node")[0].set(
         "TEXT", ics_filename.split(".")[0]
@@ -288,17 +338,17 @@ def main(args):
 
     # Eintrag in MM erzeugen
     # mm_root = tree.getroot()
-    print(tree.tag)
+    verbose_debug_print(tree.tag)
     # ET.SubElement(tree,'node', {'TEXT':'Beispiel 1', 'STYLE':'oval'})
 
     # show text of all entries in mm
     for node in tree.findall("node"):
         text = node.get("TEXT")
-        print(f"{text}")
+        verbose_debug_print(f"{text}")
         # ET.SubElement(node,"node", {'TEXT':'Beispiel 2'})
         for innernode in node.findall("node"):
             text = innernode.get("TEXT")
-            print(f"  {text}")
+            verbose_debug_print(f"  {text}")
 
     # gehe_durch_mindmap_tree(tree, None)