diff --git a/b_asic/GUI/main_window.py b/b_asic/GUI/main_window.py
index 909681dfa15ca92a552d035421423c543049add9..b4e94b8091fc01a05b73050ae7ed8ae4d67aa29e 100644
--- a/b_asic/GUI/main_window.py
+++ b/b_asic/GUI/main_window.py
@@ -210,18 +210,22 @@ class MainWindow(QMainWindow):
 
         self.logger.info(f"Saved SFG to path: {module}.")
 
-    def save_work(self):
+    def save_work(self, arg):
+        print("Save: ", arg)
         self.sfg_widget = SelectSFGWindow(self)
         self.sfg_widget.show()
 
         # Wait for input to dialog.
         self.sfg_widget.ok.connect(self._save_work)
 
-    def load_work(self):
+    def load_work(self, arg):
+        print("Load: ", arg)
         module, accepted = QFileDialog().getOpenFileName()
         if not accepted:
             return
+        self._load_from_file(module)
 
+    def _load_from_file(self, module):
         self.logger.info(f"Loading SFG from path: {module}.")
         try:
             sfg, positions = python_to_sfg(module)
@@ -244,6 +248,12 @@ class MainWindow(QMainWindow):
                 return
 
             sfg.name = name
+        self._load_sfg(sfg, positions)
+        self.logger.info(f"Loaded SFG from path: {module}.")
+
+    def _load_sfg(self, sfg, positions=None):
+        if positions is None:
+            positions = {}
 
         for op in sfg.split():
             self.create_operation(
@@ -285,7 +295,6 @@ class MainWindow(QMainWindow):
             self.opToSFG[self.operationDragDict[op]] = sfg
 
         self.sfg_dict[sfg.name] = sfg
-        self.logger.info(f"Loaded SFG from path: {module}.")
         self.update()
 
     def exit_app(self):
diff --git a/examples/twotapfirsfg.py b/examples/twotapfirsfg.py
new file mode 100644
index 0000000000000000000000000000000000000000..1456dbba99a0cdd1c4d0f7f5d22e33e49e92af1c
--- /dev/null
+++ b/examples/twotapfirsfg.py
@@ -0,0 +1,35 @@
+
+"""
+B-ASIC automatically generated SFG file.
+Name: twotapfir
+Last saved: 2023-01-23 11:29:09.423052.
+"""
+from b_asic import SFG, Signal, Input, Output, ConstantMultiplication, Delay, Input, Output, Addition
+# Inputs:
+in1 = Input(name="")
+
+# Outputs:
+out1 = Output(name="")
+
+# Operations:
+cmul1 = ConstantMultiplication(value=0.5, name="cmul", latency_offsets={'in0': None, 'out0': None})
+in1 = Input(name="")
+add1 = Addition(name="", latency_offsets={'in0': None, 'in1': None, 'out0': None})
+cmul2 = ConstantMultiplication(value=0.5, name="cmul2", latency_offsets={'in0': None, 'out0': None})
+out1 = Output(name="")
+t1 = Delay(initial_value=0, name="")
+in1 = Input(name="")
+
+# Signals:
+
+Signal(source=cmul1.output(0), destination=add1.input(1))
+Signal(source=in1.output(0), destination=cmul1.input(0))
+Signal(source=in1.output(0), destination=t1.input(0))
+Signal(source=add1.output(0), destination=out1.input(0))
+Signal(source=cmul2.output(0), destination=add1.input(0))
+Signal(source=t1.output(0), destination=cmul2.input(0))
+twotapfir = SFG(inputs=[in1], outputs=[out1], name='twotapfir')
+
+# SFG Properties:
+prop = {'name':twotapfir}
+positions = {'in1': (-264.0, -202.0), 't1': (-135.0, -204.0), 'out1': (216.0, 92.0), 'cmul1': (-181.0, -67.0), 'cmul2': (-27.0, -66.0), 'add1': (91.0, 93.0)}
diff --git a/test/conftest.py b/test/conftest.py
index 637da5fa37a3609c3a4d5e29d8d2c1dca80576da..9f33ab9d1059470ffb16558ec2e737d163abdf51 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -3,4 +3,21 @@ from test.fixtures.port import *
 from test.fixtures.signal import signal, signals
 from test.fixtures.signal_flow_graph import *
 
+from distutils import dir_util
+import os
+
 import pytest
+
+
+@pytest.fixture
+def datadir(tmpdir, request):
+    print(tmpdir, request)
+    filename = request.module.__file__
+    print(filename)
+    test_dir, ext = os.path.splitext(filename)
+    print(test_dir, ext)
+
+    if os.path.isdir(test_dir):
+        dir_util.copy_tree(test_dir, str(tmpdir))
+
+    return tmpdir
diff --git a/test/test_gui.py b/test/test_gui.py
index cbd73be198ba9fb5a6cca1bb711a14f891829a96..ec977a0c5fdb6e3493c52c2352b91f0f068d16d4 100644
--- a/test/test_gui.py
+++ b/test/test_gui.py
@@ -11,3 +11,15 @@ def test_start(qtbot):
     qtbot.addWidget(widget)
 
     widget.exit_app()
+
+
+def test_load(qtbot, datadir):
+    widget = GUI.MainWindow()
+    qtbot.addWidget(widget)
+    widget._load_from_file(datadir.join('twotapfir.py'))
+    assert 'twotapfir' in widget.sfg_dict
+    widget.clear_workspace()
+    assert 'twotapfir' not in widget.sfg_dict
+    assert not widget.sfg_dict
+
+    widget.exit_app()
diff --git a/test/test_gui/twotapfir.py b/test/test_gui/twotapfir.py
new file mode 100644
index 0000000000000000000000000000000000000000..dd9edd6a478df5263970267e27f769d7ff5e9f61
--- /dev/null
+++ b/test/test_gui/twotapfir.py
@@ -0,0 +1,58 @@
+"""
+B-ASIC automatically generated SFG file.
+Name: twotapfir
+Last saved: 2023-01-23 11:29:09.423052.
+"""
+from b_asic import (
+    SFG,
+    Signal,
+    Input,
+    Output,
+    ConstantMultiplication,
+    Delay,
+    Input,
+    Output,
+    Addition,
+)
+
+# Inputs:
+in1 = Input(name="")
+
+# Outputs:
+out1 = Output(name="")
+
+# Operations:
+cmul1 = ConstantMultiplication(
+    value=0.5, name="cmul", latency_offsets={'in0': None, 'out0': None}
+)
+in1 = Input(name="")
+add1 = Addition(
+    name="", latency_offsets={'in0': None, 'in1': None, 'out0': None}
+)
+cmul2 = ConstantMultiplication(
+    value=0.5, name="cmul2", latency_offsets={'in0': None, 'out0': None}
+)
+out1 = Output(name="")
+t1 = Delay(initial_value=0, name="")
+in1 = Input(name="")
+
+# Signals:
+
+Signal(source=cmul1.output(0), destination=add1.input(1))
+Signal(source=in1.output(0), destination=cmul1.input(0))
+Signal(source=in1.output(0), destination=t1.input(0))
+Signal(source=add1.output(0), destination=out1.input(0))
+Signal(source=cmul2.output(0), destination=add1.input(0))
+Signal(source=t1.output(0), destination=cmul2.input(0))
+twotapfir = SFG(inputs=[in1], outputs=[out1], name='twotapfir')
+
+# SFG Properties:
+prop = {'name': twotapfir}
+positions = {
+    'in1': (-264.0, -202.0),
+    't1': (-135.0, -204.0),
+    'out1': (216.0, 92.0),
+    'cmul1': (-181.0, -67.0),
+    'cmul2': (-27.0, -66.0),
+    'add1': (91.0, 93.0),
+}
diff --git a/test/test_scheduler_gui.py b/test/test_scheduler_gui.py
index ebfdad70c6e5a94c37c550dc0d16a81b13b2f92e..9dc4abcecc490c911105b94185e9a39565091cf7 100644
--- a/test/test_scheduler_gui.py
+++ b/test/test_scheduler_gui.py
@@ -2,6 +2,7 @@ import pytest
 
 from b_asic.core_operations import Addition, ConstantMultiplication
 from b_asic.schedule import Schedule
+
 try:
     import b_asic.scheduler_gui as GUI
 except ImportError: