Repository: jaimervq/all_nodes (language: python)

Issue:
Improve quality of node icons
Use SVG reader if icon is SVG


Discussion / hints:

Fix patch:
diff --git a/analytics/analytics.py b/analytics/analytics.py
index 443a473..fad0ac8 100644
--- a/analytics/analytics.py
+++ b/analytics/analytics.py
@@ -8,7 +8,7 @@
 import re
 
 import matplotlib.pyplot as plt
-import pandas as pd
+import polars as pl
 from pymongo import MongoClient
 
 from all_nodes import constants
@@ -113,7 +113,7 @@ def process_analytics():
     )
 
     if res:
-        df = pd.DataFrame(list(res))
+        df = pl.DataFrame(list(res))
 
         dates = df["_id"].tolist()
         uses = df["count"].tolist()
@@ -151,7 +151,7 @@ def process_analytics():
     )
 
     if res:
-        df = pd.DataFrame(list(res))
+        df = pl.DataFrame(list(res))
 
         node_names = df["_id"].tolist()
         uses = df["count"].tolist()
@@ -191,7 +191,7 @@ def process_analytics():
     )
 
     if res:
-        df = pd.DataFrame(list(res))
+        df = pl.DataFrame(list(res))
 
         node_names = df["_id"].tolist()
         avg_time = df["average_time"].tolist()
@@ -222,7 +222,7 @@ def process_analytics():
     )
 
     if res:
-        df = pd.DataFrame(list(res))
+        df = pl.DataFrame(list(res))
 
         df_grouped = (
             df.groupby(["class_name", "run_date"])
@@ -272,7 +272,7 @@ def process_analytics():
     )
 
     if res:
-        df = pd.DataFrame(list(res))
+        df = pl.DataFrame(list(res))
 
         df_grouped = (
             df.groupby(["class_name", "run_date"])
diff --git a/constants.py b/constants.py
index 1fa1658..f98aa47 100644
--- a/constants.py
+++ b/constants.py
@@ -91,6 +91,7 @@ class InputsGUI(Enum):
 class PreviewsGUI(Enum):
     STR_PREVIEW = auto()
     MULTILINE_STR_PREVIEW = auto()
+    DICT_PREVIEW = auto()
     IMAGE_PREVIEW = auto()
 
 
diff --git a/docs/scenes_example.png b/docs/scenes_example.png
index 8f3362c..947e93f 100644
Binary files a/docs/scenes_example.png and b/docs/scenes_example.png differ
diff --git a/graphic/icons/badges.svg b/graphic/general_icons/badges.svg
similarity index 100%
rename from graphic/icons/badges.svg
rename to graphic/general_icons/badges.svg
diff --git a/graphic/icons/brain.png b/graphic/general_icons/brain.png
similarity index 100%
rename from graphic/icons/brain.png
rename to graphic/general_icons/brain.png
diff --git a/graphic/icons/clear.png b/graphic/general_icons/clear.png
similarity index 100%
rename from graphic/icons/clear.png
rename to graphic/general_icons/clear.png
diff --git a/graphic/general_icons/clipboard.svg b/graphic/general_icons/clipboard.svg
new file mode 100644
index 0000000..fb78d0e
--- /dev/null
+++ b/graphic/general_icons/clipboard.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#E2574C;}
+	.st1{fill:#D05046;}
+	.st2{fill:#F0DDAB;}
+	.st3{fill:#CCD0D2;}
+	.st4{fill:#D8C69A;}
+	.st5{fill:#BCC0C2;}
+	.st6{fill:#AEB1B3;}
+</style>
+<g id="the-modern-web_x2F_clipboard">
+	<g id="clipboard" transform="translate(19.000000, 17.000000)">
+		<path id="Shape" class="st0" d="M131.3,48.1h499.4c22.9,0,41.6,21.7,41.6,48.1v625.6c0,26.5-18.7,48.1-41.6,48.1H131.3
+			c-22.9,0-41.6-21.7-41.6-48.1V96.3C89.7,69.8,108.4,48.1,131.3,48.1z"/>
+		<path id="Shape_00000100374049765814190320000013610432733563696042_" class="st1" d="M630.7,48.1H131.3
+			c-22.9,0-41.6,21.7-41.6,48.1v30.1c0-26.5,18.7-48.1,41.6-48.1h499.4c22.9,0,41.6,21.7,41.6,48.1V96.2
+			C672.3,69.8,653.6,48.1,630.7,48.1z"/>
+		<path id="Shape_00000173139787812807581750000001237856831360192688_" class="st2" d="M183.3,132.3h395.4
+			c11.4,0,20.8,10.8,20.8,24.1v505.3c0,13.2-9.4,24.1-20.8,24.1H183.3c-11.4,0-20.8-10.8-20.8-24.1V156.4
+			C162.5,143.2,171.9,132.3,183.3,132.3z"/>
+		<path id="Shape_00000003079278062857608540000010422237834082615701_" class="st3" d="M224.9,96.2h312.1c5.7,0,10.4,5.4,10.4,12
+			v48.1c0,19.9-14,36.1-31.2,36.1H245.7c-17.2,0-31.2-16.2-31.2-36.1v-48.1C214.5,101.7,219.2,96.2,224.9,96.2z"/>
+		<path id="Shape_00000095317364354390638000000004386828630854998670_" class="st4" d="M292.6,306.8h228.9c5.7,0,10.4-5.4,10.4-12
+			s-4.7-12-10.4-12H292.6c-5.7,0-10.4,5.4-10.4,12S286.8,306.8,292.6,306.8z M521.5,342.9H292.6c-5.7,0-10.4,5.4-10.4,12
+			c0,6.6,4.7,12,10.4,12h228.9c5.7,0,10.4-5.4,10.4-12C531.9,348.3,527.2,342.9,521.5,342.9z M521.5,403H292.6
+			c-5.7,0-10.4,5.4-10.4,12c0,6.6,4.7,12,10.4,12h228.9c5.7,0,10.4-5.4,10.4-12C531.9,408.5,527.2,403,521.5,403z M250.9,282.7
+			h-10.4c-5.7,0-10.4,5.4-10.4,12s4.7,12,10.4,12h10.4c5.7,0,10.4-5.4,10.4-12C261.4,288.1,256.7,282.7,250.9,282.7z M250.9,342.9
+			h-10.4c-5.7,0-10.4,5.4-10.4,12c0,6.6,4.7,12,10.4,12h10.4c5.7,0,10.4-5.4,10.4-12C261.4,348.3,256.7,342.9,250.9,342.9z
+			 M250.9,403h-10.4c-5.7,0-10.4,5.4-10.4,12c0,6.6,4.7,12,10.4,12h10.4c5.7,0,10.4-5.4,10.4-12C261.4,408.5,256.7,403,250.9,403z
+			 M521.5,463.2H292.6c-5.7,0-10.4,5.4-10.4,12c0,6.6,4.7,12,10.4,12h228.9c5.7,0,10.4-5.4,10.4-12
+			C531.9,468.6,527.2,463.2,521.5,463.2z M521.5,523.4H292.6c-5.7,0-10.4,5.4-10.4,12s4.7,12,10.4,12h228.9c5.7,0,10.4-5.4,10.4-12
+			S527.2,523.4,521.5,523.4z M250.9,463.2h-10.4c-5.7,0-10.4,5.4-10.4,12c0,6.6,4.7,12,10.4,12h10.4c5.7,0,10.4-5.4,10.4-12
+			C261.4,468.6,256.7,463.2,250.9,463.2z M250.9,523.4h-10.4c-5.7,0-10.4,5.4-10.4,12s4.7,12,10.4,12h10.4c5.7,0,10.4-5.4,10.4-12
+			S256.7,523.4,250.9,523.4z"/>
+		<path id="Shape_00000064356424790771868860000012085419488870471060_" class="st3" d="M313.4,0h135.3c17.2,0,31.2,16.2,31.2,36.1
+			v60.2H282.2V36.1C282.2,16.2,296.2,0,313.4,0z"/>
+		<path id="Shape_00000031919627242128248400000004323278924212636046_" class="st5" d="M214.5,108.3v24.1h332.9v-24.1
+			c0-6.6-4.7-12-10.4-12H224.9C219.2,96.2,214.5,101.7,214.5,108.3z"/>
+		<polygon id="Shape_00000132787143427252814900000009931564109147309217_" class="st6" points="282.2,72.2 479.8,72.2 479.8,96.3 
+			282.2,96.3 		"/>
+	</g>
+</g>
+</svg>
diff --git a/graphic/icons/close.svg b/graphic/general_icons/close.svg
similarity index 100%
rename from graphic/icons/close.svg
rename to graphic/general_icons/close.svg
diff --git a/graphic/icons/ctx.svg b/graphic/general_icons/ctx.svg
similarity index 100%
rename from graphic/icons/ctx.svg
rename to graphic/general_icons/ctx.svg
diff --git a/graphic/general_icons/cube.svg b/graphic/general_icons/cube.svg
new file mode 100644
index 0000000..d378c73
--- /dev/null
+++ b/graphic/general_icons/cube.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="_x32_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#DCFDFF;}
+</style>
+<g>
+	<path class="st0" d="M751.1,400c0-15.8-10.5-29-24.8-33.4V250.9c14.3-4.4,24.8-17.6,24.8-33.4c0-19.4-15.7-35-35-35
+		c-9.2,0-17.6,3.6-23.8,9.5l-100.1-57.8c0.6-2.5,1-5.2,1-7.9c0-19.4-15.7-35-35.1-35c-9.2,0-17.6,3.6-23.8,9.5L434.1,43
+		c0.6-2.6,1-5.2,1-7.9c0-19.4-15.7-35-35.1-35c-19.4,0-35,15.7-35,35c0,2.7,0.4,5.3,0.9,7.9l-100.1,57.8c-6.3-5.9-14.6-9.5-23.8-9.5
+		c-19.4,0-35.1,15.7-35.1,35c0,2.7,0.4,5.3,1,7.9L107.8,192c-6.3-5.9-14.6-9.5-23.9-9.5c-19.4,0-35,15.7-35,35
+		c0,15.8,10.5,29,24.8,33.4v115.8c-14.3,4.4-24.8,17.6-24.8,33.4c0,15.8,10.5,28.9,24.8,33.4v115.7c-14.3,4.4-24.8,17.6-24.8,33.4
+		c0,19.4,15.7,35,35,35c9.2,0,17.6-3.6,23.9-9.5l100.1,57.8c-0.6,2.6-1,5.2-1,7.9c0,19.3,15.7,35,35,35c9.2,0,17.6-3.6,23.9-9.5
+		L365.9,757c-0.6,2.6-1,5.2-1,7.9c0,19.3,15.7,35,35,35c19.4,0,35.1-15.7,35.1-35c0-2.8-0.4-5.3-1-7.9l100.1-57.8
+		c6.3,5.8,14.6,9.5,23.9,9.5c19.4,0,35.1-15.7,35.1-35c0-2.8-0.4-5.3-1-7.9L692.2,608c6.3,5.9,14.6,9.5,23.9,9.5
+		c19.4,0,35-15.7,35-35c0-15.8-10.5-29-24.8-33.4V433.4C740.6,429,751.1,415.8,751.1,400z M276.1,118.4l100.1-57.8
+		c6.3,5.9,14.6,9.5,23.8,9.5s17.6-3.6,23.8-9.5l100.1,57.8c-0.6,2.5-1,5.1-1,7.9c0,2.7,0.4,5.3,1,7.9L423.8,192
+		c-6.3-5.9-14.6-9.5-23.8-9.5c-9.2,0-17.6,3.6-23.9,9.5l-100.1-57.8c0.6-2.5,1-5.2,1-7.9C277,123.6,276.7,120.9,276.1,118.4z
+		 M231.8,640.3c-5.1,1.6-9.8,4.2-13.6,7.8L118,590.4c0.6-2.5,1-5.2,1-7.9c0-15.8-10.5-29-24.8-33.4V433.4c5.1-1.6,9.8-4.2,13.6-7.8
+		l100.1,57.8c-0.6,2.5-1,5.1-1,7.9c0,15.8,10.5,29,24.8,33.4L231.8,640.3L231.8,640.3z M231.8,457.9c-5.1,1.6-9.8,4.2-13.6,7.8
+		L118,407.9c0.6-2.5,1-5.2,1-7.9c0-15.8-10.5-29-24.8-33.4V250.9c5.1-1.6,9.8-4.2,13.6-7.8l100.1,57.8c-0.6,2.5-1,5.2-1,7.9
+		c0,15.8,10.5,28.9,24.8,33.4L231.8,457.9L231.8,457.9z M218.1,283.2L118,225.4c0.6-2.5,1-5.1,1-7.9c0-2.7-0.4-5.3-1-7.9l100.1-57.8
+		c6.3,5.9,14.6,9.5,23.9,9.5c9.2,0,17.6-3.6,23.8-9.5l100.1,57.8c-0.6,2.5-1,5.2-1,7.9c0,2.7,0.4,5.3,1,7.9l-100.1,57.8
+		c-6.3-5.9-14.6-9.5-23.8-9.5C232.7,273.7,224.4,277.4,218.1,283.2z M389.8,731.6c-5.1,1.5-9.8,4.2-13.6,7.8l-100.1-57.8
+		c0.6-2.5,1-5.2,1-7.8c0-15.8-10.5-29-24.8-33.4V524.6c5.1-1.6,9.8-4.2,13.6-7.8l100.1,57.8c-0.6,2.5-1,5.1-1,7.9
+		c0,15.8,10.5,29,24.8,33.4L389.8,731.6L389.8,731.6z M389.8,549.1c-5.1,1.6-9.8,4.2-13.6,7.8l-100.1-57.8c0.6-2.5,1-5.2,1-7.9
+		c0-15.8-10.5-29-24.8-33.4V342.1c5.1-1.6,9.8-4.2,13.6-7.8l100.1,57.8c-0.6,2.5-1,5.1-1,7.9c0,15.8,10.5,29,24.8,33.4L389.8,549.1
+		L389.8,549.1z M400,365c-9.2,0-17.6,3.6-23.8,9.5l-100.1-57.8c0.6-2.5,1-5.1,1-7.9c0-2.7-0.4-5.3-1-7.9l100.1-57.8
+		c6.3,5.9,14.6,9.5,23.9,9.5c9.2,0,17.6-3.6,23.8-9.5l100.1,57.8c-0.6,2.5-1,5.2-1,7.9c0,2.7,0.4,5.3,1,7.9l-100.1,57.8
+		C417.6,368.6,409.2,365,400,365C400,365,400,365,400,365z M547.8,640.3c-14.3,4.4-24.8,17.6-24.8,33.4c0,2.7,0.4,5.3,1,7.8
+		l-100.1,57.8c-3.8-3.6-8.5-6.2-13.6-7.8V615.9c14.3-4.4,24.8-17.6,24.8-33.4c0-2.7-0.4-5.4-1-7.9l100.1-57.8
+		c3.8,3.6,8.5,6.2,13.6,7.8L547.8,640.3L547.8,640.3z M547.8,457.9c-14.3,4.4-24.8,17.6-24.8,33.4c0,2.7,0.4,5.3,1,7.9l-100.1,57.8
+		c-3.8-3.6-8.5-6.2-13.6-7.8V433.4c14.3-4.4,24.8-17.6,24.8-33.4c0-2.7-0.4-5.3-1-7.9l100.1-57.8c3.8,3.6,8.5,6.2,13.6,7.8
+		L547.8,457.9L547.8,457.9z M534.2,283.2l-100.1-57.8c0.6-2.5,1-5.1,1-7.9c0-2.7-0.4-5.3-1-7.9l100.1-57.8
+		c6.2,5.9,14.6,9.5,23.8,9.5c9.2,0,17.6-3.6,23.9-9.5L682,209.6c-0.6,2.5-1,5.2-1,7.9c0,2.7,0.4,5.3,1,7.9l-100.1,57.8
+		c-6.3-5.9-14.6-9.5-23.9-9.5C548.8,273.7,540.4,277.4,534.2,283.2z M705.8,549.1c-14.4,4.4-24.9,17.6-24.9,33.4
+		c0,2.7,0.4,5.3,1,7.9l-100.1,57.8c-3.8-3.6-8.5-6.2-13.6-7.8V524.6c14.4-4.4,24.8-17.6,24.8-33.4c0-2.7-0.4-5.3-1-7.9l100.1-57.8
+		c3.8,3.6,8.5,6.2,13.6,7.8L705.8,549.1L705.8,549.1z M705.8,366.6c-14.4,4.4-24.9,17.6-24.9,33.4c0,2.7,0.4,5.3,1,7.9l-100.1,57.8
+		c-3.8-3.6-8.5-6.2-13.6-7.8V342.1c14.4-4.4,24.8-17.6,24.8-33.4c0-2.7-0.4-5.3-1-7.9l100.1-57.8c3.8,3.6,8.5,6.2,13.6,7.8V366.6z"
+		/>
+</g>
+</svg>
diff --git a/graphic/general_icons/cubes.svg b/graphic/general_icons/cubes.svg
new file mode 100644
index 0000000..ee3617a
--- /dev/null
+++ b/graphic/general_icons/cubes.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+	 viewBox="0 0 512 512" xml:space="preserve">
+<polygon style="fill:#20AAB0;" points="130.45,365.714 210.989,438.857 256,438.857 278.506,365.714 256,292.571 210.989,292.571 
+	"/>
+<polygon style="fill:#41BBBE;" points="4.899,292.571 4.899,438.857 49.91,438.857 130.45,365.714 49.91,292.571 "/>
+<polygon style="fill:#20AAB0;" points="130.45,365.714 4.899,438.857 130.45,512 152.955,438.857 "/>
+<polygon style="fill:#A0DDDF;" points="256,292.571 175.461,219.429 130.45,219.429 4.899,292.571 130.45,365.714 "/>
+<polygon style="fill:#14858A;" points="130.45,365.714 130.45,512 256,438.857 "/>
+<polygon style="fill:#A0DDDF;" points="130.45,73.143 130.45,219.429 175.461,219.429 256,146.286 175.461,73.143 "/>
+<g>
+	<polygon style="fill:#71CCCE;" points="130.45,219.429 256,292.571 278.506,219.429 256,146.286 	"/>
+	<polygon style="fill:#71CCCE;" points="301.011,292.571 256,292.571 256,438.857 301.011,438.857 381.55,365.714 	"/>
+</g>
+<polygon style="fill:#41BBBE;" points="507.101,292.571 507.101,438.857 462.09,438.857 381.55,365.714 462.09,292.571 "/>
+<polygon style="fill:#20AAB0;" points="381.55,365.714 507.101,438.857 381.55,512 359.045,438.857 "/>
+<polygon style="fill:#A0DDDF;" points="256,292.571 336.539,219.429 381.55,219.429 507.101,292.571 381.55,365.714 "/>
+<polygon style="fill:#41BBBE;" points="381.55,365.714 381.55,512 256,438.857 "/>
+<polygon style="fill:#71CCCE;" points="381.55,219.429 381.55,73.143 336.539,73.143 256,146.286 336.539,219.429 "/>
+<polygon style="fill:#D0EEEF;" points="381.55,73.143 256,0 130.45,73.143 256,146.286 "/>
+<polygon style="fill:#41BBBE;" points="256,146.286 256,292.571 381.55,219.429 "/>
+</svg>
\ No newline at end of file
diff --git a/graphic/general_icons/date.svg b/graphic/general_icons/date.svg
new file mode 100644
index 0000000..d5b365d
--- /dev/null
+++ b/graphic/general_icons/date.svg
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+	 viewBox="0 0 512 512" xml:space="preserve">
+<rect x="10.199" y="77.004" style="fill:#EDEDED;" width="491.602" height="398.789"/>
+<rect x="61.195" y="129.836" style="fill:#FFBC52;" width="389.61" height="294.145"/>
+<rect x="139.729" y="201.434" style="fill:#D1392A;" width="77.514" height="75.474"/>
+<path d="M501.801,66.805h-19.888V36.207c0-5.633-4.566-10.199-10.199-10.199s-10.199,4.566-10.199,10.199v30.598h-87.458V36.207
+	c0-5.633-4.566-10.199-10.199-10.199c-5.633,0-10.199,4.566-10.199,10.199v30.598h-87.458V36.207
+	c0-5.633-4.566-10.199-10.199-10.199s-10.199,4.566-10.199,10.199v30.598h-87.458V36.207c0-5.633-4.566-10.199-10.199-10.199
+	s-10.199,4.566-10.199,10.199v30.598H10.199C4.566,66.805,0,71.371,0,77.004v398.789c0,5.633,4.566,10.199,10.199,10.199h491.602
+	c5.633,0,10.199-4.566,10.199-10.199V77.004C512,71.371,507.434,66.805,501.801,66.805z M491.602,465.594H20.398V87.203h471.203
+	V465.594z"/>
+<path d="M40.287,54.566c5.633,0,10.199-4.566,10.199-10.199v-8.159c0-5.633-4.566-10.199-10.199-10.199s-10.199,4.566-10.199,10.199
+	v8.159C30.088,50,34.654,54.566,40.287,54.566z"/>
+<path d="M461.004,129.838c0-5.633-4.566-10.199-10.199-10.199H61.195c-5.633,0-10.199,4.566-10.199,10.199v294.141
+	c0,5.633,4.566,10.199,10.199,10.199h389.61c5.633,0,10.199-4.566,10.199-10.199V129.838z M71.394,287.263h57.497v54.679H71.394
+	V287.263z M149.29,287.263h57.674v54.679H149.29V287.263z M227.363,287.263h57.275v54.679h-57.275V287.263z M305.036,287.263h56.874
+	v54.679h-56.874V287.263z M382.308,287.263h58.298v54.679h-58.298V287.263z M440.606,266.864h-58.298v-54.835h58.298V266.864z
+	 M361.91,266.864h-56.874v-54.835h56.874V266.864z M284.637,266.864h-57.275v-54.835h57.275V266.864z M206.964,266.864H149.29
+	v-54.835h57.674V266.864z M128.891,266.864H71.394v-54.835h57.497V266.864z M71.394,362.341h57.497v51.44H71.394V362.341z
+	 M149.29,362.341h57.674v51.44H149.29V362.341z M227.363,362.341h57.275v51.44h-57.275V362.341z M305.036,362.341h56.874v51.44
+	h-56.874V362.341z M440.606,413.78h-58.298v-51.44h58.298V413.78z M440.606,191.631h-58.298v-51.594h58.298V191.631z
+	 M361.91,191.631h-56.874v-51.594h56.874V191.631z M284.637,191.631h-57.275v-51.594h57.275V191.631z M206.964,191.631H149.29
+	v-51.594h57.674V191.631z M71.394,140.037h57.497v51.594H71.394V140.037z"/>
+<path d="M325.355,113.721h149.928c5.633,0,10.199-4.566,10.199-10.199c0-5.633-4.566-10.199-10.199-10.199H325.355
+	c-5.633,0-10.199,4.566-10.199,10.199C315.155,109.155,319.722,113.721,325.355,113.721z"/>
+<path d="M266.199,113.721h14.279c5.633,0,10.199-4.566,10.199-10.199c0-5.633-4.566-10.199-10.199-10.199h-14.279
+	c-5.633,0-10.199,4.566-10.199,10.199C256,109.155,260.566,113.721,266.199,113.721z"/>
+<path d="M174.406,238.151h-9.179c-5.633,0-10.199-4.566-10.199-10.199c0-5.633,4.566-10.199,10.199-10.199h9.179
+	c5.633,0,10.199,4.566,10.199,10.199C184.606,233.585,180.039,238.151,174.406,238.151z"/>
+</svg>
\ No newline at end of file
diff --git a/graphic/general_icons/debug.svg b/graphic/general_icons/debug.svg
new file mode 100644
index 0000000..966273b
--- /dev/null
+++ b/graphic/general_icons/debug.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FF5A27;}
+</style>
+<path class="st0" d="M234.7,45.4l4.6-1.9h471.4l4.7,1.9l39.3,39.3l1.9,4.6v471.4l-1.9,4.7l-39.3,39.3l-4.6,1.9h-244V600
+	c0-17.1-6.5-33.5-18.3-45.8h255.8V95.8H245.8v242.7c-17.1-4.2-34.7-6.1-52.4-5.5V89.3l1.9-4.7L234.7,45.4L234.7,45.4z M552.4,360.4
+	l-93.6,93.3c-3.1-5.7-7-11-11.6-15.6l-14-14l74.5-74.5L387.5,226.6l27.1-27.8l137.8,137.8V360.4z M320.7,494l44-44l35.3,35.3
+	l-57.3,57.3l7.3,7.3v50h50v48.3h-50v3.3c-2.5,16.6-7.1,32.9-13.7,48.3l63.7,64.7L364.7,800l-55-55c-26.5,33.8-66.7,54-109.7,55
+	c-42.9-1-83.2-21.2-109.7-55l-55,55L0,764.7L63.7,700c-6.5-15.1-11.1-31-13.7-47.3V650H0v-50h50v-50l7.3-7.3L0,485.3L35.3,450l44,44
+	c16.6-66.6,84-107.2,150.6-90.7C274.7,414.4,309.6,449.3,320.7,494z M253,472c-29.3-29.3-76.8-29.3-106.1,0
+	c-14.1,14.1-22,33.1-22,53h150C275,505.1,267.1,486,253,472L253,472z M268,718c18.2-18.2,29.6-42.3,32-68v-75H100v75
+	c5,53,47,95,100,100C225.7,747.6,249.7,736.2,268,718L268,718z"/>
+</svg>
diff --git a/graphic/icons/examine.png b/graphic/general_icons/examine.png
similarity index 100%
rename from graphic/icons/examine.png
rename to graphic/general_icons/examine.png
diff --git a/graphic/icons/expand.png b/graphic/general_icons/expand.png
similarity index 100%
rename from graphic/icons/expand.png
rename to graphic/general_icons/expand.png
diff --git a/graphic/icons/expand.svg b/graphic/general_icons/expand.svg
similarity index 100%
rename from graphic/icons/expand.svg
rename to graphic/general_icons/expand.svg
diff --git a/graphic/general_icons/eye.svg b/graphic/general_icons/eye.svg
new file mode 100644
index 0000000..bca56fb
--- /dev/null
+++ b/graphic/general_icons/eye.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M22 18C22 14.69 19.31 12 16 12C12.69 12 10 14.69 10 18C10 21.31 12.69 24 16 24C19.31 24 22 21.31 22 18ZM29 14.09C28.98 17.08 28 21 28 21C27 24 24 29 16 29C8 29 5 24 4 21C4 21 3.02 17.08 3 14.09C5.17 10.73 9.28 7 16 7C22.72 7 26.83 10.73 29 14.09Z" fill="#FFE6EA"/>
+<path d="M16 12C19.31 12 22 14.69 22 18C22 21.31 19.31 24 16 24C12.69 24 10 21.31 10 18C10 14.69 12.69 12 16 12Z" fill="#668077"/>
+<path d="M16 16C17.11 16 18 16.9 18 18C18 19.1 17.11 20 16 20C14.9 20 14 19.1 14 18C14 16.9 14.9 16 16 16Z" fill="#FFC44D"/>
+<path d="M4.001 21C5.001 24 8.001 29 16.001 29C24.001 29 27.001 24 28.001 21M31 19C31 17 27.001 7 16 7M16 7C5.001 7 1 17 1 19M16 7V3M21.1758 3.6816L20.1758 7.4106M26 5.6797L23.999 9.1427M30.1416 8.8574L27.3136 11.6844M10.8223 3.6816L11.8213 7.4106M5.999 5.6797L7.999 9.1437M1.8574 8.8574L4.6854 11.6854M16.001 12C12.688 12 10.001 14.687 10.001 18C10.001 21.313 12.688 24 16.001 24C19.314 24 22.001 21.313 22.001 18M21.2441 15.0869C20.7001 14.1089 19.8911 13.3009 18.9141 12.7569M18.001 18C18.001 16.896 17.105 16 16.001 16C14.897 16 14.001 16.896 14.001 18C14.001 19.104 14.897 20 16.001 20C17.105 20 18.001 19.104 18.001 18Z" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>
\ No newline at end of file
diff --git a/graphic/icons/fail.svg b/graphic/general_icons/fail.svg
similarity index 100%
rename from graphic/icons/fail.svg
rename to graphic/general_icons/fail.svg
diff --git a/graphic/general_icons/file.svg b/graphic/general_icons/file.svg
new file mode 100644
index 0000000..0382e08
--- /dev/null
+++ b/graphic/general_icons/file.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg version="1.1" id="_x34_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+	 viewBox="0 0 512 512"  xml:space="preserve">
+<g>
+	<g>
+		<g>
+			<path style="fill:#C9A662;" d="M512,0v392.858H0V50.992h258.501V23.759C258.501,10.629,269.13,0,282.26,0H512z"/>
+		</g>
+		<g>
+			<g>
+				<rect x="27.822" y="87.242" style="fill:#342221;" width="456.355" height="191.137"/>
+			</g>
+			<g>
+				<rect x="27.822" y="110.869" style="fill:#FFFFFF;" width="456.355" height="179.681"/>
+			</g>
+		</g>
+		<g>
+			<rect x="304.511" y="154.886" style="fill:#EAB01E;" width="48.093" height="104.533"/>
+		</g>
+		<g>
+			<rect x="361.221" y="179.156" style="fill:#C13B45;" width="48.094" height="104.533"/>
+		</g>
+		<g>
+			<rect x="417.932" y="167.021" style="fill:#22A3B0;" width="48.094" height="104.533"/>
+		</g>
+		<g>
+			<path style="fill:#D3B161;" d="M512,234.325v191.531c0,9.24-7.433,16.673-16.604,16.673H16.604
+				c-4.446,0-8.475-1.737-11.463-4.655C1.945,434.887,0,430.58,0,425.856V172.843h229.74c10.976,0,20.216,7.433,22.925,17.507
+				c0.556,2.015,0.834,4.099,0.834,6.252v37.723H512z"/>
+		</g>
+		<g>
+			<g>
+				<path style="fill:#D3B161;" d="M87.196,314.541v78.304H62.189v-78.304H51.802v-19.047h10.387v-12.503
+					c0-3.589,0.577-7.086,1.73-10.485c1.153-3.399,2.917-6.445,5.292-9.139c2.375-2.693,5.387-4.874,9.044-6.543
+					c3.657-1.665,8.046-2.5,13.175-2.5h14.24v21.164h-9.81c-5.774,0-8.664,3.015-8.664,9.04v10.966h18.474v19.047H87.196z
+					 M122.406,275.488v-20.394h25.59v20.394H122.406z M122.792,392.845v-97.351h25.007v97.351H122.792z"/>
+				<path style="fill:#D3B161;" d="M203.98,392.845c-5.136,0-9.559-0.831-13.277-2.5c-3.717-1.666-6.764-3.85-9.138-6.543
+					c-2.375-2.693-4.104-5.736-5.197-9.139c-1.085-3.395-1.635-6.893-1.635-10.484V255.864h25.014v106.775
+					c0,2.955,0.672,5.196,2.022,6.737c1.344,1.536,3.623,2.306,6.825,2.306h9.62v21.164H203.98z"/>
+				<path style="fill:#D3B161;" d="M257.847,350.518c0,6.543,1.858,11.9,5.576,16.065c3.718,4.169,9.172,6.252,16.357,6.252
+					c5.509,0,9.871-0.798,13.08-2.405c3.202-1.601,6.411-3.942,9.62-7.022l15.197,14.817c-2.565,2.565-5.129,4.841-7.694,6.828
+					c-2.571,1.992-5.359,3.657-8.371,5.004c-3.012,1.346-6.316,2.34-9.905,2.982c-3.596,0.638-7.632,0.959-12.123,0.959
+					c-5.902,0-11.635-0.77-17.218-2.306c-5.577-1.54-10.516-4.264-14.81-8.178c-4.301-3.911-7.768-9.169-10.393-15.777
+					c-2.632-6.605-3.942-14.973-3.942-25.105c0-8.206,1.059-15.489,3.176-21.835c2.117-6.35,5.095-11.702,8.941-16.065
+					c3.854-4.359,8.432-7.663,13.758-9.908c5.319-2.243,11.256-3.369,17.796-3.369c6.926,0,13.114,1.187,18.568,3.562
+					c5.448,2.374,10.034,5.706,13.752,10.003c3.724,4.298,6.547,9.427,8.467,15.391c1.926,5.963,2.89,12.476,2.89,19.528v10.58
+					H257.847z M295.941,333.398c-0.129-2.181-0.326-4.07-0.577-5.678c-0.265-1.601-0.841-3.301-1.737-5.098
+					c-1.412-2.948-3.494-5.418-6.249-7.405c-2.761-1.988-6.255-2.982-10.488-2.982c-4.233,0-7.727,0.994-10.482,2.982
+					c-2.762,1.987-4.844,4.457-6.255,7.405c-0.895,1.798-1.479,3.497-1.73,5.098c-0.258,1.608-0.455,3.497-0.577,5.678H295.941z"/>
+			</g>
+			<g>
+				<path style="fill:#70663D;" d="M87.196,314.541v78.304H62.189v-78.304H51.802v-19.047h10.387v-12.503
+					c0-3.589,0.577-7.086,1.73-10.485c1.153-3.399,2.917-6.445,5.292-9.139c2.375-2.693,5.387-4.874,9.044-6.543
+					c3.657-1.665,8.046-2.5,13.175-2.5h14.24v21.164h-9.81c-5.774,0-8.664,3.015-8.664,9.04v10.966h18.474v19.047H87.196z
+					 M122.406,275.488v-20.394h25.59v20.394H122.406z M122.792,392.845v-97.351h25.007v97.351H122.792z"/>
+				<path style="fill:#70663D;" d="M203.98,392.845c-5.136,0-9.559-0.831-13.277-2.5c-3.717-1.666-6.764-3.85-9.138-6.543
+					c-2.375-2.693-4.104-5.736-5.197-9.139c-1.085-3.395-1.635-6.893-1.635-10.484V255.864h25.014v106.775
+					c0,2.955,0.672,5.196,2.022,6.737c1.344,1.536,3.623,2.306,6.825,2.306h9.62v21.164H203.98z"/>
+				<path style="fill:#70663D;" d="M257.847,350.518c0,6.543,1.858,11.9,5.576,16.065c3.718,4.169,9.172,6.252,16.357,6.252
+					c5.509,0,9.871-0.798,13.08-2.405c3.202-1.601,6.411-3.942,9.62-7.022l15.197,14.817c-2.565,2.565-5.129,4.841-7.694,6.828
+					c-2.571,1.992-5.359,3.657-8.371,5.004c-3.012,1.346-6.316,2.34-9.905,2.982c-3.596,0.638-7.632,0.959-12.123,0.959
+					c-5.902,0-11.635-0.77-17.218-2.306c-5.577-1.54-10.516-4.264-14.81-8.178c-4.301-3.911-7.768-9.169-10.393-15.777
+					c-2.632-6.605-3.942-14.973-3.942-25.105c0-8.206,1.059-15.489,3.176-21.835c2.117-6.35,5.095-11.702,8.941-16.065
+					c3.854-4.359,8.432-7.663,13.758-9.908c5.319-2.243,11.256-3.369,17.796-3.369c6.926,0,13.114,1.187,18.568,3.562
+					c5.448,2.374,10.034,5.706,13.752,10.003c3.724,4.298,6.547,9.427,8.467,15.391c1.926,5.963,2.89,12.476,2.89,19.528v10.58
+					H257.847z M295.941,333.398c-0.129-2.181-0.326-4.07-0.577-5.678c-0.265-1.601-0.841-3.301-1.737-5.098
+					c-1.412-2.948-3.494-5.418-6.249-7.405c-2.761-1.988-6.255-2.982-10.488-2.982c-4.233,0-7.727,0.994-10.482,2.982
+					c-2.762,1.987-4.844,4.457-6.255,7.405c-0.895,1.798-1.479,3.497-1.73,5.098c-0.258,1.608-0.455,3.497-0.577,5.678H295.941z"/>
+			</g>
+		</g>
+	</g>
+	<g style="opacity:0.05;">
+		<path style="fill:#231815;" d="M512,0v425.856c0,9.24-7.433,16.673-16.604,16.673H16.604c-4.446,0-8.475-1.737-11.463-4.655
+			l45.017-45.017l102.331-102.331l12.157-12.157l82.184-82.184l5.836-5.835l79.475-79.475l23.62-23.62L443.016,0H512z"/>
+	</g>
+</g>
+</svg>
\ No newline at end of file
diff --git a/graphic/icons/float.svg b/graphic/general_icons/float.svg
similarity index 100%
rename from graphic/icons/float.svg
rename to graphic/general_icons/float.svg
diff --git a/graphic/general_icons/folder.svg b/graphic/general_icons/folder.svg
new file mode 100644
index 0000000..cd46af2
--- /dev/null
+++ b/graphic/general_icons/folder.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#EFC44B;stroke:#000000;stroke-width:33.3333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:133.3333;}
+	.st1{fill:#EFC44B;stroke:#000000;stroke-width:33.3333;stroke-miterlimit:133.3333;}
+</style>
+<path class="st0" d="M133.3,300v-84.3c0-10.3,2.4-20.6,7-29.8l26.3-52.6h166.7l33.3,66.7H700c18.4,0,33.3,14.9,33.3,33.3V300v300
+	c0,36.8-29.8,66.7-66.7,66.7H600"/>
+<path class="st1" d="M574.5,300H77c-22,0-37.9,20.9-32.2,42.1l75.1,275.4c7.9,29,34.3,49.1,64.3,49.1h472.1
+	c22,0,37.9-20.9,32.2-42.1l-81.8-300C602.7,310.1,589.6,300,574.5,300z"/>
+</svg>
diff --git a/graphic/general_icons/image.svg b/graphic/general_icons/image.svg
new file mode 100644
index 0000000..e99c044
--- /dev/null
+++ b/graphic/general_icons/image.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 -14 100 100" xmlns="http://www.w3.org/2000/svg"><path fill="#E7F7FF" d="M0 0h100v44H0V0z"/><path fill="#3498DB" d="M84 69.199l13.938-13.938V38.945C96.829 38.741 96 37.95 96 37.001h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2h-1c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2H5c0 1.104-1.119 2-2.5 2s-2.5-.896-2.5-2V69.2l84-.001z"/><path fill="#2F89C5" d="M65 46v2h34v-2H65zm2 6h32v-2H67v2zm-2 4h31v-2H65v2zm6 4h18v-2H71v2z"/><path fill="#2C81BA" d="M70.801 69.199H84V56z"/><path fill="#F39C12" d="M15.726 57.883c1.529 0 2.768-.99 2.768-2.215h1.107c0 1.225 1.239 2.215 2.768 2.215 1.529 0 2.768-.99 2.768-2.215h1.107c0 1.225 1.239 2.215 2.768 2.215 1.529 0 2.769-.99 2.769-2.215h1.106c0 1.225 1.24 2.215 2.769 2.215 1.529 0 2.769-.99 2.769-2.215h1.105c0 1.225 1.238 2.215 2.768 2.215.342 0 .668-.057.969-.146l9.736-9.734s-35.977-.004-36 0h-4V56c.197 1.062 1.336 1.883 2.723 1.883z"/><path fill="#34495E" d="M20 38h3v10h-3V38z"/><path fill="#F1C40E" d="M20 45h25L20 20v25z"/><path fill="#EBEDEE" d="M0 0v72h84l4-5H5V5h90v55l5-4V0z"/><path fill="#BDC3C7" d="M84 72V56h16L84 72z"/><path fill="#C3E4F8" d="M63.807 20.031c.119-.323.193-.667.193-1.031a3 3 0 0 0-3-3c-.382 0-.744.078-1.08.209A4 4 0 0 0 56 13h-1a4 4 0 0 0-4 4v1c0 .798.24 1.537.643 2.16A2.495 2.495 0 0 0 52.5 25h11a2.492 2.492 0 1 0 .307-4.969z"/><path fill="#ffffff" d="M71.357 23.16A3.962 3.962 0 0 0 72 21v-1a4 4 0 0 0-4-4h-1a4 4 0 0 0-3.92 3.209A2.958 2.958 0 0 0 62 19c-1.656 0-3 1.345-3 3 0 .364.075.708.193 1.031A2.492 2.492 0 0 0 59.5 28h11a2.494 2.494 0 1 0 .857-4.84z"/><path fill="#DA8C11" d="M53 48H13v2h38z"/><path fill="#C8CACB" d="M73 67l-5 5h16v-5z"/><path fill="#2875A8" d="M84 60v-2h-2l-2 2z"/></svg>
\ No newline at end of file
diff --git a/graphic/general_icons/input.svg b/graphic/general_icons/input.svg
new file mode 100644
index 0000000..0e114e9
--- /dev/null
+++ b/graphic/general_icons/input.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g id="Layer_2_00000026162920613215240240000000267166409718488202_">
+	<g id="icons_Q2">
+		<path class="st0" d="M133.3,161.7c0.1-8.8,3.7-17.2,10-23.3C211.4,70.5,303.9,32.7,400,33.3c202.5,0,366.7,164.2,366.7,366.7
+			S602.5,766.7,400,766.7c-96.1,0.7-188.6-37.1-256.7-105c-14.7-11-17.7-31.9-6.7-46.7c11-14.7,31.9-17.7,46.7-6.7
+			c2.5,1.9,4.8,4.1,6.7,6.7c118.7,115.6,308.7,113,424.2-5.8s113-308.7-5.8-424.2C492,71.7,306.5,71.7,190,185
+			c-11.8,12.9-31.9,13.7-44.7,1.9c-0.7-0.6-1.3-1.3-1.9-1.9C137.1,178.8,133.5,170.5,133.3,161.7z"/>
+		<path class="st0" d="M556.7,376.7L425,243.3c-12.2-11.9-31.2-13.3-45-3.3c-14.5,9.8-18.4,29.4-8.6,43.9c1.5,2.2,3.3,4.3,5.3,6.1
+			l76.7,76.7H66.7c-18.4,0-33.3,14.9-33.3,33.3l0,0c0,18.4,14.9,33.3,33.3,33.3h386.7L376.7,510c-13.1,11.6-14.3,31.6-2.7,44.7
+			c1.8,2,3.8,3.8,6.1,5.3c13.8,10,32.8,8.6,45-3.3l131.7-133.3c12.9-11.8,13.7-31.9,1.9-44.7C558,377.9,557.3,377.3,556.7,376.7z"/>
+	</g>
+</g>
+</svg>
diff --git a/graphic/icons/load.png b/graphic/general_icons/load.png
similarity index 100%
rename from graphic/icons/load.png
rename to graphic/general_icons/load.png
diff --git a/graphic/general_icons/nodes.svg b/graphic/general_icons/nodes.svg
new file mode 100644
index 0000000..7d8b589
--- /dev/null
+++ b/graphic/general_icons/nodes.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 300 300" style="enable-background:new 0 0 300 300;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#97FCDA;}
+	.st1{fill:#26D399;}
+	.st2{fill:none;stroke:#26D399;stroke-width:8;stroke-miterlimit:10;}
+	.st3{fill-rule:evenodd;clip-rule:evenodd;fill:#00BF86;}
+	.st4{fill:#00BF86;fill-opacity:0.2;stroke:#26D399;stroke-width:8;stroke-miterlimit:10;}
+</style>
+<g>
+	<path class="st0" d="M53,266.2c-18.4,0-34.6-13.1-38.4-31.2c-4.5-21.2,9.1-42.2,30.3-46.7c2.7-0.6,5.5-0.9,8.2-0.9
+		c18.4,0,34.6,13.1,38.4,31.2c4.5,21.2-9.1,42.2-30.3,46.7C58.5,266,55.7,266.2,53,266.2z"/>
+	<g>
+		<path class="st1" d="M53.1,183.5l0,8h0c16.6,0,31.1,11.8,34.5,28c4,19.1-8.2,37.9-27.2,41.9c-2.4,0.5-4.9,0.8-7.4,0.8
+			c-16.6,0-31.1-11.8-34.5-28c-4-19.1,8.2-37.9,27.2-41.9c2.4-0.5,4.9-0.8,7.4-0.8L53.1,183.5 M53.1,183.5c-3,0-6,0.3-9,1
+			c-23.4,5-38.4,28-33.4,51.4c4.3,20.4,22.3,34.4,42.4,34.4c3,0,6-0.3,9-1c23.4-5,38.4-28,33.4-51.4
+			C91.1,197.5,73.1,183.5,53.1,183.5L53.1,183.5z"/>
+	</g>
+</g>
+<g>
+	<path class="st0" d="M117.8,91.2c-18.4,0-34.6-13.1-38.4-31.2c-2.2-10.3-0.2-20.8,5.5-29.6c5.7-8.8,14.5-14.9,24.8-17
+		c2.7-0.6,5.5-0.9,8.2-0.9c18.4,0,34.6,13.1,38.4,31.2c4.5,21.2-9.1,42.2-30.3,46.7C123.3,91,120.6,91.2,117.8,91.2z"/>
+	<g>
+		<path class="st1" d="M117.9,8.5l0,8h0c16.6,0,31.1,11.8,34.5,28c4,19.1-8.2,37.9-27.2,41.9c-2.4,0.5-4.9,0.8-7.4,0.8
+			c-16.6,0-31.1-11.8-34.5-28c-4-19.1,8.2-37.9,27.2-41.9c2.4-0.5,4.9-0.8,7.4-0.8L117.9,8.5 M117.9,8.5c-3,0-6,0.3-9,1
+			c-23.4,5-38.4,28-33.4,51.4c4.3,20.4,22.3,34.4,42.4,34.4c3,0,6-0.3,9-1c23.4-5,38.4-28,33.4-51.4C156,22.5,138,8.5,117.9,8.5
+			L117.9,8.5z"/>
+	</g>
+</g>
+<g>
+	<path class="st0" d="M261.9,221.3c-8.5,0-16-6.1-17.7-14.4c-1-4.7-0.1-9.6,2.5-13.7c2.6-4.1,6.7-6.9,11.5-7.9
+		c1.3-0.3,2.5-0.4,3.8-0.4c8.5,0,16,6.1,17.8,14.4c1,4.7,0.1,9.6-2.5,13.7c-2.6,4.1-6.7,6.9-11.5,7.9
+		C264.5,221.2,263.2,221.3,261.9,221.3z"/>
+	<g>
+		<path class="st1" d="M262,181v8c6.6,0,12.5,4.7,13.8,11.2c1.6,7.6-3.3,15.2-10.9,16.8c-1,0.2-2,0.3-3,0.3
+			c-6.6,0-12.5-4.7-13.8-11.2c-0.8-3.7-0.1-7.5,2-10.7c2.1-3.2,5.2-5.4,8.9-6.1c1-0.2,2-0.3,3-0.3L262,181 M262,181
+			c-1.5,0-3.1,0.2-4.6,0.5c-12,2.5-19.6,14.3-17.1,26.3c2.2,10.4,11.4,17.6,21.7,17.6c1.5,0,3.1-0.2,4.6-0.5
+			c12-2.5,19.6-14.3,17.1-26.3C281.4,188.1,272.2,181,262,181L262,181z"/>
+	</g>
+</g>
+<g>
+	<path class="st0" d="M169.1,192.2c-10.9,0-20.5-7.8-22.7-18.4c-2.7-12.5,5.4-24.9,17.9-27.6c1.6-0.3,3.2-0.5,4.9-0.5
+		c10.9,0,20.5,7.8,22.7,18.4c2.7,12.5-5.4,24.9-17.9,27.6C172.3,192.1,170.7,192.2,169.1,192.2z"/>
+	<g>
+		<path class="st1" d="M169.1,141.7v8c9,0,16.9,6.4,18.8,15.3c1.1,5,0.1,10.2-2.7,14.5c-2.8,4.3-7.1,7.3-12.2,8.3
+			c-1.3,0.3-2.7,0.4-4,0.4c-9,0-16.9-6.4-18.8-15.3c-1.1-5-0.1-10.2,2.7-14.5c2.8-4.3,7.1-7.3,12.2-8.3c1.3-0.3,2.7-0.4,4-0.4
+			L169.1,141.7 M169.1,141.7c-1.9,0-3.8,0.2-5.7,0.6c-14.7,3.1-24.1,17.6-21,32.3c2.7,12.8,14,21.6,26.6,21.6c1.9,0,3.8-0.2,5.7-0.6
+			c14.7-3.1,24.1-17.6,21-32.3C193,150.5,181.7,141.7,169.1,141.7L169.1,141.7z"/>
+	</g>
+</g>
+<g>
+	<path class="st0" d="M245.1,98c-10.9,0-20.5-7.8-22.7-18.4c-2.7-12.5,5.4-24.9,17.9-27.6c1.6-0.3,3.2-0.5,4.9-0.5
+		c10.9,0,20.5,7.8,22.7,18.4c2.7,12.5-5.4,24.9-17.9,27.6C248.4,97.8,246.7,98,245.1,98z"/>
+	<g>
+		<path class="st1" d="M245.2,47.5v8c9,0,16.9,6.4,18.8,15.3c2.2,10.4-4.5,20.6-14.8,22.8c-1.3,0.3-2.7,0.4-4,0.4
+			c-9,0-16.9-6.4-18.8-15.3c-1.1-5-0.1-10.2,2.7-14.5c2.8-4.3,7.1-7.3,12.2-8.3c1.3-0.3,2.7-0.4,4-0.4L245.2,47.5 M245.2,47.5
+			c-1.9,0-3.8,0.2-5.7,0.6c-14.7,3.1-24.1,17.6-21,32.3c2.7,12.8,14,21.6,26.6,21.6c1.9,0,3.8-0.2,5.7-0.6
+			c14.7-3.1,24.1-17.6,21-32.3C269.1,56.2,257.8,47.4,245.2,47.5L245.2,47.5z"/>
+	</g>
+</g>
+<g>
+	<line class="st2" x1="87" y1="211" x2="150" y2="180"/>
+	<line class="st3" x1="87" y1="211" x2="150" y2="180"/>
+</g>
+<line class="st4" x1="160.5" y1="149.5" x2="134.5" y2="84.5"/>
+<line class="st4" x1="156.8" y1="57.1" x2="223.2" y2="67.5"/>
+<line class="st4" x1="249.5" y1="94.5" x2="259.5" y2="185.5"/>
+</svg>
diff --git a/graphic/icons/nodes_2.png b/graphic/general_icons/nodes_2.png
similarity index 100%
rename from graphic/icons/nodes_2.png
rename to graphic/general_icons/nodes_2.png
diff --git a/graphic/icons/plus.svg b/graphic/general_icons/plus.svg
similarity index 100%
rename from graphic/icons/plus.svg
rename to graphic/general_icons/plus.svg
diff --git a/graphic/general_icons/polars.svg b/graphic/general_icons/polars.svg
new file mode 100644
index 0000000..9704c00
--- /dev/null
+++ b/graphic/general_icons/polars.svg
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+	 viewBox="0 0 460 460" xml:space="preserve">
+<g id="XMLID_2502_">
+	<path id="XMLID_1830_" style="fill:#A59E95;" d="M100,65H80V55c0-5.523,4.477-10,10-10s10,4.477,10,10V65z"/>
+	<path id="XMLID_1828_" style="fill:#A59E95;" d="M460,125v60h-20h-40h-20v-20v-60h60C451.046,105,460,113.954,460,125z"/>
+	<path id="XMLID_1422_" style="fill:#EDE6D3;" d="M460,180.867v48.266c0,43.733-24.233,81.802-60,101.526V385
+		c0,16.569-13.431,30-30,30h-30h-40c-5.523,0-10-4.477-10-10c0-11.046,8.954-20,20-20h13.473c6.153,0,10.846-5.504,9.874-11.58
+		l-4.716-29.476c-16.798-2.268-32.963-8.19-47.313-17.448l-72.211-46.588L190,385c0,16.569-13.431,30-30,30h-30H90
+		c-5.523,0-10-4.477-10-10c0-11.046,8.954-20,20-20h13.473H120c5.523,0,10-4.477,10-10l24.442-130.36L12.965,153.364
+		C4.883,148.15,0,139.189,0,129.572l0,0c0-9.144,4.416-17.725,11.857-23.041l56.049-40.035C69.22,65.557,70,64.042,70,62.427V55
+		c0-5.743,4.842-10.355,10.666-9.978C85.981,45.366,90,50.016,90,55.343V60c0,2.761,2.239,5,5,5h249.133
+		C408.125,65,460,116.875,460,180.867z"/>
+	<path id="XMLID_996_" style="fill:#E2DAC7;" d="M460,225v4.133C460,293.125,408.125,345,344.133,345l0,0
+		c-22.282,0-44.091-6.425-62.815-18.504L12.965,153.364C4.883,148.15,0,139.189,0,129.572l0,0c0-1.545,0.136-3.072,0.382-4.571l0,0
+		c50.343,0,99.618,14.516,141.92,41.808l139.016,89.688C300.042,268.575,321.851,275,344.133,275l0,0
+		c33.256,0,63.236-14.012,84.364-36.454C436.665,229.871,448.084,225,460,225z"/>
+	<path id="XMLID_1816_" style="fill:#66605A;" d="M70,90c0,2.761-2.239,5-5,5s-5-2.239-5-5s2.239-5,5-5S70,87.239,70,90z"/>
+	<path id="XMLID_2240_" style="fill:#827B73;" d="M20,100.714V125c0,5.523-4.477,10-10,10H0.528C0.182,133.229,0,131.413,0,129.572
+		l0,0c0-9.144,4.416-17.725,11.857-23.041L20,100.714z"/>
+	<path id="XMLID_1819_" style="fill:#66605A;" d="M0.382,125c-0.113,0.688-0.196,1.384-0.26,2.082
+		c-0.009,0.107-0.021,0.213-0.029,0.32C0.036,128.122,0,128.844,0,129.572l0,0c0,0.538,0.021,1.073,0.051,1.607
+		c0.011,0.186,0.026,0.37,0.041,0.555c0.026,0.347,0.059,0.692,0.099,1.036c0.025,0.216,0.05,0.433,0.079,0.648
+		c0.046,0.335,0.101,0.667,0.159,0.999c0.034,0.194,0.062,0.39,0.1,0.583l0,0H10c5.273,0,9.583-4.085,9.963-9.261
+		C13.462,125.252,6.932,125,0.382,125L0.382,125z"/>
+	<path id="XMLID_1533_" style="fill:#A59E95;" d="M85,60v5H75v-5c0-2.761,2.239-5,5-5S85,57.239,85,60z"/>
+	<path id="XMLID_1011_" style="fill:#E2DAC7;" d="M460,235v150c0,16.569-13.431,30-30,30h-30h-40c-5.523,0-10-4.477-10-10l0,0
+		c0-11.046,8.954-20,20-20h13.473c6.153,0,10.846-5.504,9.874-11.58L380,295L460,235z"/>
+	<path id="XMLID_1354_" style="fill:#A59E95;" d="M393.347,373.42c0.972,6.076-3.721,11.58-9.874,11.58H370
+		c-11.046,0-20,8.954-20,20c0,5.523,4.477,10,10,10h-20h-40c-5.523,0-10-4.477-10-10c0-11.046,8.954-20,20-20h13.473
+		c6.153,0,10.846-5.504,9.874-11.58L325.6,325h59.506L393.347,373.42z"/>
+	<path id="XMLID_1065_" style="fill:#A59E95;" d="M202.11,260.988L180,375c0,5.523-4.477,10-10,10h-6.527H150
+		c-11.046,0-20,8.954-20,20c0,5.523,4.477,10,10,10h-10H90c-5.523,0-10-4.477-10-10c0-11.046,8.954-20,20-20h13.473H120
+		c5.523,0,10-4.477,10-10l27-142.667L202.11,260.988z"/>
+	<path id="XMLID_1060_" style="fill:#C1BAAC;" d="M410,307.165L410,307.165c0,11.557-6.589,22.194-17.066,27.072
+		C378.105,341.142,361.572,345,344.133,345l0,0c-22.282,0-44.091-6.425-62.815-18.504L62,185c30.355,0,60.066,8.753,85.574,25.209
+		l133.745,86.287C300.042,308.575,321.851,315,344.133,315l0,0c20.064,0,38.932-5.106,55.385-14.083
+		C404.243,298.339,410,301.783,410,307.165z"/>
+	<path id="XMLID_1000_" style="fill:#E2DAC7;" d="M257.859,283.972L238.917,385c0,16.569-13.431,30-30,30h-30h-40
+		c-5.523,0-10-4.477-10-10l0,0c0-11.046,8.954-20,20-20h13.473h6.527c5.523,0,10-4.477,10-10l30-150l0,0
+		C240.096,225,263.605,253.327,257.859,283.972z"/>
+</g>
+</svg>
\ No newline at end of file
diff --git a/graphic/general_icons/python.svg b/graphic/general_icons/python.svg
new file mode 100644
index 0000000..8aa9a10
--- /dev/null
+++ b/graphic/general_icons/python.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="-133.268" y1="-202.91" x2="-133.198" y2="-202.84" gradientTransform="translate(25243.061 38519.17) scale(189.38 189.81)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#387eb8"/><stop offset="1" stop-color="#366994"/></linearGradient><linearGradient id="b" x1="-133.575" y1="-203.203" x2="-133.495" y2="-203.133" gradientTransform="translate(25309.061 38583.42) scale(189.38 189.81)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffe052"/><stop offset="1" stop-color="#ffc331"/></linearGradient></defs><title>file_type_python</title><path d="M15.885,2.1c-7.1,0-6.651,3.07-6.651,3.07V8.36h6.752v1H6.545S2,8.8,2,16.005s4.013,6.912,4.013,6.912H8.33V19.556s-.13-4.013,3.9-4.013h6.762s3.772.06,3.772-3.652V5.8s.572-3.712-6.842-3.712h0ZM12.153,4.237a1.214,1.214,0,1,1-1.183,1.244v-.02a1.214,1.214,0,0,1,1.214-1.214h0Z" style="fill:url(#a)"/><path d="M16.085,29.91c7.1,0,6.651-3.08,6.651-3.08V23.65H15.985v-1h9.47S30,23.158,30,15.995s-4.013-6.912-4.013-6.912H23.64V12.4s.13,4.013-3.9,4.013H12.975S9.2,16.356,9.2,20.068V26.2s-.572,3.712,6.842,3.712h.04Zm3.732-2.147A1.214,1.214,0,1,1,21,26.519v.03a1.214,1.214,0,0,1-1.214,1.214h.03Z" style="fill:url(#b)"/></svg>
\ No newline at end of file
diff --git a/graphic/icons/rename.png b/graphic/general_icons/rename.png
similarity index 100%
rename from graphic/icons/rename.png
rename to graphic/general_icons/rename.png
diff --git a/graphic/icons/reset.png b/graphic/general_icons/reset.png
similarity index 100%
rename from graphic/icons/reset.png
rename to graphic/general_icons/reset.png
diff --git a/graphic/icons/run_one.svg b/graphic/general_icons/run_one.svg
similarity index 100%
rename from graphic/icons/run_one.svg
rename to graphic/general_icons/run_one.svg
diff --git a/graphic/icons/save.png b/graphic/general_icons/save.png
similarity index 100%
rename from graphic/icons/save.png
rename to graphic/general_icons/save.png
diff --git a/graphic/icons/scene.png b/graphic/general_icons/scene.png
similarity index 100%
rename from graphic/icons/scene.png
rename to graphic/general_icons/scene.png
diff --git a/graphic/general_icons/string.svg b/graphic/general_icons/string.svg
new file mode 100644
index 0000000..6e26a86
--- /dev/null
+++ b/graphic/general_icons/string.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
+	 viewBox="0 0 512 512" xml:space="preserve">
+<g>
+	<rect x="33.526" y="8.245" style="fill:#BF9484;" width="39.87" height="175.451"/>
+	<rect x="288.717" y="8.245" style="fill:#BF9484;" width="39.87" height="175.451"/>
+</g>
+<path d="M81.197,191.492H25.724V0.446h55.473V191.492z M41.322,175.894h24.276V16.044H41.322V175.894z"/>
+<path d="M336.396,191.492h-55.473V0.446h55.473V191.492z M296.521,175.894h24.276V16.044h-24.276V175.894z"/>
+<g>
+	<rect x="88.391" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="112.309" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="137.266" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="160.144" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="184.062" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="209.019" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="232.937" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+	<rect x="255.814" y="24.883" style="fill:#FBB03B;" width="15.598" height="143.506"/>
+</g>
+<rect y="79.998" width="15.598" height="31.197"/>
+<rect x="344.206" y="79.998" width="15.598" height="31.197"/>
+<path style="fill:#FBB03B;" d="M348.535,511.554H41.498C19.78,511.554,0,491.263,0,468.983v-0.905
+	c0-20.863,17.84-36.596,41.498-36.596h143.549c8.424,0,16.692-9.076,16.692-18.324v-0.905c0-8.986-8.384-13.008-16.692-13.008
+	h-27.911c-19.652,0-37.549-18.077-37.549-37.925v-0.905c0-18.475,15.791-31.883,37.545-31.883h156.469
+	c12.286,0,22.284-10.881,22.284-24.258v-0.801c0-13.578-9.99-23.817-23.24-23.817H145.173c-17.2,0-32.864-16.193-32.864-33.973
+	v-0.905c0-16.596,14.436-29.595,32.864-29.595h46.78c9.57,0,17.067-7.296,17.067-16.61v-22.906h15.598v22.906
+	c0,18.061-14.348,32.209-32.665,32.209h-46.78c-8.37,0-17.265,4.905-17.265,13.997v0.905c0,9.101,8.713,18.375,17.265,18.375
+	h167.474c21.777,0,38.838,17.313,38.838,39.415v0.801c0,21.977-16.994,39.856-37.882,39.856H157.133
+	c-10.571,0-21.947,5.095-21.947,16.285v0.905c0,11.267,10.872,22.327,21.95,22.327h27.911c18.711,0,32.291,12.031,32.291,28.606
+	v0.905c0,18.07-15.089,33.922-32.291,33.922H41.498c-12.556,0-25.9,7.359-25.9,20.998v0.905c0,13.612,12.829,26.973,25.9,26.973
+	h307.037c11.031,0,19.589-12.479,19.589-23.918h0.012c0.488-18.718,15.896-32.237,36.224-32.237h75.762
+	c17.475,0,31.879,14.06,31.879,31.345s-14.93,31.345-31.568,31.345v-15.598c8.319,0,15.97-6.916,15.97-15.746
+	c0-8.83-7.256-15.746-16.281-15.746h-75.762c-10.255,0-20.638,6.239-20.638,17.678h-0.011
+	C383.255,491.796,368.936,511.554,348.535,511.554z"/>
+</svg>
\ No newline at end of file
diff --git a/graphic/graphic_node.py b/graphic/graphic_node.py
index 3d3ec99..b273003 100644
--- a/graphic/graphic_node.py
+++ b/graphic/graphic_node.py
@@ -7,6 +7,7 @@
 
 from functools import partial
 import math
+import pprint
 
 from PySide2 import QtWidgets
 from PySide2 import QtCore
@@ -49,11 +50,20 @@ def __init__(self, logic_node, color_name):
         self.bright_color_name = utils.get_bright_color(color_name)
 
         # SUB-ITEMS
-        class_pixmap = QtGui.QPixmap(self.logic_node.ICON_PATH)
-        class_pixmap = class_pixmap.scaledToHeight(
-            constants.STRIPE_HEIGHT, QtCore.Qt.TransformationMode.SmoothTransformation
-        )
-        self.class_icon = QtWidgets.QGraphicsPixmapItem(class_pixmap, parent=self)
+        if "svg" in self.logic_node.ICON_PATH:
+            self.class_icon_renderer = QtSvg.QSvgRenderer(self.logic_node.ICON_PATH)
+            self.class_icon = QtSvg.QGraphicsSvgItem(parentItem=self)
+            self.class_icon.setSharedRenderer(self.class_icon_renderer)
+            self.class_icon.setScale(
+                constants.STRIPE_HEIGHT / self.class_icon.boundingRect().height()
+            )
+        else:
+            class_pixmap = QtGui.QPixmap(self.logic_node.ICON_PATH)
+            class_pixmap = class_pixmap.scaledToWidth(
+                constants.STRIPE_HEIGHT,
+                QtCore.Qt.TransformationMode.SmoothTransformation,
+            )
+            self.class_icon = QtWidgets.QGraphicsPixmapItem(class_pixmap, parent=self)
 
         self.class_text = QtWidgets.QGraphicsTextItem(parent=self)
 
@@ -74,9 +84,9 @@ def __init__(self, logic_node, color_name):
         self.glow = QtWidgets.QGraphicsPathItem(parent=self)
         self.glow.hide()
 
-        self.svg_renderer = QtSvg.QSvgRenderer("icons:badges.svg")
+        self.badge_renderer = QtSvg.QSvgRenderer("icons:badges.svg")
         self.badge_icon = QtSvg.QGraphicsSvgItem(parentItem=self)
-        self.badge_icon.setSharedRenderer(self.svg_renderer)
+        self.badge_icon.setSharedRenderer(self.badge_renderer)
         self.badge_icon.setElementId("neutral")
         self.badge_icon.hide()
 
@@ -573,9 +583,9 @@ def setup_input_widgets(self):
                 )
                 new_input_widget.setMaximum(int(1e6))
                 new_input_widget.setMinimum(int(-1e6))
-                if self.logic_node.get_attribute_value("out_int"):
+                if self.logic_node.get_attribute_value(attr_name):
                     new_input_widget.setValue(
-                        self.logic_node.get_attribute_value("out_int")
+                        self.logic_node.get_attribute_value(attr_name)
                     )
                 new_input_widget.valueChanged.connect(
                     partial(self.update_attributes_from_widgets, attr_name)
@@ -595,9 +605,9 @@ def setup_input_widgets(self):
                 )
                 new_input_widget.setMaximum(int(1e6))
                 new_input_widget.setMinimum(int(-1e6))
-                if self.logic_node.get_attribute_value("out_int"):
+                if self.logic_node.get_attribute_value(attr_name):
                     new_input_widget.setValue(
-                        self.logic_node.get_attribute_value("out_int")
+                        self.logic_node.get_attribute_value(attr_name)
                     )
                 new_input_widget.valueChanged.connect(
                     partial(self.update_attributes_from_widgets, attr_name)
@@ -625,9 +635,9 @@ def setup_input_widgets(self):
                         "options", constants.InputsGUI.OPTION_INPUT.value
                     )
                 )
-                if self.logic_node.get_attribute_value("out_str"):
+                if self.logic_node.get_attribute_value(attr_name):
                     new_input_widget.setCurrentText(
-                        self.logic_node.get_attribute_value("out_str")
+                        self.logic_node.get_attribute_value(attr_name)
                     )
                 new_input_widget.currentIndexChanged.connect(
                     partial(self.update_attributes_from_widgets, attr_name)
@@ -734,6 +744,28 @@ def setup_preview_widgets(self):
 
                 self.preview_widgets.append(new_preview_widget)
 
+            elif gui_preview_type == constants.PreviewsGUI.DICT_PREVIEW:
+                new_preview_widget = QtWidgets.QPlainTextEdit(parent=None)
+                new_preview_widget.setObjectName(attr_name)
+                new_preview_widget.setToolTip(f"Internal attribute: {attr_name}")
+                new_preview_widget.setReadOnly(True)
+                new_preview_widget.setFixedSize(
+                    300,
+                    int(4 * constants.HEADER_HEIGHT),
+                )
+                new_preview_widget.setStyleSheet(
+                    "background:transparent; color:white; border:1px dotted white;"
+                )
+
+                if self.logic_node.get_attribute_value(attr_name):
+                    new_preview_widget.setPlaceholderText(
+                        self.logic_node.get_attribute_value(attr_name)
+                    )
+                else:
+                    new_preview_widget.setPlaceholderText(f"[{attr_name}]")
+
+                self.preview_widgets.append(new_preview_widget)
+
             elif gui_preview_type == constants.PreviewsGUI.IMAGE_PREVIEW:
                 new_preview_widget = QtWidgets.QLabel(parent=None)
                 new_preview_widget.setObjectName(attr_name)
@@ -913,7 +945,7 @@ def update_attributes_from_widgets(self, *args):
     # SHOW PREVIEWS ----------------------
     def update_previews_from_attributes(self):
         for w in self.preview_widgets:
-            if not w.objectName():
+            if not w.objectName():  # That is the label that starts the previews
                 continue
 
             value = self.logic_node.get_attribute_value(w.objectName())
@@ -921,7 +953,7 @@ def update_previews_from_attributes(self):
             if isinstance(w, QtWidgets.QLineEdit):
                 w.setText(value)
             elif isinstance(w, QtWidgets.QPlainTextEdit):
-                w.setPlainText(value)
+                w.setPlainText(pprint.pformat(value))
             elif isinstance(w, QtWidgets.QCheckBox):
                 w.setChecked(value)
             elif isinstance(w, QtWidgets.QSpinBox):
@@ -1207,7 +1239,7 @@ def setup_graphics(self):
             )
             plug_path.addPolygon(plug_polygon)
 
-        elif self.logic_attribute.get_datatype_str() == "Run":
+        elif self.logic_attribute.get_datatype_str() in ["Run", "RunLoop"]:
             plug_polygon = QtGui.QPolygon(
                 [
                     QtCore.QPoint(-constants.PLUG_RADIUS, constants.PLUG_RADIUS),
@@ -1292,7 +1324,7 @@ def setup_graphics(self):
             )
 
     # CONNECT/DISCONNECT ----------------------
-    def connect_graphic_attr(self, other_graphic_attr, check_logic=True):
+    def connect_graphic_attr(self, other_graphic_attr, check_logic=True) -> tuple:
         """
         Connect this graphic attribute to another one.
 
@@ -1300,7 +1332,7 @@ def connect_graphic_attr(self, other_graphic_attr, check_logic=True):
             other_graphic_attr (GeneralGraphicAttribute): attribute to try to connect
             check_logic (bool): check the connection of logic attributes
 
-        Returns: bool, whether the attribute could be connected
+        Returns: tuple(bool, str), whether the attribute could be connected and a message with the reason
         """
         can_connect = True
         reason = ""
diff --git a/graphic/icons/MirrorFolders.png b/graphic/icons/MirrorFolders.png
deleted file mode 100644
index 3d2bccd..0000000
Binary files a/graphic/icons/MirrorFolders.png and /dev/null differ
diff --git a/graphic/icons/cube.png b/graphic/icons/cube.png
deleted file mode 100644
index 81c5ed2..0000000
Binary files a/graphic/icons/cube.png and /dev/null differ
diff --git a/graphic/icons/cubes.png b/graphic/icons/cubes.png
deleted file mode 100644
index 151b732..0000000
Binary files a/graphic/icons/cubes.png and /dev/null differ
diff --git a/graphic/icons/eye.png b/graphic/icons/eye.png
deleted file mode 100644
index c329cf0..0000000
Binary files a/graphic/icons/eye.png and /dev/null differ
diff --git a/graphic/icons/folder.png b/graphic/icons/folder.png
deleted file mode 100644
index 9e81708..0000000
Binary files a/graphic/icons/folder.png and /dev/null differ
diff --git a/graphic/icons/nodes.png b/graphic/icons/nodes.png
deleted file mode 100644
index 9501bc7..0000000
Binary files a/graphic/icons/nodes.png and /dev/null differ
diff --git a/graphic/icons/plus.png b/graphic/icons/plus.png
deleted file mode 100644
index 3742439..0000000
Binary files a/graphic/icons/plus.png and /dev/null differ
diff --git a/graphic/ui/stylesheet.qss b/graphic/ui/stylesheet.qss
index d5c9f84..68148e6 100644
--- a/graphic/ui/stylesheet.qss
+++ b/graphic/ui/stylesheet.qss
@@ -10,6 +10,13 @@ QWidget
 }
 
 /* ---------------------------- QMenuBar ---------------------------- */
+QMenuBar::item{
+	background-color: transparent;
+}
+QMenuBar::item:selected{
+	background-color: rgba(240, 100, 10, 25);
+}
+
 QMenuBar:disabled{
 	background-color: #303340;
 	color: dark-gray;
@@ -18,7 +25,6 @@ QMenuBar:disabled{
 /* ---------------------------- QMenu ---------------------------- */
 QMenu
 {
-	background-color: #303340;
 	color: #fff;
 }
 
@@ -136,6 +142,14 @@ QTreeView::item:selected, QTreeView::item:hover:selected
 	margin-right:10px;
 }
 
+/* ---------------------------- QListWidget ---------------------------- */
+QListWidget::item:selected, QListWidget::item:hover:selected
+{
+	color: #fff;
+	border:2px solid #eb7a02;
+	margin-right:10px;
+}
+
 /* ---------------------------- QLabel ---------------------------- */
 QLabel
 {
diff --git a/graphic/widgets/attribute_editor.py b/graphic/widgets/attribute_editor.py
index dc2dd70..9a332ab 100644
--- a/graphic/widgets/attribute_editor.py
+++ b/graphic/widgets/attribute_editor.py
@@ -78,10 +78,8 @@ def paintEvent(self, event: QtGui.QPaintEvent) -> None:
         )
 
         # Shadow
-        qp.setPen(QtGui.QPen(QtGui.QColor("black"), 2))
-        qp.drawLine(
-            QtCore.QLine(12, self.height() - 2, self.width() - 12, self.height() - 2)
-        )
+        qp.setPen(QtGui.QPen(QtGui.QColor(0, 0, 0, 130), 5))
+        qp.drawLine(QtCore.QLine(12, self.height(), self.width() - 12, self.height()))
 
         # End
         qp.end()
@@ -253,13 +251,19 @@ def represent_attribute(self, attr):
 
         self.grid_layout.addWidget(attrib_value_le, self.row_count, 1, 1, 1)
 
-        copy_btn = QtWidgets.QToolButton()
-        copy_btn.setIcon(QtGui.QIcon("icons:CopyFile.png"))
-        copy_btn.setToolTip("Copy this value to clipboard")
-        copy_btn.clicked.connect(
-            lambda: QtWidgets.QApplication.clipboard().setText(attrib_value_le.text())
-        )
-        self.grid_layout.addWidget(copy_btn, self.row_count, 2, 1, 1)
+        if attr.get_datatype_str() not in [
+            "Run",
+            "RunLoop",
+        ]:
+            copy_btn = QtWidgets.QToolButton()
+            copy_btn.setIcon(QtGui.QIcon("icons:clipboard.svg"))
+            copy_btn.setToolTip("Copy this value to clipboard")
+            copy_btn.clicked.connect(
+                lambda: QtWidgets.QApplication.clipboard().setText(
+                    attrib_value_le.text()
+                )
+            )
+            self.grid_layout.addWidget(copy_btn, self.row_count, 2, 1, 1)
 
         self.row_count += 1
 
diff --git a/graphic/widgets/class_searcher.py b/graphic/widgets/class_searcher.py
index 46b4359..e55d03e 100644
--- a/graphic/widgets/class_searcher.py
+++ b/graphic/widgets/class_searcher.py
@@ -39,7 +39,7 @@ def __init__(self, *args, **kwargs):
 
     def make_connections(self):
         self.search_bar.textChanged.connect(self.filter_classes)
-        self.class_list.itemDoubleClicked.connect(self.send_node_creation_signal)
+        self.class_list.itemClicked.connect(self.send_node_creation_signal)
 
     def reset(self):
         """
@@ -64,13 +64,8 @@ def filter_classes(self):
                 i.setIcon(QtGui.QIcon(icon_path))
                 self.class_list.addItem(i)
 
-    def keyPressEvent(self, event: QtWidgets.QWidget.event):
-        QtWidgets.QWidget.keyPressEvent(self, event)
-
-        modifiers = QtWidgets.QApplication.keyboardModifiers()
-
-        if event.key() == QtCore.Qt.Key_Return and not modifiers:
-            self.send_node_creation_signal()
+        if self.class_list.item(0):
+            self.class_list.item(0).setSelected(True)
 
     def send_node_creation_signal(self):
         """
@@ -82,3 +77,29 @@ def send_node_creation_signal(self):
                 self.class_list.selectedItems()[0].text(),
             )
         self.hide()
+
+    def keyPressEvent(self, event: QtWidgets.QWidget.event):
+        QtWidgets.QWidget.keyPressEvent(self, event)
+
+        modifiers = QtWidgets.QApplication.keyboardModifiers()
+
+        if event.key() == QtCore.Qt.Key_Return and not modifiers:
+            self.send_node_creation_signal()
+
+        elif event.key() == QtCore.Qt.Key_Down and not modifiers:
+            index = self.class_list.indexFromItem(self.class_list.selectedItems()[0])
+            row = index.row()
+            new_selected = self.class_list.item(row + 1)
+            if new_selected:
+                self.class_list.selectedItems()[0].setSelected(False)
+                new_selected.setSelected(True)
+
+        elif event.key() == QtCore.Qt.Key_Up and not modifiers:
+            index = self.class_list.indexFromItem(self.class_list.selectedItems()[0])
+            row = index.row()
+            new_selected = self.class_list.item(row - 1)
+            if new_selected:
+                self.class_list.selectedItems()[0].setSelected(False)
+                new_selected.setSelected(True)
+
+        event.setAccepted(True)
diff --git a/graphic/widgets/main_window.py b/graphic/widgets/main_window.py
index f5dcbab..053c939 100644
--- a/graphic/widgets/main_window.py
+++ b/graphic/widgets/main_window.py
@@ -37,7 +37,7 @@ def __init__(self):
 
         # Add UI paths
         root_dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-        QtCore.QDir.addSearchPath("icons", os.path.join(root_dir_path, "icons"))
+        QtCore.QDir.addSearchPath("icons", os.path.join(root_dir_path, "general_icons"))
         QtCore.QDir.addSearchPath("ui", os.path.join(root_dir_path, "ui"))
 
         # Load UI
@@ -155,7 +155,7 @@ def add_scenes_recursive(entries_dict: dict, menu: QtWidgets.QMenu):
             for key in entries_dict:
                 nice_name = key.replace("scene_lib", "").title().replace("_", " ")
                 libs_menu = menu.addMenu(nice_name)
-                libs_menu.setIcon(QtGui.QIcon("icons:folder.png"))
+                libs_menu.setIcon(QtGui.QIcon("icons:folder.svg"))
                 scenes_list = entries_dict[key]
                 for elem in scenes_list:
                     if isinstance(elem, dict):
@@ -174,7 +174,9 @@ def add_scenes_recursive(entries_dict: dict, menu: QtWidgets.QMenu):
 
         file_menu = menu.addMenu("&File")
         new_scene_action = QtWidgets.QAction("Clear workspace", self)
-        new_scene_action.setIcon(QtGui.QIcon("icons:clear.png"))
+        new_scene_action.setIcon(
+            QtGui.QIcon("icons:clear.png")
+        )  # TODO investigate if extensions can be removed
         new_scene_action.triggered.connect(self.clear_workspace)
         file_menu.addAction(new_scene_action)
         save_scene_action = QtWidgets.QAction("Save current scene as", self)
@@ -186,12 +188,12 @@ def add_scenes_recursive(entries_dict: dict, menu: QtWidgets.QMenu):
         load_scene_action.triggered.connect(self.load_scene)
         file_menu.addAction(load_scene_action)
 
-        scene_menu = menu.addMenu("&Scene")
+        scene_menu = menu.addMenu("&Scene library")
         add_scenes_recursive(all_scenes, scene_menu)
 
         window_menu = menu.addMenu("&Window")
         show_attr_editor = QtWidgets.QAction("Show attribute editor", self)
-        show_attr_editor.setIcon(QtGui.QIcon("icons:eye.png"))
+        show_attr_editor.setIcon(QtGui.QIcon("icons:eye.svg"))
         show_attr_editor.triggered.connect(self.attr_editr_dock.show)
         window_menu.addAction(show_attr_editor)
 
diff --git a/lib/base_node_lib/contexts_general_library/EnvironToYmlCtx.ctx b/lib/base_node_lib/contexts_general_library/EnvironToYmlCtx.ctx
index ca973af..3d4a6f3 100644
--- a/lib/base_node_lib/contexts_general_library/EnvironToYmlCtx.ctx
+++ b/lib/base_node_lib/contexts_general_library/EnvironToYmlCtx.ctx
@@ -43,5 +43,5 @@ connections:
 - TextFileExtensionSelect_2.out_str -> CreateTempFile_1.suffix
 
 
-# Context modified at: 2024-04-12 13:39:22.998043
-# Modified by: jaime.rvq
\ No newline at end of file
+# Context modified at: 2024-07-09 10:04:08.759331
+# Modified by: Jaime
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/casting_nodes.py b/lib/base_node_lib/nodes_general_library/casting.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/casting_nodes.py
rename to lib/base_node_lib/nodes_general_library/casting.py
diff --git a/lib/base_node_lib/nodes_general_library/special_context_nodes.py b/lib/base_node_lib/nodes_general_library/context_special_nodes.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/special_context_nodes.py
rename to lib/base_node_lib/nodes_general_library/context_special_nodes.py
diff --git a/lib/base_node_lib/nodes_general_library/data_science.py b/lib/base_node_lib/nodes_general_library/data_science.py
new file mode 100644
index 0000000..918bcad
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/data_science.py
@@ -0,0 +1,52 @@
+# -*- coding: UTF-8 -*-
+__author__ = "Jaime Rivera <jaime.rvq@gmail.com>"
+__copyright__ = "Copyright 2022, Jaime Rivera"
+__credits__ = []
+__license__ = "MIT License"
+
+
+import polars as pl
+
+from all_nodes.logic.logic_node import GeneralLogicNode
+from all_nodes import utils
+
+
+LOGGER = utils.get_logger(__name__)
+
+
+class PolarsCsv(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_csv_filepath": {"type": str},
+    }
+
+    OUTPUTS_DICT = {"out_dataframe": {"type": pl.DataFrame}}
+
+    def run(self):
+        import os
+
+        in_csv_filepath = self.get_attribute_value("in_csv_filepath")
+
+        if not os.path.isfile(in_csv_filepath):
+            self.fail("CSV file {} does not exist!".format(in_csv_filepath))
+            return
+
+        self.set_output("out_dataframe", pl.read_csv(in_csv_filepath))
+
+
+class PolarsParquet(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_parquet_filepath": {"type": str},
+    }
+
+    OUTPUTS_DICT = {"out_dataframe": {"type": pl.DataFrame}}
+
+    def run(self):
+        import os
+
+        in_parquet_filepath = self.get_attribute_value("in_parquet_filepath")
+
+        if not os.path.isfile(in_parquet_filepath):
+            self.fail("Parquet file {} does not exist!".format(in_parquet_filepath))
+            return
+
+        self.set_output("out_dataframe", pl.read_parquet(in_parquet_filepath))
diff --git a/lib/base_node_lib/nodes_general_library/datetime_nodes.py b/lib/base_node_lib/nodes_general_library/datetime.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/datetime_nodes.py
rename to lib/base_node_lib/nodes_general_library/datetime.py
diff --git a/lib/base_node_lib/nodes_general_library/debug_nodes.py b/lib/base_node_lib/nodes_general_library/debug.py
similarity index 80%
rename from lib/base_node_lib/nodes_general_library/debug_nodes.py
rename to lib/base_node_lib/nodes_general_library/debug.py
index 3b71ca0..2eeb6c8 100644
--- a/lib/base_node_lib/nodes_general_library/debug_nodes.py
+++ b/lib/base_node_lib/nodes_general_library/debug.py
@@ -101,34 +101,3 @@ def run(self):
 
         self.set_output("out_total", total)
         self.set_attribute_value("internal_str", f"Total: {total}")
-
-
-class StringPreview(GeneralLogicNode):
-    INPUTS_DICT = {
-        "in_str": {"type": str},
-    }
-
-    INTERNALS_DICT = {
-        "internal_str": {"type": str, "gui_type": PreviewsGUI.STR_PREVIEW},
-    }
-
-    def run(self):
-        self.set_attribute_value("internal_str", self.get_attribute_value("in_str"))
-
-
-class MultilineStringPreview(GeneralLogicNode):
-    INPUTS_DICT = {
-        "in_str": {"type": str},
-    }
-
-    INTERNALS_DICT = {
-        "internal_multiline_str": {
-            "type": str,
-            "gui_type": PreviewsGUI.MULTILINE_STR_PREVIEW,
-        },
-    }
-
-    def run(self):
-        self.set_attribute_value(
-            "internal_multiline_str", self.get_attribute_value("in_str")
-        )
diff --git a/lib/base_node_lib/nodes_general_library/environment_nodes.py b/lib/base_node_lib/nodes_general_library/environment.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/environment_nodes.py
rename to lib/base_node_lib/nodes_general_library/environment.py
diff --git a/lib/base_node_lib/nodes_general_library/file_extension_nodes.py b/lib/base_node_lib/nodes_general_library/file_extension.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/file_extension_nodes.py
rename to lib/base_node_lib/nodes_general_library/file_extension.py
diff --git a/lib/base_node_lib/nodes_general_library/file_reading_nodes.py b/lib/base_node_lib/nodes_general_library/file_reading.py
similarity index 62%
rename from lib/base_node_lib/nodes_general_library/file_reading_nodes.py
rename to lib/base_node_lib/nodes_general_library/file_reading.py
index 69c9552..8a27724 100644
--- a/lib/base_node_lib/nodes_general_library/file_reading_nodes.py
+++ b/lib/base_node_lib/nodes_general_library/file_reading.py
@@ -29,9 +29,7 @@ def run(self):
         in_json_filepath = self.get_attribute_value("in_json_filepath")
 
         if not os.path.isfile(in_json_filepath):
-            self.fail(
-                "Json file {} does not exist! Cannot read it".format(in_json_filepath)
-            )
+            self.fail("Json file {} does not exist!".format(in_json_filepath))
             return
 
         with open(in_json_filepath, "r") as json_file:
@@ -65,10 +63,36 @@ def run(self):
         yaml_filepath = self.get_attribute_value("yaml_filepath")
 
         if not os.path.isfile(yaml_filepath):
-            self.fail(
-                "Yaml file {} does not exist! Cannot read it".format(yaml_filepath)
-            )
+            self.fail("Yaml file {} does not exist!".format(yaml_filepath))
             return
 
         with open(yaml_filepath, "r") as y:
             self.set_output("out_dict", yaml.safe_load(y))
+
+
+class CsvToTable(GeneralLogicNode):
+    INPUTS_DICT = {
+        "csv_filepath": {"type": str},
+        "delimiter": {"type": str, "optional": True},
+    }
+
+    OUTPUTS_DICT = {"out_table": {"type": list}}
+
+    def run(self):
+        import os
+        import csv
+
+        csv_filepath = self.get_attribute_value("csv_filepath")
+        delimiter = self.get_attribute_value("delimiter") or ","
+
+        if not os.path.isfile(csv_filepath):
+            self.fail("CSV file {} does not exist!".format(csv_filepath))
+            return
+
+        out_table = []
+        with open(csv_filepath, newline="") as csvfile:
+            reader = csv.reader(csvfile, delimiter=delimiter, quotechar="|")
+            for row in reader:
+                out_table.append(row)
+
+        self.set_output("out_table", out_table)
diff --git a/lib/base_node_lib/nodes_general_library/file_writing_nodes.py b/lib/base_node_lib/nodes_general_library/file_writing.py
similarity index 83%
rename from lib/base_node_lib/nodes_general_library/file_writing_nodes.py
rename to lib/base_node_lib/nodes_general_library/file_writing.py
index f243507..a69906e 100644
--- a/lib/base_node_lib/nodes_general_library/file_writing_nodes.py
+++ b/lib/base_node_lib/nodes_general_library/file_writing.py
@@ -63,6 +63,22 @@ def run(self):
                 file.write(str(elem) + "\n")
 
 
+class TableToCsv(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_table": {"type": list},
+        "csv_filepath_to_write": {"type": str},
+    }
+
+    def run(self):
+        import csv
+
+        in_table = self.get_attribute_value("in_table")
+        csv_filepath_to_write = self.get_attribute_value("csv_filepath_to_write")
+        with open(csv_filepath_to_write, "w", newline="") as f:
+            writer = csv.writer(f)
+            writer.writerows(in_table)
+
+
 class CreateTempFile(GeneralLogicNode):
     NICE_NAME = "Create temp file"
 
diff --git a/lib/base_node_lib/nodes_general_library/flow_control_nodes.py b/lib/base_node_lib/nodes_general_library/flow_control.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/flow_control_nodes.py
rename to lib/base_node_lib/nodes_general_library/flow_control.py
diff --git a/lib/base_node_lib/nodes_general_library/folder_management_nodes.py b/lib/base_node_lib/nodes_general_library/folder_management.py
similarity index 95%
rename from lib/base_node_lib/nodes_general_library/folder_management_nodes.py
rename to lib/base_node_lib/nodes_general_library/folder_management.py
index 163d91b..220487e 100644
--- a/lib/base_node_lib/nodes_general_library/folder_management_nodes.py
+++ b/lib/base_node_lib/nodes_general_library/folder_management.py
@@ -27,7 +27,8 @@ def run(self):
         dest_folder = self.get_attribute_value("dest_folder")
 
         if platform.system() == "Windows":
-            subprocess.Popen(["robocopy", src_folder, dest_folder, "/E", "/MIR"])
+            s = subprocess.Popen(["robocopy", src_folder, dest_folder, "/E", "/MIR"])
+            s.wait()
         else:
             self.fail("Not implemented!")
 
diff --git a/lib/base_node_lib/nodes_general_library/general_input_nodes.py b/lib/base_node_lib/nodes_general_library/general_input.py
similarity index 100%
rename from lib/base_node_lib/nodes_general_library/general_input_nodes.py
rename to lib/base_node_lib/nodes_general_library/general_input.py
diff --git a/lib/base_node_lib/nodes_general_library/general_nodes.py b/lib/base_node_lib/nodes_general_library/general_nodes.py
deleted file mode 100644
index 4248a33..0000000
--- a/lib/base_node_lib/nodes_general_library/general_nodes.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: UTF-8 -*-
-__author__ = "Jaime Rivera <jaime.rvq@gmail.com>"
-__copyright__ = "Copyright 2022, Jaime Rivera"
-__credits__ = []
-__license__ = "MIT License"
-
-
-from all_nodes.logic.logic_node import GeneralLogicNode
-from all_nodes import utils
-
-
-LOGGER = utils.get_logger(__name__)
-
-
-class GetDictKey(GeneralLogicNode):
-    NICE_NAME = "Get dict key"
-    HELP = "Get given key from a dictionary"
-
-    INPUTS_DICT = {
-        "in_dict": {"type": dict},
-        "key": {"type": str},
-    }
-
-    OUTPUTS_DICT = {"out": {"type": object}}
-
-    def run(self):
-        in_dict = self.get_attribute_value("in_dict")
-        key = self.get_attribute_value("key")
-        if key not in in_dict:
-            self.fail("Key '{}' not present in input dict {}".format(key, in_dict))
-            return
-        self.set_output("out", in_dict[key])
-
-
-class RegexMatch(GeneralLogicNode):
-    INPUTS_DICT = {
-        "in_str": {"type": str},
-        "pattern": {"type": str},
-    }
-
-    OUTPUTS_DICT = {"match": {"type": bool}}
-
-    def run(self):
-        import re
-
-        in_str = self.get_attribute_value("in_str")
-        pattern = self.get_attribute_value("pattern")
-
-        match = re.match(pattern, in_str)
-        self.set_output("match", match is not None)
-
-
-class SetDictKey(GeneralLogicNode):
-    NICE_NAME = "Set dict key"
-    HELP = "Set a key in a dictionary"
-
-    INPUTS_DICT = {
-        "in_dict": {"type": dict},
-        "key": {"type": str},
-        "new_value": {"type": object},
-    }
-
-    OUTPUTS_DICT = {"out_dict": {"type": dict}}
-
-    def run(self):
-        in_dict = self.get_attribute_value("in_dict")
-        key = self.get_attribute_value("key")
-        new_value = self.get_attribute_value("new_value")
-
-        in_dict[key] = new_value
-        self.set_output("out_dict", in_dict)
-
-
-class StartFile(GeneralLogicNode):
-    INPUTS_DICT = {
-        "file_path": {"type": str},
-    }
-
-    def run(self):
-        import os
-        import platform
-        import subprocess
-
-        file_path = self.get_attribute_value("file_path")
-        if not os.path.exists(file_path):
-            self.fail("File {} does not exist!".format(file_path))
-            return
-
-        platform_name = platform.system().lower()
-        if "windows" in platform_name:
-            os.startfile(file_path)
-        elif platform_name in ["linux", "ubuntu"]:
-            subprocess.call(["xdg-open", file_path])
-        elif platform_name in ["dawrin"]:
-            subprocess.call(["open", file_path])
-        else:
-            self.fail("Not sure how to open a file in {}...".format(platform_name))
-            return
-
-
-class LaunchSubprocess(GeneralLogicNode):
-    INPUTS_DICT = {
-        "subprocess_str": {"type": str},
-    }
-
-    def run(self):
-        import subprocess
-
-        subprocess_str = self.get_attribute_value("subprocess_str")
-        subprocess.run(subprocess_str, shell=True)
diff --git a/lib/base_node_lib/nodes_general_library/general_preview.py b/lib/base_node_lib/nodes_general_library/general_preview.py
new file mode 100644
index 0000000..0535dea
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/general_preview.py
@@ -0,0 +1,61 @@
+__author__ = "Jaime Rivera <jaime.rvq@gmail.com>"
+__copyright__ = "Copyright 2022, Jaime Rivera"
+__credits__ = []
+__license__ = "MIT License"
+
+
+from all_nodes.constants import PreviewsGUI
+from all_nodes.logic.logic_node import GeneralLogicNode
+from all_nodes import utils
+
+
+LOGGER = utils.get_logger(__name__)
+
+
+class StringPreview(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_str": {"type": str},
+    }
+
+    INTERNALS_DICT = {
+        "internal_str": {"type": str, "gui_type": PreviewsGUI.STR_PREVIEW},
+    }
+
+    def run(self):
+        self.set_attribute_value("internal_str", self.get_attribute_value("in_str"))
+
+
+class MultilineStringPreview(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_str": {"type": str},
+    }
+
+    INTERNALS_DICT = {
+        "internal_multiline_str": {
+            "type": str,
+            "gui_type": PreviewsGUI.MULTILINE_STR_PREVIEW,
+        },
+    }
+
+    def run(self):
+        self.set_attribute_value(
+            "internal_multiline_str", self.get_attribute_value("in_str")
+        )
+
+
+class DictPreview(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_dict": {"type": dict},
+    }
+
+    INTERNALS_DICT = {
+        "internal_multiline_dict": {
+            "type": dict,
+            "gui_type": PreviewsGUI.DICT_PREVIEW,
+        },
+    }
+
+    def run(self):
+        self.set_attribute_value(
+            "internal_multiline_dict", self.get_attribute_value("in_dict")
+        )
diff --git a/lib/base_node_lib/nodes_general_library/icons/BasicBreaker.svg b/lib/base_node_lib/nodes_general_library/icons/BasicBreaker.svg
new file mode 100644
index 0000000..7c83ba1
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/BasicBreaker.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--gis" preserveAspectRatio="xMidYMid meet"><path d="M60.713 37.459a3.67 3.67 0 0 0-1.012.125l8.096 30.213L37.584 59.7c-.717 2.676 1.72 5.637 5.467 6.64l26.23 6.993l2.365 8.83a7.132 7.132 0 0 0-.494.004a2 2 0 0 0-1.107-.023a2 2 0 0 0-.95.574c-1.498.77-2.672 2.037-3.23 3.613c-.681 1.927-.732 4.173-.125 6.438c.607 2.264 1.775 4.183 3.328 5.511c1.554 1.328 3.644 2.09 5.713 1.535c2.07-.554 3.497-2.258 4.178-4.185c.681-1.927.734-4.173.127-6.438c-.29-1.08-.71-2.08-1.236-2.976l-3.041-11.408l11.408 3.04c.896.527 1.895.947 2.976 1.237c2.265.607 4.511.554 6.438-.127c1.927-.681 3.63-2.108 4.185-4.178c.555-2.07-.207-4.16-1.535-5.713c-1.328-1.553-3.247-2.72-5.511-3.328c-2.265-.607-4.511-.556-6.438.125c-1.576.558-2.843 1.732-3.613 3.23a2 2 0 0 0-.574.95a2 2 0 0 0 .023 1.107c-.008.166-.007.33-.004.494l-8.83-2.365l-6.992-26.23c-.878-3.278-3.256-5.554-5.63-5.592zm28.793 31.87a8.006 8.006 0 0 1 2.228.275c1.548.414 2.795 1.232 3.506 2.064c.711.832.86 1.53.713 2.078c-.147.55-.622 1.077-1.654 1.442c-1.032.364-2.522.45-4.07.035c-1.548-.415-2.795-1.235-3.506-2.067c-.711-.832-.862-1.527-.715-2.076c.147-.549.624-1.076 1.656-1.441a5.974 5.974 0 0 1 1.842-.31zM71.52 85.956c.466.013 1.012.232 1.636.766c.832.71 1.652 1.958 2.067 3.506c.414 1.548.33 3.038-.035 4.07c-.365 1.032-.893 1.507-1.442 1.654c-.549.147-1.246-.002-2.078-.713c-.832-.71-1.65-1.958-2.064-3.506c-.415-1.548-.33-3.038.035-4.07c.365-1.032.892-1.51 1.441-1.656c.137-.037.284-.055.44-.051z" fill="#ff0d0d"></path><path d="M64.207 0a3.5 3.5 0 0 0-3.426 3.252l-1.103 15.48L48.5 27.03a12.349 12.349 0 0 0-7.467-2.521c-6.89 0-12.55 5.66-12.55 12.55c0 1.494.28 2.924.767 4.256L12.283 53.906a3.5 3.5 0 0 0-1.242 1.727L.171 88.994a3.5 3.5 0 0 0 2.245 4.412a3.5 3.5 0 0 0 4.412-2.244l10.524-32.299l16.03-11.896c2.125 1.647 4.778 2.64 7.651 2.64c6.651 0 12.106-5.287 12.479-11.851a3.5 3.5 0 0 0 .07-.697a3.5 3.5 0 0 0-.072-.707a12.488 12.488 0 0 0-.805-3.727l12.436-9.229a3.5 3.5 0 0 0 1.406-2.562l1.217-17.086A3.5 3.5 0 0 0 64.52.01a3.5 3.5 0 0 0-.314-.01zM41.033 31.508c3.107 0 5.549 2.444 5.549 5.55c0 3.107-2.442 5.55-5.549 5.55c-3.106 0-5.55-2.443-5.55-5.55c0-3.106 2.444-5.55 5.55-5.55z" fill="#000000"></path><path d="M14.906 3.389l-3.742 3.314l6.629 7.486l3.744-3.314l-6.63-7.486zm9.946 11.23l-3.745 3.315l6.631 7.486l3.742-3.315l-6.628-7.486zm29.834 33.688l-3.745 3.316l6.631 7.486l3.742-3.316l-6.628-7.486z" fill="#000000" fill-rule="evenodd"></path></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/BasicFor.png b/lib/base_node_lib/nodes_general_library/icons/BasicFor.png
deleted file mode 100644
index 6050baa..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/BasicFor.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/BasicIf.png b/lib/base_node_lib/nodes_general_library/icons/BasicIf.png
deleted file mode 100644
index 79268f0..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/BasicIf.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/BasicIf.svg b/lib/base_node_lib/nodes_general_library/icons/BasicIf.svg
new file mode 100644
index 0000000..f6572d4
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/BasicIf.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<path class="st0" d="M1.7,10.9v2h15.5v-2H1.7z"/>
+<path class="st0" d="M12.9,17.9l1.4-1.4l1.8,1.8v-4.4h2v4.4l1.8-1.8l1.4,1.4l-4.2,4.2L12.9,17.9z"/>
+<path class="st0" d="M21.4,5.9L20,7.4l-1.8-1.8v4.4h-2V5.5l-1.8,1.8l-1.4-1.4l4.2-4.2L21.4,5.9z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/BoolInput.png b/lib/base_node_lib/nodes_general_library/icons/BoolInput.png
deleted file mode 100644
index 9192cff..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/BoolInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/BoolInput.svg b/lib/base_node_lib/nodes_general_library/icons/BoolInput.svg
new file mode 100644
index 0000000..ce1794e
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/BoolInput.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<path class="st0" d="M592,592c-106,0-192-86-192-192s86-192,192-192s192,86,192,192C783.9,506,698,591.9,592,592z M592,262.9
+	c-75.7,0-137.1,61.4-137.1,137.1S516.3,537.1,592,537.1S729.1,475.7,729.1,400C729.1,324.3,667.7,262.9,592,262.9z"/>
+<circle class="st0" cx="208" cy="400" r="192"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/CopyFile.png b/lib/base_node_lib/nodes_general_library/icons/CopyFile.png
deleted file mode 100644
index d578932..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/CopyFile.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/CopyFile.svg b/lib/base_node_lib/nodes_general_library/icons/CopyFile.svg
new file mode 100644
index 0000000..9135052
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/CopyFile.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 457.4 457.4" style="enable-background:new 0 0 457.4 457.4;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#40C1B4;}
+	.st1{fill:#9AE2DD;}
+</style>
+<g>
+	<g id="XMLID_39_">
+		<g>
+			<polygon class="st0" points="441.3,97.2 441.3,448.4 194.9,448.4 194.9,437.6 430.5,437.6 430.5,97.2 			"/>
+			<polygon class="st0" points="421.5,77.3 421.5,428.6 175.1,428.6 175.1,417.8 410.7,417.8 410.7,77.3 			"/>
+			<polygon class="st1" points="401.7,57.5 401.7,408.8 155.3,408.8 155.3,369.2 367.3,369.2 367.3,360.2 271.5,360.2 271.5,339.9 
+				367.3,339.9 367.3,330.9 271.5,330.9 271.5,310.5 367.3,310.5 367.3,301.5 271.5,301.5 271.5,281.1 367.3,281.1 367.3,272.1 
+				271.5,272.1 271.5,251.7 367.3,251.7 367.3,242.7 271.5,242.7 271.5,222.3 367.3,222.3 367.3,213.3 271.5,213.3 271.5,166.1 
+				367.3,166.1 367.3,157.1 271.5,157.1 271.5,57.5 			"/>
+			<polygon class="st0" points="82.4,15.4 82.4,75.4 22.4,75.4 			"/>
+			<path class="st1" d="M262.5,9v351.2H16V84.4h75.4V9H262.5z M228.1,316.9v-9H50.5v9H228.1z M228.1,287.5v-9H50.5v9H228.1z
+				 M228.1,258.1v-9H50.5v9H228.1z M228.1,228.7v-9H50.5v9H228.1z M228.1,199.3v-9H50.5v9H228.1z M228.1,170v-9H50.5v9H228.1z
+				 M228.1,113.8v-9H50.5v9H228.1z"/>
+			<path d="M450.3,88.2v369.2H185.9v-19.8h-19.8v-19.8h-19.8v-48.5H7V78L85,0h186.5v48.5h139.2v19.8h19.8v19.8
+				C430.5,88.1,450.3,88.1,450.3,88.2z M441.3,448.4V97.2h-10.8v340.4H194.9v10.8H441.3z M421.5,428.6V77.3h-10.8v340.4H175.1v10.8
+				H421.5z M401.7,408.8V57.5H271.5v99.6h95.8v9h-95.8v47.2h95.8v9h-95.8v20.4h95.8v9h-95.8v20.4h95.8v9h-95.8v20.4h95.8v9h-95.8
+				v20.4h95.8v9h-95.8v20.4h95.8v9h-212v39.5L401.7,408.8L401.7,408.8z M262.5,360.2V9H91.4v75.4H16v275.9L262.5,360.2L262.5,360.2z
+				 M82.4,75.4v-60l-60,60H82.4z"/>
+			<rect x="50.5" y="307.9" width="177.6" height="9"/>
+			<rect x="50.5" y="278.5" width="177.6" height="9"/>
+			<rect x="50.5" y="249.1" width="177.6" height="9"/>
+			<rect x="50.5" y="219.7" width="177.6" height="9"/>
+			<rect x="50.5" y="190.3" width="177.6" height="9"/>
+			<rect x="50.5" y="161" width="177.6" height="9"/>
+			<rect x="50.5" y="104.8" width="177.6" height="9"/>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/CopyFoldersRecursive.png b/lib/base_node_lib/nodes_general_library/icons/CopyFoldersRecursive.png
deleted file mode 100644
index fac41b7..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/CopyFoldersRecursive.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/CopyFoldersRecursive.svg b/lib/base_node_lib/nodes_general_library/icons/CopyFoldersRecursive.svg
new file mode 100644
index 0000000..b17e487
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/CopyFoldersRecursive.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1"
+	 id="Layer_1" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg"
+	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 128 128"
+	 style="enable-background:new 0 0 128 128;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFD78F;stroke:#000000;stroke-width:4;stroke-miterlimit:10;}
+</style>
+<path class="st0" d="M17.2,16c-3.4,0-6.1,2.7-6.1,6.1v10.8v9.2v33.3c0,3.4,2.7,6.1,6.1,6.1h80.3c3.4,0,6.1-2.7,6.1-6.1V32.9
+	c0-3.4-2.7-6-6.1-6.1H48.7v-4.7c0-3.4-2.7-6.1-6.1-6.1H17.2z"/>
+<path class="st0" d="M44.9,55.7c-2,0-3.6,1.6-3.6,3.7v6.5v5.5v20c0,2,1.6,3.6,3.6,3.6h48.2c2,0,3.7-1.6,3.7-3.6V65.9
+	c0-2-1.6-3.6-3.7-3.6H63.8v-2.8c0-2-1.6-3.7-3.6-3.7H44.9z"/>
+<path class="st0" d="M77,86c-1.2,0-2.2,1-2.2,2.2v3.9v3.3v12c0,1.2,1,2.2,2.2,2.2H106c1.2,0,2.2-1,2.2-2.2V92.1c0-1.2-1-2.2-2.2-2.2
+	H88.4v-1.7c0-1.2-1-2.2-2.2-2.2H77z"/>
+<path class="st0" d="M96.4,104.3c-0.7,0-1.3,0.6-1.3,1.3v2.3v2v7.2c0,0.7,0.6,1.3,1.3,1.3h17.3c0.7,0,1.3-0.6,1.3-1.3v-9.2
+	c0-0.7-0.6-1.3-1.3-1.3h-10.6v-1c0-0.7-0.6-1.3-1.3-1.3H96.4z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/CreateTempFile.png b/lib/base_node_lib/nodes_general_library/icons/CreateTempFile.png
deleted file mode 100644
index 2a57cd2..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/CreateTempFile.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/CreateTempFile.svg b/lib/base_node_lib/nodes_general_library/icons/CreateTempFile.svg
new file mode 100644
index 0000000..5c17530
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/CreateTempFile.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 32 32" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg"><title>folder_type_temp</title><path d="M27.5,5.5H18.2L16.1,9.7H4.4V26.5H29.6V5.5Zm0,4.2H19.3l1.1-2.1h7.1Z" style="fill:#34756b"/><path d="M21,31A10,10,0,1,1,31,21,10.011,10.011,0,0,1,21,31Zm0-18.182A8.182,8.182,0,1,0,29.182,21,8.191,8.191,0,0,0,21,12.818Z" style="fill:#5fc1b3"/><path d="M21.909,21.909H20.841a.75.75,0,0,1-.75-.75V14.477a.75.75,0,0,1,.75-.75h.318a.75.75,0,0,1,.75.75Z" style="fill:#5fc1b3"/><path d="M27.523,21.909H20.841a.75.75,0,0,1-.75-.75V20.091h7.432a.75.75,0,0,1,.75.75v.318A.75.75,0,0,1,27.523,21.909Z" style="fill:#5fc1b3"/></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/CsvToTable.svg b/lib/base_node_lib/nodes_general_library/icons/CsvToTable.svg
new file mode 100644
index 0000000..85165ed
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/CsvToTable.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#ED1C24;}
+	.st1{fill:#FFFFFF;}
+</style>
+<path class="st0" d="M7.5,5h35C43.9,5,45,6.1,45,7.5v35c0,1.4-1.1,2.5-2.5,2.5h-35C6.1,45,5,43.9,5,42.5v-35C5,6.1,6.1,5,7.5,5z"/>
+<g>
+	<path class="st1" d="M29.8,40.3l-1.4-1.6c1-0.8,1.9-1.7,2.8-2.7c0.8-1,1.3-1.9,1.6-2.9c-0.8-0.5-1.4-0.9-1.8-1.2
+		c-0.5-0.3-0.8-0.7-1-1c-0.2-0.4-0.3-0.8-0.3-1.4c0-0.3,0.1-0.7,0.3-1.1c0.2-0.4,0.5-0.7,0.9-1c0.4-0.3,0.9-0.4,1.4-0.4
+		c1.3,0,2.2,0.4,2.8,1.3c0.6,0.8,0.8,1.9,0.8,3.3c0,1-0.2,1.9-0.6,2.8s-1,1.7-1.6,2.4c-0.7,0.7-1.3,1.4-2,2
+		C30.9,39.5,30.3,40,29.8,40.3z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/DictInput.png b/lib/base_node_lib/nodes_general_library/icons/DictInput.png
deleted file mode 100644
index 2089c59..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/DictInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/DictInput.svg b/lib/base_node_lib/nodes_general_library/icons/DictInput.svg
new file mode 100644
index 0000000..eba44da
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/DictInput.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g>
+	<path class="st0" d="M35.1,36.2V52c0,3.4-1.1,6.1-3.3,8.1c2.2,2,3.3,4.7,3.3,8.1v15.9h12.4c1.1,0,2.1,0.4,2.9,1.2
+		c0.8,0.8,1.2,1.7,1.2,2.9c0,1.1-0.4,2-1.2,2.9c-0.8,0.8-1.8,1.2-2.9,1.2H35.1c-2.2,0-4.1-0.8-5.7-2.5c-1.6-1.6-2.4-3.5-2.4-5.7
+		V68.5c0-1.1-0.4-2.1-1.3-3c-0.8-0.9-1.8-1.3-2.9-1.3h-8.1c-1.1,0-2.1-0.4-2.9-1.2c-0.8-0.8-1.2-1.7-1.2-2.9c0-1.1,0.4-2.1,1.2-2.9
+		c0.8-0.8,1.7-1.2,2.9-1.2h8.1c1.1,0,2.1-0.4,2.9-1.3c0.8-0.9,1.3-1.9,1.3-3V36.1c0-2.1,0.8-4,2.4-5.6c1.6-1.6,3.5-2.4,5.7-2.4h12.4
+		c1.1,0,2.1,0.4,2.9,1.2c0.8,0.8,1.2,1.7,1.2,2.9c0,1.1-0.4,2.1-1.2,2.9c-0.8,0.8-1.7,1.2-2.9,1.2H35.1z"/>
+	<path class="st0" d="M86.3,84.1V68.2c0-3.3,1.1-6,3.2-8.1c-2.2-2-3.2-4.6-3.2-8v-16H73.9c-1.1,0-2.1-0.4-2.9-1.2
+		c-0.8-0.8-1.2-1.7-1.2-2.9c0-1.1,0.4-2,1.2-2.9c0.8-0.8,1.7-1.2,2.9-1.2h12.4c2.2,0,4.1,0.8,5.7,2.5s2.4,3.5,2.4,5.7v15.6
+		c0,1.1,0.4,2.1,1.2,3c0.8,0.9,1.8,1.3,2.9,1.3h8.1c1.1,0,2.1,0.4,2.9,1.2c0.8,0.8,1.2,1.7,1.2,2.9c0,1.2-0.4,2.1-1.2,2.9
+		c-0.8,0.8-1.7,1.2-2.9,1.2h-8.1c-1.2,0-2.1,0.4-2.9,1.3c-0.8,0.9-1.2,1.8-1.2,3v15.7c0,2.1-0.8,3.9-2.4,5.6
+		c-1.6,1.6-3.5,2.5-5.7,2.5H73.9c-1.1,0-2.1-0.4-2.9-1.2c-0.8-0.8-1.2-1.7-1.2-2.9c0-1.1,0.4-2.1,1.2-2.9c0.8-0.8,1.7-1.2,2.9-1.2
+		H86.3z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/DictToYaml.svg b/lib/base_node_lib/nodes_general_library/icons/DictToYaml.svg
index d44ba58..f2eefd5 100644
--- a/lib/base_node_lib/nodes_general_library/icons/DictToYaml.svg
+++ b/lib/base_node_lib/nodes_general_library/icons/DictToYaml.svg
@@ -1,1 +1,11 @@
-<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><defs><style>.cls-1{fill:#f7931e;}.cls-2{fill:#f2f2f2;}.cls-3{font-size:63px;fill:lime;font-family:InkFree, Ink Free;}</style></defs><rect class="cls-1" x="5" y="5" width="40" height="40" rx="2.48"/><path class="cls-2" d="M12,13h8.23L25,21.1,29.86,13H38L28.72,27V37H21.3V27Z"/><text class="cls-3" transform="translate(9.94 104.69)">e</text></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#F7931E;}
+	.st1{fill:#F2F2F2;}
+</style>
+<path class="st0" d="M7.5,5h35C43.9,5,45,6.1,45,7.5v35c0,1.4-1.1,2.5-2.5,2.5h-35C6.1,45,5,43.9,5,42.5v-35C5,6.1,6.1,5,7.5,5z"/>
+<path class="st1" d="M12,13h8.2l4.8,8.1l4.9-8.1H38l-9.3,14v10h-7.4V27L12,13z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/EmptyNode.png b/lib/base_node_lib/nodes_general_library/icons/EmptyNode.png
deleted file mode 100644
index 065396c..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/EmptyNode.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/EmptyNode.svg b/lib/base_node_lib/nodes_general_library/icons/EmptyNode.svg
new file mode 100644
index 0000000..9750e91
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/EmptyNode.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<path class="st0" d="M760.4,39.6c-18.1-18.1-47.4-18.1-65.5,0L594.3,140.2C538.6,98.4,471.1,75.8,400,75.8
+	c-86.8,0-168.2,33.7-229.4,94.8C55.3,286,45.2,467.3,140.2,594.3L39.6,694.9c-18.1,18.1-18.1,47.4,0,65.5
+	c9.1,9.1,20.9,13.6,32.8,13.6s23.7-4.5,32.8-13.6l100.6-100.6c55.7,41.8,123.2,64.4,194.3,64.4c86.8,0,168.2-33.7,229.4-94.8
+	C744.7,514,754.8,332.7,659.8,205.7l100.6-100.6C778.5,87,778.5,57.7,760.4,39.6z M236.2,236.2c43.7-43.6,101.8-67.7,163.8-67.7
+	c46.2,0,90.3,13.4,127.8,38.2L206.7,527.8C147.2,437.9,157,315.3,236.2,236.2z M563.8,563.8C520.2,607.5,462,631.5,400,631.5
+	c-46.2,0-90.3-13.4-127.8-38.2l321.1-321.1C652.8,362.1,643,484.7,563.8,563.8z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/ErrorNode.png b/lib/base_node_lib/nodes_general_library/icons/ErrorNode.png
deleted file mode 100644
index 29ec5b0..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/ErrorNode.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/ErrorNode.svg b/lib/base_node_lib/nodes_general_library/icons/ErrorNode.svg
new file mode 100644
index 0000000..51be623
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/ErrorNode.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FF000D;}
+</style>
+<g>
+	<g>
+		<polygon id="Fill-1" class="st0" points="233.3,66.7 66.7,233.3 66.7,566.7 233.3,733.3 400,733.3 316.7,638 275,638 162,525 
+			162,275 275,162 316.7,162 400,66.7 		"/>
+		<polygon id="Fill-2" class="st0" points="483.3,66.7 400,162 525,162 638,275 638,525 525,638 400,638 483.3,733.3 566.7,733.3 
+			733.3,566.7 733.3,233.3 566.7,66.7 		"/>
+		<polygon id="Fill-3" class="st0" points="400,566.7 316.7,483.3 400,400 316.7,316.7 400,233.3 316.7,233.3 233.3,316.7 
+			233.3,483.3 316.7,566.7 		"/>
+		<polygon id="Fill-4" class="st0" points="483.3,233.3 400,316.7 483.3,400 400,483.3 483.3,566.7 566.7,483.3 566.7,316.7 		"/>
+	</g>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/FailAndErrorNode.png b/lib/base_node_lib/nodes_general_library/icons/FailAndErrorNode.png
deleted file mode 100644
index 0b07588..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/FailAndErrorNode.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/FailAndErrorNode.svg b/lib/base_node_lib/nodes_general_library/icons/FailAndErrorNode.svg
new file mode 100644
index 0000000..0e4057f
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/FailAndErrorNode.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FEFDFC;}
+	.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#3E4749;}
+</style>
+<g id="Page-1">
+	<g id="Artboard" transform="translate(-857.000000, -750.000000)">
+		<g id="_x30_13-Skull" transform="translate(857.000000, 750.000000)">
+			<path id="Fill-1408" class="st0" d="M269.4,34.1C-50.4,101.3-20.8,460,131.5,586.3c118.8,98.6,277.4,74.5,277.4,74.5
+				S392.2,789.7,436,797.3S523.9,648,523.9,648s-1.5,134.6,52.6,122.2c54-12.5,16.5-155.9,16.5-155.9s48.2,143.7,92.1,117.5
+				c43.9-26.2,0.7-174.2,0.7-174.2s54.1,119,91.8,83s-58-182.6-58-182.6S831.9-84,269.4,34.1"/>
+			<g>
+				<path id="Fill-1409_00000104684084538428316140000017854212428932747394_" class="st1" d="M528.1,398.8
+					c-20.2,16.7-21,143.3,9.5,141.2s35.5-56.7,35.5-56.7s35.3,23.6,52.1,7.6C642,475,548.3,382,528.1,398.8"/>
+				<path id="Fill-1410_00000136405843096773649200000014495683188054607506_" class="st1" d="M381.9,249.1
+					C319,212.6,242,281.9,243.5,332.9c2.4,79.4,79.6,167.2,147.6,143.1C459,452,458.1,293.2,381.9,249.1"/>
+				<path id="Fill-1411_00000004548338438305622130000010104598060695772309_" class="st1" d="M614.6,201.8
+					c-42.8-24.8-95.1,22.3-94.1,57c1.6,54,54.2,113.7,100.4,97.3C667,339.8,666.4,231.8,614.6,201.8"/>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/FloatInput.png b/lib/base_node_lib/nodes_general_library/icons/FloatInput.png
deleted file mode 100644
index 8e214f2..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/FloatInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/FloatInput.svg b/lib/base_node_lib/nodes_general_library/icons/FloatInput.svg
new file mode 100644
index 0000000..593ddf9
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/FloatInput.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g>
+	<path class="st0" d="M10.4,72.2h6.3V48h-6.2c-0.6,0-1.1-0.2-1.5-0.6C8.6,47,8.5,46.5,8.5,46c0-0.6,0.2-1.1,0.6-1.5
+		c0.4-0.4,0.9-0.6,1.5-0.6h10.3v28.3h4.1v-8.5c0-0.6,0.2-1,0.6-1.4c0.4-0.4,0.9-0.6,1.5-0.6c0.6,0,1.1,0.2,1.5,0.6
+		c0.4,0.4,0.6,0.9,0.6,1.5v10.6c0,0.6-0.2,1.1-0.6,1.5c-0.4,0.4-0.9,0.6-1.5,0.6H10.4c-0.6,0-1.1-0.2-1.5-0.6
+		c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1,0.6-1.4C9.3,72.4,9.8,72.2,10.4,72.2z"/>
+	<path class="st0" d="M44.4,63.4h4.2c0.6,0,1,0.2,1.4,0.6c0.4,0.4,0.6,0.9,0.6,1.5V69c0,0.6-0.2,1.1-0.6,1.5
+		c-0.4,0.4-0.9,0.6-1.5,0.6h-4.2c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.4v-3.5c0-0.6,0.2-1.1,0.6-1.5
+		C43.3,63.6,43.8,63.4,44.4,63.4z"/>
+	<path class="st0" d="M82.4,76.3H63.8V62.2c0-1.1,0.4-2.1,1.2-2.9c0.8-0.8,1.8-1.2,2.9-1.2h12.5V48H65.7c-0.6,0-1.1-0.2-1.5-0.6
+		c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6h14.6c1.1,0,2.1,0.4,2.9,1.2c0.8,0.8,1.2,1.8,1.2,2.9v10
+		c0,1.2-0.4,2.1-1.2,2.9c-0.8,0.8-1.8,1.2-2.9,1.2H67.9v10.1h14.6c0.6,0,1,0.2,1.4,0.6c0.4,0.4,0.6,0.9,0.6,1.5
+		c0,0.6-0.2,1.1-0.6,1.5C83.4,76.1,83,76.3,82.4,76.3z"/>
+	<path class="st0" d="M112.1,48v7.7c0,1.8-0.6,3.2-1.7,4.3c1.1,1.3,1.7,2.7,1.7,4.2v8c0,1.1-0.4,2.1-1.2,2.9
+		c-0.8,0.8-1.8,1.2-2.9,1.2H93.5c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6
+		H108v-8c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6h-8.3c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5
+		c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6h8.3c0.6,0,1-0.2,1.4-0.6c0.4-0.4,0.6-0.9,0.6-1.5V48H93.4c-0.6,0-1.1-0.2-1.5-0.6
+		c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6H108c1.1,0,2.1,0.4,2.9,1.2
+		C111.7,45.9,112.1,46.9,112.1,48z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/ForEachBegin.svg b/lib/base_node_lib/nodes_general_library/icons/ForEachBegin.svg
new file mode 100644
index 0000000..033ceed
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/ForEachBegin.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg fill="#00bf60" width="800px" height="800px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M20 7v7c0 1.103-.896 2-2 2H2c-1.104 0-2-.897-2-2V7a2 2 0 0 1 2-2h7V3l4 3.5L9 10V8H3v5h14V8h-3V5h4a2 2 0 0 1 2 2z"/></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/ForEachEnd.svg b/lib/base_node_lib/nodes_general_library/icons/ForEachEnd.svg
new file mode 100644
index 0000000..7ff7331
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/ForEachEnd.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg fill="#de7a00" width="800px" height="800px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M20 7v7c0 1.103-.896 2-2 2H2c-1.104 0-2-.897-2-2V7a2 2 0 0 1 2-2h7V3l4 3.5L9 10V8H3v5h14V8h-3V5h4a2 2 0 0 1 2 2z"/></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/GetFolderFromFilepath.svg b/lib/base_node_lib/nodes_general_library/icons/GetFolderFromFilepath.svg
new file mode 100644
index 0000000..1fdd99f
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/GetFolderFromFilepath.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill-rule:evenodd;clip-rule:evenodd;fill:#FFE600;}
+</style>
+<path class="st0" d="M279.6,41.7c0.8,0,1.7,0,2.6,0h1c8,0,13.6,0,19,0.5c23.3,2,45.6,10.5,64,24.7c4.3,3.3,8.3,7,13.9,12.2
+	l13.6,12.7c20,18.6,26.7,24.5,34.4,28.5c4.6,2.4,9.6,4.3,14.7,5.7c8.7,2.3,18.3,2.5,46.5,2.5h10.2c29.4,0,53.7,0,73,2.3
+	c20.1,2.3,38.3,7.5,53.6,20.2c2.5,2.1,4.9,4.3,7.2,6.7c14.1,14.5,19.9,32.2,22.5,51.6c2.5,18.3,2.5,41.1,2.5,68.1v51.3
+	c0,39.2,0,71.4-3.7,96.8c-3.9,26.7-12.2,49.6-31.6,67.6c-19.1,17.8-43,25.2-70.8,28.7c-27,3.4-61.3,3.4-103.8,3.4H425v53.5
+	c30.5,8.6,54.6,32.7,63.2,63.2h245.1c13.8,0,25,11.2,25,25c0,13.8-11.2,25-25,25H488.2c-10.9,38.5-46.3,66.7-88.2,66.7
+	s-77.3-28.2-88.2-66.7H66.7c-13.8,0-25-11.2-25-25c0-13.8,11.2-25,25-25h245.1c8.6-30.5,32.7-54.6,63.2-63.2V525h-23.4
+	c-42.6,0-76.8,0-103.8-3.4c-27.9-3.5-51.7-10.9-70.8-28.7c-19.4-18-27.8-40.9-31.7-67.6c-3.7-25.4-3.7-57.5-3.7-96.8V173.9
+	c0-0.9,0-1.8,0-2.7c0-16.5,0-28.4,2.1-38.9c9.4-46,47.7-80.5,94.6-88.7C249.1,41.7,261.5,41.7,279.6,41.7z M446.7,475
+	c44.7,0,75.8,0,99.3-3c23-2.9,34.8-8.1,43-15.7c7.9-7.4,13.2-17.6,16.2-38.1c3.1-21.4,3.2-49.9,3.2-91.5V279c0-29.2-0.1-48.6-2-63.1
+	c-1.9-13.7-5-19.6-8.9-23.6c-1-1.1-2.1-2.1-3.3-3.1c-4.7-3.9-11.8-7.1-27.4-8.9c-16.1-1.9-37.4-1.9-68.7-1.9h-8.7
+	c-1.1,0-2.1,0-3.2,0c-23.9,0-40.4,0-56.2-4.2c-8.6-2.3-17-5.5-24.9-9.6c-14.5-7.5-26.4-18.5-43.2-34.2c-0.8-0.7-1.5-1.4-2.3-2.1
+	l-12.8-11.9c-6.7-6.2-8.9-8.3-11.2-10c-10.6-8.1-23.7-13.2-37.8-14.5c-3-0.3-6.3-0.3-15.7-0.3c-21.7,0-29.3,0.1-35.2,1.1
+	c-28.6,5-49.3,25.4-54.2,49.4c-1,4.9-1.1,11.3-1.1,31.7v152.8c0,41.6,0.1,70.1,3.2,91.5c3,20.5,8.3,30.7,16.2,38.1
+	c8.2,7.6,20,12.9,43,15.7c23.5,2.9,54.7,3,99.3,3H446.7z M425,250c0-13.8,11.2-25,25-25h100c13.8,0,25,11.2,25,25
+	c0,13.8-11.2,25-25,25H450C436.2,275,425,263.8,425,250z M400,625c-23,0-41.7,18.7-41.7,41.7c0,23,18.7,41.7,41.7,41.7
+	c23,0,41.7-18.7,41.7-41.7C441.7,643.7,423,625,400,625z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/IntInput.png b/lib/base_node_lib/nodes_general_library/icons/IntInput.png
deleted file mode 100644
index 4206336..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/IntInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/IntInput.svg b/lib/base_node_lib/nodes_general_library/icons/IntInput.svg
new file mode 100644
index 0000000..098d404
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/IntInput.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g>
+	<path class="st0" d="M51.3,82.5v19.1c0,2.2-0.8,4-2.3,5.6c-1.5,1.6-3.3,2.4-5.5,2.4c-2.2,0-4-0.8-5.5-2.4c-1.5-1.6-2.3-3.4-2.3-5.6
+		V82.5h-7.9c-2.2,0-4-0.8-5.5-2.3c-1.5-1.5-2.3-3.3-2.3-5.5c0-2.1,0.8-3.9,2.3-5.4c1.5-1.5,3.3-2.3,5.5-2.3h7.7V49.3h-7.7
+		c-2.2,0-4-0.8-5.5-2.3c-1.5-1.5-2.3-3.3-2.3-5.5c0-2.2,0.8-4.1,2.3-5.5c1.5-1.5,3.3-2.2,5.5-2.2h7.9V14.7c0-2.2,0.8-4,2.3-5.5
+		C39.6,7.8,41.4,7,43.6,7c2.1,0,3.9,0.8,5.4,2.3c1.5,1.5,2.3,3.4,2.3,5.4v19.1h15.5V14.7c0-2.2,0.8-4,2.3-5.5
+		C70.6,7.8,72.4,7,74.5,7c2.2,0,4,0.8,5.6,2.3c1.6,1.5,2.4,3.4,2.4,5.4v19.1h7.9c2.1,0,3.9,0.8,5.4,2.3c1.5,1.5,2.3,3.3,2.3,5.5
+		c0,2.2-0.8,4.1-2.5,5.6c-1.7,1.5-3.4,2.3-5.3,2.3h-7.7V67h7.7c2,0,3.8,0.8,5.4,2.3c1.6,1.5,2.4,3.4,2.4,5.4c0,2-0.7,3.8-2.2,5.4
+		c-1.4,1.6-3.3,2.4-5.6,2.4h-7.9v19.1c0,2.2-0.8,4-2.4,5.6c-1.6,1.6-3.4,2.4-5.6,2.4c-2.1,0-3.9-0.8-5.4-2.4
+		c-1.5-1.6-2.3-3.4-2.3-5.6V82.5H51.3z M51.3,49.5V67h15.5V49.5H51.3z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/JsonFromDict.png b/lib/base_node_lib/nodes_general_library/icons/JsonFromDict.png
deleted file mode 100644
index f47c19b..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/JsonFromDict.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/LaunchSubprocess.png b/lib/base_node_lib/nodes_general_library/icons/LaunchSubprocess.png
deleted file mode 100644
index 4b40451..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/LaunchSubprocess.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/LaunchSubprocess.svg b/lib/base_node_lib/nodes_general_library/icons/LaunchSubprocess.svg
new file mode 100644
index 0000000..6c29b91
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/LaunchSubprocess.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g>
+	<rect x="45" y="181" width="703" height="534"/>
+	<path class="st0" d="M742.9,57.1H57.2C25.5,57.1,0,82.7,0,114.4v571.4c0,31.5,25.5,57.1,57.2,57.1h685.7
+		c31.4,0,57.1-25.6,57.1-57.1V114.4C800,82.7,774.3,57.1,742.9,57.1z M273.2,100c15.8,0,28.5,12.8,28.5,28.6
+		c0,15.8-12.8,28.5-28.5,28.5c-15.8,0-28.6-12.8-28.6-28.5C244.6,112.8,257.4,100,273.2,100z M185.7,100c15.8,0,28.6,12.8,28.6,28.6
+		c0,15.8-12.8,28.5-28.6,28.5c-15.8,0-28.6-12.8-28.6-28.5C157.1,112.8,169.9,100,185.7,100z M99.9,100c15.9,0,28.6,12.8,28.6,28.6
+		c0,15.8-12.7,28.5-28.6,28.5c-15.7,0-28.5-12.8-28.5-28.5C71.5,112.8,84.2,100,99.9,100z M742.9,685.8H57.2V200.6h685.7
+		C742.9,200.6,742.9,685.8,742.9,685.8z"/>
+	<path class="st0" d="M434.1,456.7L171.4,591.4v-39.1l223-110.9v-1.1l-223-111v-39.1l262.7,134.1V456.7z"/>
+	<path class="st0" d="M628.5,420.5v36.1H488.7v-36.1H628.5z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/MirrorFolders.svg b/lib/base_node_lib/nodes_general_library/icons/MirrorFolders.svg
new file mode 100644
index 0000000..e749e9a
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/MirrorFolders.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--twemoji" preserveAspectRatio="xMidYMid meet"><path fill="#FFAC33" d="M29 32H7c-.55 0-1-.45-1-1V7c0-.55.45-1 1-1h22c.55 0 1 .45 1 1v24c0 .55-.45 1-1 1z"></path><path fill="#D99E82" d="M8 8h20v22H8z"></path><path fill="#FFD983" d="M28 30H8L28 8z"></path><path fill="#BBDDF5" d="M9 9h18v20H9z"></path><path fill="#F5F8FA" d="M24.231 9L11.769 29H18l9-14.615V9z"></path><path fill="#662113" d="M28 8H7V7h22zM8 30l-1 1V8h1z"></path><path fill="#C1694F" d="M29 31H7l1-1h21zm0-24l-1 1v22h1z"></path><path d="M26.294 5.31s-.163-.587-1.04-1.069c-.594-.327-1.604-.089-1.604-.089s-.323-.834-1.634-1.366C21.066 2.399 20 3 20 3c0-1-.977-2-2-2s-2 1-2 2c0 0-1.066-.601-2.016-.214c-1.31.532-1.634 1.366-1.634 1.366s-1.01-.238-1.604.089c-.876.482-1.04 1.069-1.04 1.069S7.894 6 7 6h22c-.894 0-2.706-.69-2.706-.69zM7 32c.894 0 2.706.414 2.706.414s.163.352 1.04.642c.594.196 1.604.053 1.604.053s.323.5 1.634.82C14.934 34.16 16 33.8 16 33.8c0 .6.977 1.2 2 1.2s2-.6 2-1.2c0 0 1.066.36 2.016.129c1.31-.319 1.634-.82 1.634-.82s1.01.143 1.604-.053c.876-.289 1.04-.642 1.04-.642S28.106 32 29 32H7z" fill="#FFAC33"></path><path d="M9.868 6.375H11A.375.375 0 0 0 11.375 6c0-.317.092-.537.28-.673c.551-.398 1.793-.115 2.227.029a.379.379 0 0 0 .493-.353c.002-.147.056-.628.625-.628c.688 0 1.483.641 1.734.889l.001.001a.375.375 0 0 0 .537-.523l-.001-.001l-.005-.005c-.405-.405-.347-1.037-.157-1.494c.203-.495.587-.867.891-.867s.688.372.892.866c.19.457.248 1.089-.157 1.494l-.005.005l-.001.001a.374.374 0 0 0 .538.523v-.001c.25-.247 1.045-.888 1.733-.888c.569 0 .622.481.625.625a.376.376 0 0 0 .493.356c.433-.143 1.674-.427 2.227-.029c.188.136.28.356.28.673c0 .207.168.375.375.375h1.132a.375.375 0 0 0 0-.75h-.79a1.406 1.406 0 0 0-.559-.907c-.718-.517-1.867-.34-2.489-.19c-.156-.456-.55-.903-1.294-.903c-.43 0-.852.151-1.211.342a2.55 2.55 0 0 0-.204-1.013c-.303-.732-.867-1.222-1.437-1.299a.37.37 0 0 0-.296.001c-.57.077-1.135.567-1.438 1.299a2.547 2.547 0 0 0-.203 1.013c-.36-.192-.781-.343-1.211-.343c-.744 0-1.138.447-1.294.903c-.623-.151-1.775-.326-2.489.19a1.401 1.401 0 0 0-.558.907h-.791a.375.375 0 0 0 0 .75zm16.264 24.95H25c-.207 0-.405.222-.405.429c-.333.283-1.708.214-2.533.076c-.11-.018-.218-.007-.302.063a.334.334 0 0 0-.131.267c-.016.043-.163.165-.629.165c-.896 0-1.823-.456-1.833-.461a.375.375 0 0 0-.334.671c.152.076.22.152.203.225c-.052.223-.521.565-1.035.565s-.983-.343-1.035-.565c-.018-.072.051-.148.203-.225a.374.374 0 0 0 .168-.503a.377.377 0 0 0-.502-.168c-.009.005-.937.461-1.833.461c-.466 0-.614-.122-.625-.125a.372.372 0 0 0-.133-.286a.381.381 0 0 0-.304-.084c-.823.139-2.198.208-2.563-.13a.375.375 0 0 0-.375-.375H9.868a.375.375 0 0 0 0 .75h.848a.864.864 0 0 0 .204.251c.611.517 2.153.38 2.854.287c.164.227.507.462 1.227.462a4.56 4.56 0 0 0 1.226-.187c.002.015.006.029.009.044c.146.619.955 1.143 1.765 1.143s1.619-.523 1.766-1.143l.009-.044c.361.103.791.187 1.226.187c.72 0 1.062-.235 1.227-.462c.699.094 2.243.23 2.854-.287a.848.848 0 0 0 .204-.251h.848a.375.375 0 1 0-.003-.75z" fill="#C1694F"></path></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/MultilineStrInput.png b/lib/base_node_lib/nodes_general_library/icons/MultilineStrInput.png
deleted file mode 100644
index 999924d..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/MultilineStrInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/MultilineStrInput.svg b/lib/base_node_lib/nodes_general_library/icons/MultilineStrInput.svg
new file mode 100644
index 0000000..59f3aa1
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/MultilineStrInput.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g>
+	<path class="st0" d="M24,25.6h8.4c0.5,0,1.1,0.1,2,0.3l0-3c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6H24
+		c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6h8.1c1.8,0,3.3,0.6,4.5,1.9
+		c1.2,1.2,1.9,2.8,1.9,4.5l0.5,16c0,0.6-0.2,1.1-0.6,1.5C38.1,40.8,37.6,41,37,41c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5
+		L31.2,41H24c-1.8,0-3.3-0.6-4.6-1.9c-1.3-1.3-1.9-2.8-1.9-4.6v-2.5c0-1.8,0.6-3.3,1.9-4.6C20.7,26.3,22.2,25.6,24,25.6z M34.6,33.9
+		l-0.1-1.8c0-0.6-0.2-1.1-0.6-1.5C33.5,30.2,33,30,32.4,30H24c-0.6,0-1.1,0.2-1.5,0.6c-0.4,0.4-0.6,0.9-0.6,1.5v2.4
+		c0,0.6,0.2,1.1,0.6,1.5c0.4,0.4,0.9,0.6,1.5,0.6h6L34.6,33.9z"/>
+	<path class="st0" d="M54.3,9.4v10l1.9-1.5c1.2-1,2.4-1.5,3.7-1.5h3.9c1.4,0,2.7,0.5,3.8,1.5l2,1.8c0.6,0.5,1,1.2,1.4,2.1
+		s0.5,1.8,0.5,2.7v8.6c0,0.8-0.2,1.6-0.5,2.5s-0.7,1.5-1.2,1.9l-1.9,1.8c-0.5,0.5-1.2,0.9-2,1.2c-0.9,0.4-1.6,0.5-2.2,0.5h-3.7
+		c-1.8,0-3.7-1-5.8-3v0.8c0,0.6-0.2,1.1-0.6,1.5c-0.4,0.4-0.9,0.6-1.5,0.6c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5V9.4
+		c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6c0.6,0,1.1,0.2,1.5,0.6C54.1,8.3,54.3,8.8,54.3,9.4z M63.5,20.8h-2.9
+		c-0.7,0-1.3,0.2-1.6,0.5l-3.8,3.3c-0.5,0.4-0.7,1.1-0.7,2v4.8c0,0.7,0.3,1.3,0.8,1.8l3.4,2.9c0.5,0.5,1,0.7,1.5,0.7h3.5
+		c0.5,0,0.9-0.2,1.3-0.5l1.7-1.5c0.5-0.3,0.7-0.8,0.7-1.4v-9c0-0.7-0.2-1.3-0.7-1.6L65,21.4C64.6,21,64,20.8,63.5,20.8z"/>
+	<path class="st0" d="M101.7,41h-9.1c-1.6,0-3-0.5-4.1-1.4L84.3,36c-1.3-1.1-2-2.6-2-4.5v-5.6c-0.1-1.8,0.7-3.4,2.2-4.7l3.7-3.2
+		c1.2-1,2.5-1.5,3.9-1.5h9.6c0.6,0,1.1,0.2,1.5,0.6c0.4,0.4,0.6,0.9,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5s-0.9,0.6-1.5,0.6h-9.2
+		c-0.6,0-1.1,0.2-1.7,0.7l-3.4,2.9c-0.6,0.5-0.8,1.1-0.8,1.9v5.2c0,0.6,0.2,1,0.7,1.4l3.8,3.2c0.5,0.4,1.1,0.6,1.9,0.6h8.7
+		c0.6,0,1.1,0.2,1.5,0.6c0.4,0.4,0.6,0.9,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5C102.8,40.8,102.3,41,101.7,41z"/>
+	<path class="st0" d="M24,61.6h8.4c0.5,0,1.1,0.1,2,0.3l0-3c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6H24
+		c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6h8.1c1.8,0,3.3,0.6,4.5,1.9
+		c1.2,1.2,1.9,2.8,1.9,4.5l0.5,16c0,0.6-0.2,1.1-0.6,1.5C38.1,76.8,37.6,77,37,77c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5
+		L31.2,77H24c-1.8,0-3.3-0.6-4.6-1.9s-1.9-2.8-1.9-4.6v-2.5c0-1.8,0.6-3.3,1.9-4.6C20.7,62.3,22.2,61.6,24,61.6z M34.6,69.9
+		l-0.1-1.8c0-0.6-0.2-1.1-0.6-1.5C33.5,66.2,33,66,32.4,66H24c-0.6,0-1.1,0.2-1.5,0.6s-0.6,0.9-0.6,1.5v2.4c0,0.6,0.2,1.1,0.6,1.5
+		s0.9,0.6,1.5,0.6h6L34.6,69.9z"/>
+	<path class="st0" d="M54.3,45.4v10l1.9-1.5c1.2-1,2.4-1.5,3.7-1.5h3.9c1.4,0,2.7,0.5,3.8,1.5l2,1.8c0.6,0.5,1,1.2,1.4,2.1
+		s0.5,1.8,0.5,2.7v8.6c0,0.8-0.2,1.6-0.5,2.5s-0.7,1.5-1.2,1.9l-1.9,1.8c-0.5,0.5-1.2,0.9-2,1.2S64.4,77,63.8,77h-3.7
+		c-1.8,0-3.7-1-5.8-3v0.8c0,0.6-0.2,1.1-0.6,1.5c-0.4,0.4-0.9,0.6-1.5,0.6c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5V45.4
+		c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6c0.6,0,1.1,0.2,1.5,0.6C54.1,44.3,54.3,44.8,54.3,45.4z M63.5,56.8h-2.9
+		c-0.7,0-1.3,0.2-1.6,0.5l-3.8,3.3c-0.5,0.4-0.7,1.1-0.7,2v4.8c0,0.7,0.3,1.3,0.8,1.8l3.4,2.9c0.5,0.5,1,0.7,1.5,0.7h3.5
+		c0.5,0,0.9-0.2,1.3-0.5l1.7-1.5c0.5-0.3,0.7-0.8,0.7-1.4v-9c0-0.7-0.2-1.3-0.7-1.6L65,57.4C64.6,57,64,56.8,63.5,56.8z"/>
+	<path class="st0" d="M101.7,77h-9.1c-1.6,0-3-0.5-4.1-1.4L84.3,72c-1.3-1.1-2-2.6-2-4.5v-5.6c-0.1-1.8,0.7-3.4,2.2-4.7l3.7-3.2
+		c1.2-1,2.5-1.5,3.9-1.5h9.6c0.6,0,1.1,0.2,1.5,0.6c0.4,0.4,0.6,0.9,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5s-0.9,0.6-1.5,0.6h-9.2
+		c-0.6,0-1.1,0.2-1.7,0.7l-3.4,2.9c-0.6,0.5-0.8,1.1-0.8,1.9v5.2c0,0.6,0.2,1,0.7,1.4l3.8,3.2c0.5,0.4,1.1,0.6,1.9,0.6h8.7
+		c0.6,0,1.1,0.2,1.5,0.6s0.6,0.9,0.6,1.5s-0.2,1.1-0.6,1.5S102.3,77,101.7,77z"/>
+	<path class="st0" d="M24,97.6h8.4c0.5,0,1.1,0.1,2,0.3l0-3c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6H24
+		c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6h8.1c1.8,0,3.3,0.6,4.5,1.9
+		c1.2,1.2,1.9,2.8,1.9,4.5l0.5,16c0,0.6-0.2,1.1-0.6,1.5c-0.4,0.4-0.9,0.6-1.5,0.6c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5
+		l-3.6,2.1H24c-1.8,0-3.3-0.6-4.6-1.9s-1.9-2.8-1.9-4.6v-2.5c0-1.8,0.6-3.3,1.9-4.6C20.7,98.3,22.2,97.6,24,97.6z M34.6,105.9
+		l-0.1-1.8c0-0.6-0.2-1.1-0.6-1.5c-0.4-0.4-0.9-0.6-1.5-0.6H24c-0.6,0-1.1,0.2-1.5,0.6s-0.6,0.9-0.6,1.5v2.4c0,0.6,0.2,1.1,0.6,1.5
+		s0.9,0.6,1.5,0.6h6L34.6,105.9z"/>
+	<path class="st0" d="M54.3,81.4v10l1.9-1.5c1.2-1,2.4-1.5,3.7-1.5h3.9c1.4,0,2.7,0.5,3.8,1.5l2,1.8c0.6,0.5,1,1.2,1.4,2.1
+		s0.5,1.8,0.5,2.7v8.6c0,0.8-0.2,1.6-0.5,2.5s-0.7,1.5-1.2,1.9l-1.9,1.8c-0.5,0.5-1.2,0.9-2,1.2s-1.6,0.5-2.2,0.5h-3.7
+		c-1.8,0-3.7-1-5.8-3v0.8c0,0.6-0.2,1.1-0.6,1.5c-0.4,0.4-0.9,0.6-1.5,0.6c-0.6,0-1.1-0.2-1.5-0.6c-0.4-0.4-0.6-0.9-0.6-1.5V81.4
+		c0-0.6,0.2-1.1,0.6-1.5c0.4-0.4,0.9-0.6,1.5-0.6c0.6,0,1.1,0.2,1.5,0.6C54.1,80.3,54.3,80.8,54.3,81.4z M63.5,92.8h-2.9
+		c-0.7,0-1.3,0.2-1.6,0.5l-3.8,3.3c-0.5,0.4-0.7,1.1-0.7,2v4.8c0,0.7,0.3,1.3,0.8,1.8l3.4,2.9c0.5,0.5,1,0.7,1.5,0.7h3.5
+		c0.5,0,0.9-0.2,1.3-0.5l1.7-1.5c0.5-0.3,0.7-0.8,0.7-1.4v-9c0-0.7-0.2-1.3-0.7-1.6L65,93.4C64.6,93,64,92.8,63.5,92.8z"/>
+	<path class="st0" d="M101.7,113h-9.1c-1.6,0-3-0.5-4.1-1.4l-4.1-3.6c-1.3-1.1-2-2.6-2-4.5v-5.6c-0.1-1.8,0.7-3.4,2.2-4.7l3.7-3.2
+		c1.2-1,2.5-1.5,3.9-1.5h9.6c0.6,0,1.1,0.2,1.5,0.6s0.6,0.9,0.6,1.5c0,0.6-0.2,1.1-0.6,1.5s-0.9,0.6-1.5,0.6h-9.2
+		c-0.6,0-1.1,0.2-1.7,0.7l-3.4,2.9c-0.6,0.5-0.8,1.1-0.8,1.9v5.2c0,0.6,0.2,1,0.7,1.4l3.8,3.2c0.5,0.4,1.1,0.6,1.9,0.6h8.7
+		c0.6,0,1.1,0.2,1.5,0.6s0.6,0.9,0.6,1.5s-0.2,1.1-0.6,1.5S102.3,113,101.7,113z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/OptionInput.svg b/lib/base_node_lib/nodes_general_library/icons/OptionInput.svg
new file mode 100644
index 0000000..eee2348
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/OptionInput.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g id="Layer_4">
+	<path class="st0" d="M700,33.3H100c-55.2,0-100,44.8-100,100s44.8,100,100,100h600c55.2,0,100-44.8,100-100S755.2,33.3,700,33.3z
+		 M700,166.7H100c-18.4,0-33.3-14.9-33.3-33.3S81.6,100,100,100h600c18.4,0,33.3,14.9,33.3,33.3S718.4,166.7,700,166.7z"/>
+	<path class="st0" d="M700,566.7H100c-55.2,0-100,44.8-100,100c0,55.2,44.8,100,100,100h600c55.2,0,100-44.8,100-100
+		C800,611.4,755.2,566.7,700,566.7z M700,700H100c-18.4,0-33.3-14.9-33.3-33.3s14.9-33.3,33.3-33.3h600c18.4,0,33.3,14.9,33.3,33.3
+		S718.4,700,700,700z"/>
+	<path class="st0" d="M700,300H100C44.8,300,0,344.8,0,400s44.8,100,100,100h600c55.2,0,100-44.8,100-100S755.2,300,700,300z
+		 M700,433.3H100c-18.4,0-33.3-14.9-33.3-33.3c0-18.4,14.9-33.3,33.3-33.3h600c18.4,0,33.3,14.9,33.3,33.3
+		C733.3,418.4,718.4,433.3,700,433.3z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/PrintToConsole.png b/lib/base_node_lib/nodes_general_library/icons/PrintToConsole.png
deleted file mode 100644
index da8e6dc..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/PrintToConsole.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/PrintToConsole.svg b/lib/base_node_lib/nodes_general_library/icons/PrintToConsole.svg
new file mode 100644
index 0000000..7bace32
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/PrintToConsole.svg
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFD632;}
+	.st1{fill:#333336;}
+	.st2{fill:#ECEFE8;}
+	.st3{fill:#878787;}
+	.st4{fill:#D5D9CF;}
+	.st5{fill:#6395AD;}
+</style>
+<path class="st0" d="M162.8,181.8h473.5v213.7H162.8V181.8z"/>
+<path class="st1" d="M641.8,401H157.3V176.2h484.6L641.8,401L641.8,401z M168.3,389.9h462.4V187.3H168.3L168.3,389.9L168.3,389.9z"
+	/>
+<path class="st2" d="M250.4,71.5h298.5v273.4H250.4V71.5z"/>
+<path class="st1" d="M554.3,350.6H244.8V66h309.5v284.6H554.3z M255.9,339.5h287.4V77.1H255.9L255.9,339.5L255.9,339.5z"/>
+<path class="st3" d="M732.4,664.4H66.7c-19.2,0-34.8-15.6-34.8-34.8V341.4c0-19.2,15.6-34.8,34.8-34.8h665.8
+	c19.2,0,34.8,15.6,34.8,34.8v288.2C767.3,648.8,751.7,664.4,732.4,664.4L732.4,664.4z"/>
+<path class="st1" d="M732.4,669.9H66.7c-22.2,0-40.4-18.1-40.4-40.4V341.4c0-22.2,18.1-40.4,40.4-40.4h665.8
+	c22.2,0,40.4,18.1,40.4,40.4v288.2C772.8,651.8,754.7,669.9,732.4,669.9L732.4,669.9z M66.7,312.1c-16.1,0-29.3,13.2-29.3,29.3
+	v288.2c0,16.1,13.2,29.3,29.3,29.3h665.8c16.1,0,29.3-13.2,29.3-29.3V341.4c0-16.1-13.2-29.3-29.3-29.3H66.7z"/>
+<path class="st4" d="M711.6,714.1H87.5l-11.4-49.7H723L711.6,714.1z"/>
+<path class="st1" d="M716,719.7H83.1l-13.8-60.8h660.6L716,719.7z M91.9,708.6h615.3l8.8-38.7H83.1L91.9,708.6L91.9,708.6z"/>
+<path class="st4" d="M647.7,664.4H151.4V549c0-19.8,16.1-35.9,35.9-35.9h424.4c19.8,0,35.9,16.1,35.9,35.9L647.7,664.4L647.7,664.4z
+	"/>
+<path class="st1" d="M653.2,669.9H145.9V549c0-22.8,18.6-41.5,41.5-41.5h424.4c22.8,0,41.5,18.6,41.5,41.5L653.2,669.9L653.2,669.9z
+	 M157,658.9h485.2V549c0-16.7-13.6-30.4-30.4-30.4H187.4c-16.7,0-30.4,13.6-30.4,30.4V658.9z"/>
+<path class="st5" d="M151.4,620.3h496.2v44.1H151.4V620.3z"/>
+<path class="st1" d="M653.2,669.9H145.9v-55.2h507.3V669.9z M157,658.9h485.2v-33H157V658.9z"/>
+<path class="st0" d="M463.2,465.6V362.7c0-12.9,10.5-23.5,23.5-23.5h221.4c12.9,0,23.5,10.5,23.5,23.5v102.8"/>
+<path class="st1" d="M737,465.6h-11.1V362.7c0-9.9-8.1-17.9-17.9-17.9H486.5c-9.9,0-17.9,8.1-17.9,17.9v102.8h-11.1V362.7
+	c0-16,13-29,29-29H708c16,0,29,13,29,29V465.6z"/>
+<path class="st1" d="M30.2,460.1h735.4v11.1H30.2V460.1z"/>
+<path class="st2" d="M650.7,404c0,12.8,10.4,23.2,23.2,23.2S697,416.8,697,404s-10.4-23.2-23.2-23.2S650.7,391.2,650.7,404z"/>
+<path class="st1" d="M673.8,431.2c-15,0-27.2-12.2-27.2-27.2c0-15,12.2-27.2,27.2-27.2S701,389,701,404S688.8,431.2,673.8,431.2z
+	 M673.8,384.9c-10.6,0-19.1,8.6-19.1,19.1c0,10.6,8.6,19.1,19.1,19.1S693,414.6,693,404C693,393.4,684.4,384.9,673.8,384.9z"/>
+<path class="st2" d="M516,426.9l-16.7-16.7c-3.6-3.6-3.6-9.5,0-13.1l16.7-16.7c5.8-5.8,15.8-1.7,15.8,6.5v33.4
+	C531.8,428.6,521.9,432.7,516,426.9z"/>
+<path class="st1" d="M522.5,433.6c-3.4,0-6.7-1.3-9.4-3.9L496.4,413c-2.5-2.5-3.9-5.8-3.9-9.4c0-3.5,1.4-6.9,3.9-9.4l16.7-16.7
+	c3.9-3.9,9.5-5,14.5-2.9c5,2.1,8.3,6.8,8.3,12.3v33.4c0,5.4-3.1,10.2-8.3,12.3C526,433.3,524.2,433.6,522.5,433.6L522.5,433.6z
+	 M522.5,381.6c-1.1,0-2.4,0.3-3.6,1.5l-16.7,16.8c-1,1-1.5,2.3-1.5,3.7c0,1.4,0.5,2.7,1.5,3.7l16.7,16.7c2.3,2.3,4.9,1.4,5.7,1.1
+	c0.8-0.3,3.2-1.6,3.2-4.8v-33.4c0-3.2-2.5-4.5-3.2-4.8C524.2,381.9,523.5,381.6,522.5,381.6L522.5,381.6z"/>
+<path class="st2" d="M587.8,426.9l16.7-16.7c3.6-3.6,3.6-9.5,0-13.1l-16.7-16.8c-5.8-5.8-15.8-1.7-15.8,6.5v33.4
+	C571.9,428.6,581.8,432.7,587.8,426.9z"/>
+<path class="st1" d="M581.2,433.6c-1.7,0-3.5-0.3-5.1-1c-5-2.1-8.3-6.8-8.3-12.3v-33.4c0-5.4,3.1-10.2,8.3-12.3
+	c5-2.1,10.7-1,14.5,2.9l16.7,16.7c5.2,5.2,5.2,13.6,0,18.8l-16.7,16.7C588,432.3,584.7,433.6,581.2,433.6L581.2,433.6z M581.2,381.6
+	c-1,0-1.7,0.3-2.1,0.4c-0.8,0.3-3.2,1.6-3.2,4.8v33.4c0,3.2,2.5,4.5,3.2,4.8c0.8,0.3,3.4,1.2,5.7-1.1l16.7-16.7c2-2,2-5.3,0-7.4
+	l-16.7-16.7C583.7,382,582.3,381.6,581.2,381.6L581.2,381.6z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/RegexMatch.svg b/lib/base_node_lib/nodes_general_library/icons/RegexMatch.svg
index 5becdf9..fab396e 100644
--- a/lib/base_node_lib/nodes_general_library/icons/RegexMatch.svg
+++ b/lib/base_node_lib/nodes_general_library/icons/RegexMatch.svg
@@ -1,1 +1,28 @@
-<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><defs><style>.cls-1{fill:#fff;}</style></defs><path class="cls-1" d="M11.76,11.33A26,26,0,0,0,8.34,25a26.29,26.29,0,0,0,3.42,13.64H8.17A23.8,23.8,0,0,1,4.31,25,24.08,24.08,0,0,1,8.17,11.33Z"/><path class="cls-1" d="M14.6,32a3,3,0,1,1,6.07,0,2.94,2.94,0,0,1-3,3.12A3,3,0,0,1,14.6,32Z"/><path class="cls-1" d="M34.3,13.23l-3.64,4.32v.07l5.4-1.08V20L30.63,19v.08l3.67,4.19L31.3,25l-1.95-5.23-.07,0L27.34,25,24.43,23.3l3.63-4.23L28,19,22.72,20V16.54L28,17.61l0-.07-3.57-4.29,3-1.7,1.88,5.19h.08l1.93-5.2Z"/><path class="cls-1" d="M38.24,38.67A26.4,26.4,0,0,0,41.66,25a26.12,26.12,0,0,0-3.42-13.64h3.59A23.55,23.55,0,0,1,45.69,25a24.15,24.15,0,0,1-3.86,13.68Z"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#669923;}
+	.st1{fill:#FFFFFF;}
+</style>
+<polygon class="st0" points="58.8,203 58.8,597 400,794 741.2,597 741.2,203 400,6 "/>
+<g>
+	<path class="st1" d="M138.6,398.5c0,20.1,1.7,38.6,5.2,55.7c3.4,17.1,8,32.7,13.7,47c5.7,14.2,12.3,27.1,19.9,38.5
+		c7.6,11.5,15.4,21.6,23.5,30.4l-19.1,18c-4.2-3.6-9.1-8.4-14.6-14.5c-5.5-6.1-11.2-13.3-17-21.8c-5.8-8.5-11.5-18.1-17.3-28.8
+		c-5.8-10.7-10.9-22.5-15.4-35.3c-4.5-12.8-8.2-26.7-11-41.7c-2.8-15-4.2-30.9-4.2-47.6c0-16.9,1.4-32.8,4.2-47.7
+		c2.8-14.9,6.5-28.8,11-41.6c4.5-12.8,9.7-24.6,15.4-35.3c5.7-10.7,11.5-20.3,17.3-28.8c5.8-8.5,11.4-15.7,17-21.8
+		c5.5-6.1,10.4-10.9,14.6-14.5l19.1,18c-8.1,8.8-15.9,19-23.5,30.4c-7.6,11.5-14.2,24.3-19.9,38.5c-5.7,14.2-10.3,29.9-13.7,47
+		C140.3,359.8,138.6,378.4,138.6,398.5z"/>
+	<path class="st1" d="M254.8,515.1v-43.8h42.7v43.8H254.8z"/>
+	<path class="st1" d="M461.3,324.3h-1.1l-18.4,44.7l-25.2,34.6l-26.3-19.1l25.2-34.6l34.6-33l-0.4-1.1l-46.3-4.7L364,298.3l10.1-31
+		l39.3,12.8l40,23.4l0.9-0.9l-9.9-45.4v-42.7H477v42.7l-9.9,45.4l0.9,0.9l40-23.4l39.3-12.8l10.1,31l-39.3,12.8l-46.3,4.7l-0.4,1.1
+		l34.6,33l25.2,34.6l-26.3,19.1l-25.2-34.6L461.3,324.3z"/>
+	<path class="st1" d="M662.8,398.5c0-20.1-1.7-38.6-5.2-55.7c-3.4-17.1-8-32.7-13.7-47c-5.7-14.2-12.3-27.1-19.9-38.5
+		c-7.6-11.5-15.4-21.6-23.5-30.4l19.1-18c4.2,3.6,9.1,8.4,14.6,14.5c5.5,6.1,11.2,13.3,17,21.8c5.8,8.5,11.5,18.1,17.3,28.8
+		c5.7,10.7,10.9,22.5,15.4,35.3c4.5,12.8,8.2,26.7,11,41.6c2.8,14.9,4.2,30.8,4.2,47.7c0,16.8-1.4,32.7-4.2,47.6
+		c-2.8,15-6.5,28.9-11,41.7c-4.5,12.8-9.7,24.6-15.4,35.3c-5.8,10.7-11.5,20.3-17.3,28.8c-5.8,8.5-11.4,15.7-17,21.8
+		c-5.5,6.1-10.4,10.9-14.6,14.5l-19.1-18c8.1-8.8,15.9-19,23.5-30.4c7.6-11.5,14.2-24.3,19.9-38.5c5.7-14.2,10.3-29.9,13.7-47
+		C661.1,437.1,662.8,418.6,662.8,398.5z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/RegexNaming.png b/lib/base_node_lib/nodes_general_library/icons/RegexNaming.png
deleted file mode 100644
index a5e1761..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/RegexNaming.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/RunPython.svg b/lib/base_node_lib/nodes_general_library/icons/RunPython.svg
new file mode 100644
index 0000000..8aa9a10
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/RunPython.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="-133.268" y1="-202.91" x2="-133.198" y2="-202.84" gradientTransform="translate(25243.061 38519.17) scale(189.38 189.81)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#387eb8"/><stop offset="1" stop-color="#366994"/></linearGradient><linearGradient id="b" x1="-133.575" y1="-203.203" x2="-133.495" y2="-203.133" gradientTransform="translate(25309.061 38583.42) scale(189.38 189.81)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffe052"/><stop offset="1" stop-color="#ffc331"/></linearGradient></defs><title>file_type_python</title><path d="M15.885,2.1c-7.1,0-6.651,3.07-6.651,3.07V8.36h6.752v1H6.545S2,8.8,2,16.005s4.013,6.912,4.013,6.912H8.33V19.556s-.13-4.013,3.9-4.013h6.762s3.772.06,3.772-3.652V5.8s.572-3.712-6.842-3.712h0ZM12.153,4.237a1.214,1.214,0,1,1-1.183,1.244v-.02a1.214,1.214,0,0,1,1.214-1.214h0Z" style="fill:url(#a)"/><path d="M16.085,29.91c7.1,0,6.651-3.08,6.651-3.08V23.65H15.985v-1h9.47S30,23.158,30,15.995s-4.013-6.912-4.013-6.912H23.64V12.4s.13,4.013-3.9,4.013H12.975S9.2,16.356,9.2,20.068V26.2s-.572,3.712,6.842,3.712h.04Zm3.732-2.147A1.214,1.214,0,1,1,21,26.519v.03a1.214,1.214,0,0,1-1.214,1.214h.03Z" style="fill:url(#b)"/></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/StartFile.svg b/lib/base_node_lib/nodes_general_library/icons/StartFile.svg
index 3ebb1bf..13fa5df 100644
--- a/lib/base_node_lib/nodes_general_library/icons/StartFile.svg
+++ b/lib/base_node_lib/nodes_general_library/icons/StartFile.svg
@@ -1,1 +1,9 @@
-<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><defs><style>.cls-1{fill:#fff;}</style></defs><polygon class="cls-1" points="47.32 25 4.81 7.18 4.81 42.82 47.32 25"/></svg>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#B5ED2E;}
+</style>
+<polygon class="st0" points="47.3,25 4.8,7.2 4.8,42.8 "/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/StrInput.png b/lib/base_node_lib/nodes_general_library/icons/StrInput.png
deleted file mode 100644
index 999924d..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/StrInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/StrInput.svg b/lib/base_node_lib/nodes_general_library/icons/StrInput.svg
new file mode 100644
index 0000000..5fffb02
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/StrInput.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:none;}
+	.st1{enable-background:new    ;}
+	.st2{fill:#FFFFFF;}
+</style>
+<g>
+	<rect x="0.2" y="0.2" class="st0" width="120.3" height="119.8"/>
+</g>
+<g class="st1">
+	<path class="st2" d="M15.8,62.1h10.9c0.6,0,1.5,0.1,2.6,0.4l-0.1-4c0-0.8-0.3-1.4-0.8-2c-0.5-0.5-1.2-0.8-2-0.8H15.9
+		c-0.8,0-1.4-0.3-2-0.8c-0.6-0.6-0.8-1.2-0.8-2c0-0.8,0.3-1.4,0.8-2c0.5-0.5,1.2-0.8,2-0.8h10.6c2.3,0,4.3,0.8,5.9,2.4
+		c1.6,1.6,2.5,3.6,2.5,5.9l0.7,20.9c0,0.8-0.3,1.4-0.8,2c-0.6,0.5-1.2,0.8-2,0.8c-0.8,0-1.5-0.3-2-0.8c-0.6-0.5-0.8-1.2-0.8-2
+		l-4.7,2.8h-9.4c-2.4,0-4.3-0.8-6-2.5c-1.6-1.6-2.5-3.6-2.5-6v-3.3c0-2.3,0.8-4.3,2.5-6C11.5,62.9,13.5,62.1,15.8,62.1z M29.8,73
+		l-0.2-2.4c0-0.8-0.3-1.5-0.8-2s-1.2-0.8-2-0.8h-11c-0.8,0-1.4,0.3-2,0.8c-0.5,0.5-0.8,1.2-0.8,2v3.1c0,0.8,0.3,1.4,0.8,2
+		c0.6,0.6,1.2,0.8,2,0.8h7.9L29.8,73z"/>
+	<path class="st2" d="M53.3,40.9V54l2.5-2c1.5-1.3,3.2-1.9,4.8-1.9h5.1c1.9,0,3.6,0.6,5,1.9l2.7,2.3c0.7,0.6,1.3,1.6,1.8,2.8
+		c0.5,1.2,0.7,2.4,0.7,3.5v11.3c0,1-0.2,2.1-0.7,3.2c-0.4,1.1-1,2-1.5,2.5l-2.4,2.3c-0.6,0.6-1.5,1.1-2.7,1.6
+		c-1.2,0.5-2.1,0.7-2.9,0.7h-4.8c-2.3,0-4.9-1.3-7.6-3.9v1.1c0,0.8-0.3,1.4-0.8,2c-0.5,0.5-1.2,0.8-2,0.8c-0.8,0-1.4-0.3-2-0.8
+		c-0.5-0.5-0.8-1.2-0.8-2V40.9c0-0.8,0.3-1.4,0.8-2c0.6-0.5,1.2-0.8,2-0.8c0.8,0,1.4,0.3,2,0.8C53.1,39.4,53.3,40.1,53.3,40.9z
+		 M65.3,55.8h-3.9c-0.9,0-1.6,0.2-2.1,0.6l-5,4.3c-0.6,0.6-1,1.4-1,2.6v6.3c0,0.9,0.4,1.7,1.1,2.3l4.5,3.8c0.6,0.6,1.3,0.9,2,0.9
+		h4.5c0.6,0,1.2-0.2,1.7-0.6l2.2-2c0.6-0.4,0.9-1.1,0.9-1.9V60.3c0-0.9-0.3-1.6-0.9-2.1l-2-1.7C66.7,56,66,55.8,65.3,55.8z"/>
+	<path class="st2" d="M113.1,82.2h-11.9c-2.1,0-3.9-0.6-5.4-1.9l-5.4-4.7c-1.7-1.4-2.6-3.4-2.6-5.8v-7.3c-0.1-2.4,0.9-4.4,2.9-6.2
+		l4.9-4.2c1.6-1.3,3.3-1.9,5-1.9h12.5c0.8,0,1.4,0.3,2,0.8c0.5,0.5,0.8,1.2,0.8,2c0,0.8-0.3,1.5-0.8,2c-0.5,0.5-1.2,0.8-2,0.8h-12
+		c-0.8,0-1.5,0.3-2.2,0.9l-4.5,3.8c-0.7,0.6-1.1,1.5-1.1,2.5v6.8c0,0.7,0.3,1.4,0.9,1.9l4.9,4.2c0.6,0.6,1.4,0.8,2.5,0.8h11.4
+		c0.8,0,1.4,0.3,2,0.8c0.6,0.5,0.8,1.2,0.8,2c0,0.8-0.3,1.4-0.8,2C114.5,81.9,113.9,82.2,113.1,82.2z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/StringSplit.svg b/lib/base_node_lib/nodes_general_library/icons/StringSplit.svg
new file mode 100644
index 0000000..af90588
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/StringSplit.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#A8A8A8;}
+	.st1{fill:#FFFFFF;}
+	.st2{fill:#FBB03B;}
+</style>
+<g>
+	<polygon class="st0" points="189.8,253.6 428.1,15.3 446.8,34 283.6,197.1 264.8,253.4 227.2,291 	"/>
+	<path class="st0" d="M233.5,284.7l25.1-25.1l25.1-62.6L465.2,15.4l0,0c31.1,31.1,31.1,81.6,0,112.7L264.8,328.6"/>
+</g>
+<polygon class="st1" points="264.8,253.4 282.6,196.1 465.2,15.4 477.7,40.4 "/>
+<g>
+	<path class="st2" d="M264.7,366c-10.4-10.4-10.5-27.3-0.1-37.7l18.8-18.8c10.7-10.7,10.5-28.2-1-38.5c-10.7-9.6-27.3-8-37.5,2.1
+		L152,366.1c-31.7,31.7-31.1,83.3,1.6,114.3c30.2,28.6,79.2,28.6,109.5,0C295.8,449.4,296.3,397.7,264.7,366z M177.1,453.8
+		c-17.3-17.3-17.3-45.3,0-62.6s45.3-17.3,62.6,0c17.3,17.3,17.3,45.3,0,62.6C222.4,471.1,194.4,471.1,177.1,453.8z"/>
+	<path class="st2" d="M37.7,255c-28.6,30.2-28.6,79.3,0,109.5c31,32.7,82.7,33.3,114.3,1.6l92.9-92.9c10.2-10.2,11.8-26.8,2.1-37.5
+		c-10.3-11.4-27.8-11.7-38.5-1l-18.8,18.8c-10.4,10.4-27.3,10.3-37.7-0.1C120.5,221.8,68.7,222.3,37.7,255z M64.3,278.4
+		c17.3-17.3,45.3-17.3,62.6,0s17.3,45.3,0,62.6s-45.3,17.3-62.6,0S47,295.7,64.3,278.4z"/>
+</g>
+<path d="M171,459.9c-20.6-20.6-20.6-54.2,0-74.8c20.6-20.6,54.2-20.6,74.8,0c20.6,20.6,20.6,54.2,0,74.8S191.6,480.5,171,459.9z
+	 M233.6,397.3c-13.9-13.9-36.5-13.9-50.4,0c-13.9,13.9-13.9,36.5,0,50.4c13.9,13.9,36.5,13.9,50.4,0
+	C247.5,433.8,247.5,411.2,233.6,397.3z"/>
+<rect x="249.9" y="287.9" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -134.3414 269.8036)" class="st1" width="17.3" height="18.4"/>
+<path d="M58.2,347.2c-20.6-20.6-20.6-54.2,0-74.8c20.6-20.6,54.2-20.6,74.8,0c20.6,20.6,20.6,54.2,0,74.8
+	C112.4,367.8,78.9,367.8,58.2,347.2z M120.9,284.5c-13.9-13.9-36.5-13.9-50.4,0c-13.9,13.9-13.9,36.5,0,50.4
+	c13.9,13.9,36.5,13.9,50.4,0C134.8,321.1,134.8,298.5,120.9,284.5z"/>
+<g>
+	
+		<rect x="212.5" y="250.5" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -118.8459 232.3942)" class="st1" width="17.3" height="18.4"/>
+	
+		<rect x="319" y="218.7" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -65.215 298.4367)" class="st1" width="17.3" height="18.4"/>
+</g>
+<path d="M296.7,423.7c0.3-24.1-8.9-46.7-25.9-63.7c-7-7-7-18.4,0-25.4l200.4-200.4c34.4-34.4,34.4-90.5,0-124.9l-6.1-6.1l-189,189
+	L258.3,237c-1.3-2.5-2.9-4.9-4.9-7.1c-4.8-5.4-11-9-17.8-10.7L433.8,21L421.6,8.8L183.3,247l0.2,0.2l0,0c-7,7-18.4,7-25.4,0
+	c-17-17-39.6-26.2-63.7-25.9c-24.1,0.3-46.4,10.2-63,27.7c-31.7,33.5-31.7,87.9,0,121.4c0.6,0.6,1.2,1.2,1.8,1.8
+	c16.4,16.4,38,25.5,61.2,25.8c10.6,0.1,20.9-1.6,30.6-5c-3.4,9.7-5.1,20-5,30.6c0.3,23.2,9.5,44.9,25.8,61.2
+	c0.6,0.6,1.2,1.2,1.8,1.8c33.5,31.7,87.9,31.7,121.4,0C286.6,470.2,296.4,447.8,296.7,423.7z M227.4,278.6L145.9,360
+	c-13.7,13.7-31.9,21.1-51.3,20.8c-19.4-0.3-37.4-8.2-50.7-22.3c-25.5-26.9-25.5-70.7,0-97.6c13.3-14.1,31.3-22,50.7-22.3
+	c19.4-0.3,37.6,7.1,51.3,20.8c13.7,13.7,36.1,13.7,49.8,0l18.8-18.8c3.5-3.5,8.2-5.4,13.2-5.2c4.6,0.1,8.9,2,12.2,5.2
+	c0.2,0.2,0.5,0.5,0.7,0.7c6.3,7,5.5,18.5-1.7,25.7L227.4,278.6L227.4,278.6z M320.7,184.4l-38.1,38.1l8.2-20.6L464.8,28
+	c1.9,2.4,3.5,4.8,5,7.3L333.7,171.4l12.2,12.2L477.2,52.4c6.8,24,0.7,50.8-18.1,69.7L298.9,282.2c-1.7-6.7-5.3-12.7-10.6-17.5
+	c-4.5-4.1-9.9-6.7-15.6-7.9l60.2-60.2L320.7,184.4L320.7,184.4z M257.2,474.2c-26.9,25.5-70.7,25.5-97.6,0
+	c-14.1-13.3-22-31.3-22.3-50.7c-0.3-19.4,7.1-37.6,20.8-51.3l81.4-81.4l11.5-11.5c7.2-7.2,18.8-8,25.7-1.7c0.2,0.2,0.5,0.4,0.7,0.7
+	c3.3,3.3,5.1,7.6,5.2,12.2c0.1,5-1.7,9.6-5.2,13.2l-18.8,18.8c-13.7,13.7-13.7,36.1,0,49.8c13.7,13.7,21.1,31.9,20.8,51.3
+	C279.2,442.8,271.3,460.8,257.2,474.2z"/>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/TableToCsv.svg b/lib/base_node_lib/nodes_general_library/icons/TableToCsv.svg
new file mode 100644
index 0000000..b449398
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/TableToCsv.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#F7931E;}
+	.st1{fill:#FFFFFF;}
+</style>
+<path class="st0" d="M7.5,5h35C43.9,5,45,6.1,45,7.5v35c0,1.4-1.1,2.5-2.5,2.5h-35C6.1,45,5,43.9,5,42.5v-35C5,6.1,6.1,5,7.5,5z"/>
+<g>
+	<path class="st1" d="M29.8,40.3l-1.4-1.6c1-0.8,1.9-1.7,2.8-2.7c0.8-1,1.3-1.9,1.6-2.9c-0.8-0.5-1.4-0.9-1.8-1.2
+		c-0.5-0.3-0.8-0.7-1-1c-0.2-0.4-0.3-0.8-0.3-1.4c0-0.3,0.1-0.7,0.3-1.1c0.2-0.4,0.5-0.7,0.9-1c0.4-0.3,0.9-0.4,1.4-0.4
+		c1.3,0,2.2,0.4,2.8,1.3c0.6,0.8,0.8,1.9,0.8,3.3c0,1-0.2,1.9-0.6,2.8s-1,1.7-1.6,2.4c-0.7,0.7-1.3,1.4-2,2
+		C30.9,39.5,30.3,40,29.8,40.3z"/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/TimedNode.svg b/lib/base_node_lib/nodes_general_library/icons/TimedNode.svg
new file mode 100644
index 0000000..e63d927
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/TimedNode.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
+<svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon"  version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M597.678 480.76L390.797 333.998c-22.209-15.766-53-10.532-68.762 11.687l-2.04 2.871c-15.753 22.214-10.526 53 11.691 68.762l206.876 146.771c22.218 15.757 53 10.527 68.766-11.687l2.035-2.876c15.768-22.218 10.529-53.005-11.685-68.766z" fill="#F39A2B" /><path d="M585.066 423.392l-2.871-2.034c-22.218-15.763-53.004-10.527-68.766 11.687L279.007 763.472c-15.762 22.214-10.527 53.005 11.69 68.763l2.871 2.04c22.218 15.762 53.004 10.53 68.762-11.688l234.423-330.428c15.767-22.22 10.531-53.001-11.687-68.767z" fill="#E5594F" /><path d="M891.662 525.126c-0.363 50.106-8.104 91.767-27.502 142.522-13.232 34.625-44.231 82.177-70.529 111.108-62.993 69.31-152.478 113.292-240.772 121.615-100.773 9.501-189.621-17.478-271.287-78.551 7.65 5.723-7.536-6.408-7.061-6.009-4.562-3.821-8.967-7.82-13.369-11.824-8.803-8.003-17.105-16.535-25.225-25.224-18.148-19.432-26.188-30.526-41.439-54.866-27.11-43.264-40.704-80.283-51.007-132.536-4.015-20.354-5.395-39.803-5.586-66.233-0.531-73.33-114.29-73.381-113.758 0 1.607 222.487 154.098 420.146 370.093 475.715 216.482 55.697 449.039-49.258 553.91-245.54 37.754-70.664 56.715-150.224 57.293-230.179 0.526-73.379-113.231-73.328-113.761 0.002z" fill="#4A5699" /><path d="M137.884 501.467c0.362-50.104 8.103-91.762 27.502-142.52 13.233-34.621 44.233-82.173 70.53-111.108 62.993-69.309 152.472-113.29 240.768-121.615 100.773-9.5 189.626 17.479 271.292 78.554-7.652-5.721 7.532 6.408 7.057 6.01 4.563 3.819 8.968 7.821 13.371 11.823 8.803 8 17.108 16.535 25.228 25.225 18.147 19.43 26.187 30.526 41.438 54.866 27.111 43.264 40.709 80.28 51.009 132.533 4.014 20.352 5.396 39.804 5.586 66.232 0.529 73.33 114.287 73.384 113.76 0-1.608-222.489-154.107-420.144-370.099-475.715-216.482-55.7-449.036 49.26-553.905 245.541-37.753 70.664-56.715 150.219-57.292 230.174-0.534 73.384 113.225 73.33 113.755 0z" fill="#C45FA0" /></svg>
\ No newline at end of file
diff --git a/lib/base_node_lib/nodes_general_library/icons/TupleInput.png b/lib/base_node_lib/nodes_general_library/icons/TupleInput.png
deleted file mode 100644
index eda30ed..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/TupleInput.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/icons/TupleInput.svg b/lib/base_node_lib/nodes_general_library/icons/TupleInput.svg
new file mode 100644
index 0000000..5019125
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/icons/TupleInput.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 120 120" style="enable-background:new 0 0 120 120;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+</style>
+<g>
+	<path class="st0" d="M30.1,52.4V68c0,2.1,0.6,3.9,1.9,5.5l9.6,12.4c0.5,0.5,0.7,1.3,0.7,2.3c0,1.3-0.4,2.3-1.3,3.1
+		c-0.8,0.7-1.8,1.1-2.9,1.1c-1.2,0-2.1-0.4-2.8-1.3l-9.8-12.5c-2.5-3-3.7-6.3-3.7-9.9V51.5c0-3.4,1.2-6.7,3.7-9.8l9.8-12.5
+		c0.7-0.8,1.6-1.3,2.7-1.3s2.1,0.4,3,1.1c0.9,0.7,1.3,1.8,1.3,3.1c0,1-0.3,1.7-0.8,2.3L32,46.7C30.7,48.4,30.1,50.3,30.1,52.4z"/>
+	<path class="st0" d="M90,68V52.3c0-2-0.7-3.9-2-5.6l-9.7-12.3c-0.5-0.6-0.7-1.4-0.7-2.3c0-1.3,0.4-2.3,1.3-3.1
+		c0.9-0.8,1.8-1.2,2.9-1.2c1.1,0,2,0.4,2.7,1.3l9.9,12.5c2.4,3,3.6,6.3,3.6,9.8v17.4c0,3.6-1.2,6.9-3.6,9.9l-9.9,12.5
+		c-0.7,0.8-1.6,1.3-2.8,1.3c-1.1,0-2.1-0.4-2.9-1.2c-0.8-0.8-1.3-1.8-1.3-3.1c0-1,0.2-1.7,0.7-2.3L88,73.6C89.3,72,90,70.1,90,68z"
+		/>
+</g>
+</svg>
diff --git a/lib/base_node_lib/nodes_general_library/icons/date.png b/lib/base_node_lib/nodes_general_library/icons/date.png
deleted file mode 100644
index d58547c..0000000
Binary files a/lib/base_node_lib/nodes_general_library/icons/date.png and /dev/null differ
diff --git a/lib/base_node_lib/nodes_general_library/launchers.py b/lib/base_node_lib/nodes_general_library/launchers.py
new file mode 100644
index 0000000..ebc4d8b
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/launchers.py
@@ -0,0 +1,65 @@
+# -*- coding: UTF-8 -*-
+__author__ = "Jaime Rivera <jaime.rvq@gmail.com>"
+__copyright__ = "Copyright 2022, Jaime Rivera"
+__credits__ = []
+__license__ = "MIT License"
+
+
+from all_nodes.constants import InputsGUI
+from all_nodes.logic.logic_node import GeneralLogicNode
+from all_nodes import utils
+
+
+LOGGER = utils.get_logger(__name__)
+
+
+class StartFile(GeneralLogicNode):
+    INPUTS_DICT = {
+        "file_path": {"type": str},
+    }
+
+    def run(self):
+        import os
+        import platform
+        import subprocess
+
+        file_path = self.get_attribute_value("file_path")
+        if not os.path.exists(file_path):
+            self.fail("File {} does not exist!".format(file_path))
+            return
+
+        platform_name = platform.system().lower()
+        if "windows" in platform_name:
+            os.startfile(file_path)
+        elif platform_name in ["linux", "ubuntu"]:
+            subprocess.call(["xdg-open", file_path])
+        elif platform_name in ["dawrin"]:
+            subprocess.call(["open", file_path])
+        else:
+            self.fail("Not sure how to open a file in {}...".format(platform_name))
+            return
+
+
+class LaunchSubprocess(GeneralLogicNode):
+    INPUTS_DICT = {
+        "subprocess_str": {"type": str},
+    }
+
+    def run(self):
+        import subprocess
+
+        subprocess_str = self.get_attribute_value("subprocess_str")
+        subprocess.run(subprocess_str, shell=True)
+
+
+class RunPython(GeneralLogicNode):
+    INTERNALS_DICT = {
+        "internal_python_str": {
+            "type": str,
+            "gui_type": InputsGUI.MULTILINE_STR_INPUT,
+        },
+    }
+
+    def run(self):
+        python_str = self.get_attribute_value("internal_python_str")
+        exec(python_str)
diff --git a/lib/base_node_lib/nodes_general_library/miscellaneous.py b/lib/base_node_lib/nodes_general_library/miscellaneous.py
new file mode 100644
index 0000000..4d104f9
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/miscellaneous.py
@@ -0,0 +1,53 @@
+# -*- coding: UTF-8 -*-
+__author__ = "Jaime Rivera <jaime.rvq@gmail.com>"
+__copyright__ = "Copyright 2022, Jaime Rivera"
+__credits__ = []
+__license__ = "MIT License"
+
+
+from all_nodes.logic.logic_node import GeneralLogicNode
+from all_nodes import utils
+
+
+LOGGER = utils.get_logger(__name__)
+
+
+class GetDictKey(GeneralLogicNode):
+    NICE_NAME = "Get dict key"
+    HELP = "Get given key from a dictionary"
+
+    INPUTS_DICT = {
+        "in_dict": {"type": dict},
+        "key": {"type": str},
+    }
+
+    OUTPUTS_DICT = {"out": {"type": object}}
+
+    def run(self):
+        in_dict = self.get_attribute_value("in_dict")
+        key = self.get_attribute_value("key")
+        if key not in in_dict:
+            self.fail("Key '{}' not present in input dict {}".format(key, in_dict))
+            return
+        self.set_output("out", in_dict[key])
+
+
+class SetDictKey(GeneralLogicNode):
+    NICE_NAME = "Set dict key"
+    HELP = "Set a key in a dictionary"
+
+    INPUTS_DICT = {
+        "in_dict": {"type": dict},
+        "key": {"type": str},
+        "new_value": {"type": object},
+    }
+
+    OUTPUTS_DICT = {"out_dict": {"type": dict}}
+
+    def run(self):
+        in_dict = self.get_attribute_value("in_dict")
+        key = self.get_attribute_value("key")
+        new_value = self.get_attribute_value("new_value")
+
+        in_dict[key] = new_value
+        self.set_output("out_dict", in_dict)
diff --git a/lib/base_node_lib/nodes_general_library/regex.py b/lib/base_node_lib/nodes_general_library/regex.py
new file mode 100644
index 0000000..89fc610
--- /dev/null
+++ b/lib/base_node_lib/nodes_general_library/regex.py
@@ -0,0 +1,30 @@
+# -*- coding: UTF-8 -*-
+__author__ = "Jaime Rivera <jaime.rvq@gmail.com>"
+__copyright__ = "Copyright 2022, Jaime Rivera"
+__credits__ = []
+__license__ = "MIT License"
+
+
+from all_nodes.logic.logic_node import GeneralLogicNode
+from all_nodes import utils
+
+
+LOGGER = utils.get_logger(__name__)
+
+
+class RegexMatch(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_str": {"type": str},
+        "pattern": {"type": str},
+    }
+
+    OUTPUTS_DICT = {"match": {"type": bool}}
+
+    def run(self):
+        import re
+
+        in_str = self.get_attribute_value("in_str")
+        pattern = self.get_attribute_value("pattern")
+
+        match = re.match(pattern, in_str)
+        self.set_output("match", match is not None)
diff --git a/lib/base_node_lib/nodes_general_library/string_manipulation.py b/lib/base_node_lib/nodes_general_library/string_manipulation.py
index a4c0192..bf4dd40 100644
--- a/lib/base_node_lib/nodes_general_library/string_manipulation.py
+++ b/lib/base_node_lib/nodes_general_library/string_manipulation.py
@@ -30,3 +30,18 @@ def run(self):
             split_list = in_str.splitlines()
 
         self.set_output("out_list", split_list)
+
+
+class StringFormat(GeneralLogicNode):
+    INPUTS_DICT = {
+        "in_str": {"type": str},
+        "format_dict": {"type": dict},
+    }
+
+    OUTPUTS_DICT = {"out_str": {"type": str}}
+
+    def run(self):
+        in_str = self.get_attribute_value("in_str")
+        format_dict = self.get_attribute_value("format_dict")
+
+        self.set_output("out_str", in_str.format(**format_dict))
diff --git a/lib/base_node_lib/nodes_general_library/styles.yml b/lib/base_node_lib/nodes_general_library/styles.yml
index 4821b97..bc048a1 100644
--- a/lib/base_node_lib/nodes_general_library/styles.yml
+++ b/lib/base_node_lib/nodes_general_library/styles.yml
@@ -1,28 +1,49 @@
 ## Registry of the styles (colors and icons) for this lib
 
-casting_nodes:
+casting:
     color: '#1d0a40'
 
-datetime_nodes:
+data_science:
+    color: '#2f6962'
+    default_icon: polars
+
+datetime:
     color: '#707060'
     default_icon: date
 
-debug_nodes:
+debug:
     color: '#404040'
+    default_icon: debug
+
+file_extension:
+    default_icon: file
 
-file_reading_nodes:
+file_reading:
     color: '#5e0e01'
 
-file_writing_nodes:
+file_writing:
     color: '#5e3901'
 
-flow_control_nodes:
-    color: "#294a41"
+flow_control:
+    color: "#016e46"
+
+general_input:
+    color: "#5a37a6"
+    default_icon: input
+    
+general_preview:
+    color: '#7e00b0'
+    default_icon: eye
 
-special_context_nodes:
+context_special_nodes:
     color: '#707070'
     default_icon: cube
 
-special_input_nodes:
+special_input:
     color: '#4b007a'
 
+string_manipulation:
+    color: '#382b1a'
+    default_icon: string
+
+
diff --git a/lib/base_node_lib/pillow_imaging/icons/image.png b/lib/base_node_lib/pillow_imaging/icons/image.png
deleted file mode 100644
index 70d92f3..0000000
Binary files a/lib/base_node_lib/pillow_imaging/icons/image.png and /dev/null differ
diff --git a/lib/base_node_lib/pillow_imaging/pillow_general_nodes.py b/lib/base_node_lib/pillow_imaging/pillow_general.py
similarity index 100%
rename from lib/base_node_lib/pillow_imaging/pillow_general_nodes.py
rename to lib/base_node_lib/pillow_imaging/pillow_general.py
diff --git a/lib/base_node_lib/pillow_imaging/styles.yml b/lib/base_node_lib/pillow_imaging/styles.yml
index 9a751b5..aec6d8f 100644
--- a/lib/base_node_lib/pillow_imaging/styles.yml
+++ b/lib/base_node_lib/pillow_imaging/styles.yml
@@ -1,5 +1,5 @@
 ## Registry of the styles (colors and icons) for this lib
 
-pillow_general_nodes:
+pillow_general:
     color: '#007513'
     default_icon: image
diff --git a/logic/class_registry.py b/logic/class_registry.py
index 94c8459..451f274 100644
--- a/logic/class_registry.py
+++ b/logic/class_registry.py
@@ -98,11 +98,11 @@ def register_node_lib(lib_path):
                 continue
             # Icon for this class  # TODO Refactor this out
             default_icon = node_styles.get(module_name, dict()).get("default_icon")
-            icon_path = "icons:nodes.png"
+            icon_path = "icons:nodes.svg"
             if (
                 hasattr(cls, "IS_CONTEXT") and cls.IS_CONTEXT
             ):  # TODO inheritance not working here?
-                icon_path = "icons:cubes.png"
+                icon_path = "icons:cubes.svg"
             if QtCore.QFile.exists(f"icons:{name}.png"):
                 icon_path = f"icons:{name}.png"
             elif QtCore.QFile.exists(f"icons:{name}.svg"):
diff --git a/requirements.txt b/requirements.txt
index 916ebac..ad59e35 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,6 +4,6 @@ matplotlib<3.9
 Pillow
 PySide2<6
 PyYAML
-pandas
+polars
 pymongo[srv]
 ruff==0.1.6
\ No newline at end of file


Test patch:
diff --git a/test/test_node.py b/test/test_node.py
index 331d74a..903d4e5 100644
--- a/test/test_node.py
+++ b/test/test_node.py
@@ -9,12 +9,12 @@
 import unittest
 
 from all_nodes import constants
-from all_nodes.lib.base_node_lib.nodes_general_library import debug_nodes
-from all_nodes.lib.base_node_lib.nodes_general_library import file_reading_nodes
-from all_nodes.lib.base_node_lib.nodes_general_library import file_writing_nodes
-from all_nodes.lib.base_node_lib.nodes_general_library import folder_management_nodes
-from all_nodes.lib.base_node_lib.nodes_general_library import general_nodes
-from all_nodes.lib.base_node_lib.nodes_general_library import general_input_nodes
+from all_nodes.lib.base_node_lib.nodes_general_library import debug
+from all_nodes.lib.base_node_lib.nodes_general_library import file_reading
+from all_nodes.lib.base_node_lib.nodes_general_library import file_writing
+from all_nodes.lib.base_node_lib.nodes_general_library import folder_management
+from all_nodes.lib.base_node_lib.nodes_general_library import miscellaneous
+from all_nodes.lib.base_node_lib.nodes_general_library import general_input
 from all_nodes import utils
 
 
@@ -30,11 +30,11 @@ def test_creation(self):
         """
         utils.print_test_header("test_creation")
 
-        n_1 = debug_nodes.EmptyNode()
+        n_1 = debug.EmptyNode()
         self.assertIsNotNone(n_1)
-        n_2 = general_nodes.GetDictKey()
+        n_2 = miscellaneous.GetDictKey()
         self.assertIsNotNone(n_2)
-        n_3 = folder_management_nodes.CopyFoldersRecursive()
+        n_3 = folder_management.CopyFoldersRecursive()
         self.assertIsNotNone(n_3)
 
     def test_attribute_name(self):
@@ -43,7 +43,7 @@ def test_attribute_name(self):
         """
         utils.print_test_header("test_attribute_name")
 
-        n_1 = general_nodes.GetDictKey()
+        n_1 = miscellaneous.GetDictKey()
         in_dict_attr = n_1["in_dict"]
         self.assertRegex(in_dict_attr.dot_name, "GetDictKey_\d+\.in_dict")
 
@@ -53,8 +53,8 @@ def test_connection(self):
         """
         utils.print_test_header("test_connection")
 
-        n_1 = file_reading_nodes.JsonToDict()
-        n_2 = general_nodes.GetDictKey()
+        n_1 = file_reading.JsonToDict()
+        n_2 = miscellaneous.GetDictKey()
         self.assertTrue(n_1.connect_attribute("out_dict", n_2, "in_dict")[0])
         self.assertFalse(n_1["out_dict"].connect_to_other(n_2["key"])[0])
         self.assertFalse(n_2["in_dict"].connect_to_other(n_2["key"])[0])
@@ -66,9 +66,9 @@ def test_connection_cycle(self):
         """
         utils.print_test_header("test_connection_cycle")
 
-        n_1 = debug_nodes.EmptyNode()
-        n_2 = debug_nodes.EmptyNode()
-        n_3 = debug_nodes.EmptyNode()
+        n_1 = debug.EmptyNode()
+        n_2 = debug.EmptyNode()
+        n_3 = debug.EmptyNode()
         n_1.connect_attribute(constants.COMPLETED, n_2, constants.START)
         n_2.connect_attribute(constants.COMPLETED, n_3, constants.START)
         connection_status, _ = n_3.connect_attribute(
@@ -82,8 +82,8 @@ def test_getting_internal_dict(self):
         """
         utils.print_test_header("test_getting_internal_dict")
 
-        n_1 = general_input_nodes.StrInput()
-        n_2 = general_nodes.GetDictKey()
+        n_1 = general_input.StrInput()
+        n_2 = miscellaneous.GetDictKey()
 
         n_1.set_attribute_value("internal_str", "test")
         n_1.connect_attribute("out_str", n_2, "key")
@@ -100,19 +100,19 @@ def test_inputs_checked_run(self):
         """
         utils.print_test_header("test_inputs_checked_run")
 
-        n_1 = debug_nodes.EmptyNode()
+        n_1 = debug.EmptyNode()
         n_1.run_single()
         self.assertEqual(n_1.success, constants.SUCCESSFUL)
 
-        n_2 = file_reading_nodes.JsonToDict()
+        n_2 = file_reading.JsonToDict()
         n_2.run_single()
         self.assertEqual(n_2.success, constants.NOT_RUN)
 
-        n_3 = file_writing_nodes.CreateTempFile()
+        n_3 = file_writing.CreateTempFile()
         n_3.run_single()
         self.assertEqual(n_3.success, constants.SUCCESSFUL)
 
-        n_4 = file_writing_nodes.CreateTempFile()
+        n_4 = file_writing.CreateTempFile()
         n_4["suffix"].set_value(".txt")
         n_4.run_single()
         self.assertEqual(n_4.success, constants.SUCCESSFUL)
@@ -125,7 +125,7 @@ def test_run_node_1(self):
 
         temp = tempfile.NamedTemporaryFile(suffix=".yaml", delete=False)
         temp.close()
-        n_1 = file_writing_nodes.DictToYaml()
+        n_1 = file_writing.DictToYaml()
         n_1.set_attribute_value("in_dict", NodeTesting.DICT_EXAMPLE)
         n_1.set_attribute_value("yaml_filepath_to_write", temp.name)
         n_1._run()
@@ -139,7 +139,7 @@ def test_run_node_2(self):
         """
         utils.print_test_header("test_run_node_2")
 
-        n_1 = file_writing_nodes.CreateTempFile()
+        n_1 = file_writing.CreateTempFile()
         n_1._run()
         out_temp_path = n_1.get_attribute_value("tempfile_path")
         self.assertTrue(os.path.exists(out_temp_path))
@@ -152,7 +152,7 @@ def test_node_fails(self):
         """
         utils.print_test_header("test_node_fails")
 
-        n_1 = general_nodes.GetDictKey()
+        n_1 = miscellaneous.GetDictKey()
         n_1.set_attribute_value("in_dict", NodeTesting.DICT_EXAMPLE)
         n_1.set_attribute_value("key", "FAKE")
         n_1._run()
@@ -165,7 +165,7 @@ def test_node_exception(self):
         """
         utils.print_test_header("test_node_exception")
 
-        n_1 = debug_nodes.ErrorNode()
+        n_1 = debug.ErrorNode()
         n_1._run()
 
         self.assertEqual(n_1.success, constants.ERROR)
@@ -176,7 +176,7 @@ def test_node_execution_time(self):
         """
         utils.print_test_header("test_node_execution_time")
 
-        n_1 = debug_nodes.TimedNode()
+        n_1 = debug.TimedNode()
         n_1.run_single()
 
         self.assertGreater(n_1.execution_time, 1.0)