diff --git a/b_asic/scheduler_gui/axes_item.py b/b_asic/scheduler_gui/axes_item.py
index bfea80673e824926be7d951a9b01a6f15ab83e88..12342aaa249826fe2fdb6977eca282754df9644f 100644
--- a/b_asic/scheduler_gui/axes_item.py
+++ b/b_asic/scheduler_gui/axes_item.py
@@ -115,10 +115,6 @@ class AxesItem(QGraphicsItemGroup):
         # TODO: update, needed?
         # self._timeline.setParentItem(None)
         self._event_items = []
-        keys = list(self._axes.keys())
-        for key in keys:
-            self._axes[key].setParentItem(None)
-            del self._axes[key]
 
     @property
     def width(self) -> int:
diff --git a/b_asic/scheduler_gui/main_window.py b/b_asic/scheduler_gui/main_window.py
index 98a2b2bdb8f2810b1f4410d06508c781539a7a5c..2ed5db7b5347a375e87ed1478629a0e4a76c9afa 100644
--- a/b_asic/scheduler_gui/main_window.py
+++ b/b_asic/scheduler_gui/main_window.py
@@ -14,7 +14,7 @@ import webbrowser
 from collections import deque
 from copy import deepcopy
 from importlib.machinery import SourceFileLoader
-from typing import Deque, List, Optional, cast
+from typing import TYPE_CHECKING, Deque, List, Optional, cast
 
 # Qt/qtpy
 import qtpy
@@ -58,7 +58,10 @@ from b_asic.scheduler_gui.scheduler_item import SchedulerItem
 sys.path.insert(0, "icons/")  # Needed for *.rc.py files in ui_main_window
 from b_asic.scheduler_gui.ui_main_window import Ui_MainWindow
 
-log = logger.getLogger()
+if TYPE_CHECKING:
+    from logging import Logger
+
+log: "Logger" = logger.getLogger()
 sys.excepthook = logger.handle_exceptions
 
 
@@ -116,6 +119,13 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
         self.setupUi(self)
         self._read_settings()
         self._init_ui()
+
+        # Recent files
+        self._max_recent_files = 4
+        self._recent_files_actions: List[QAction] = []
+        self._recent_file_paths: Deque[str] = deque(maxlen=self._max_recent_files)
+        self._create_recent_file_actions_and_menus()
+
         self._init_graphics()
 
     def _init_ui(self) -> None:
@@ -149,12 +159,6 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
         self.splitter.setCollapsible(0, False)
         self.splitter.setCollapsible(1, True)
 
-        # Recent files
-        self._max_recent_files = 4
-        self._recent_files_actions: List[QAction] = []
-        self._recent_file_paths: Deque[str] = deque(maxlen=self._max_recent_files)
-        self._create_recent_file_actions_and_menus()
-
     def _init_graphics(self) -> None:
         """Initialize the QGraphics framework"""
         self._scene = QGraphicsScene()
@@ -527,9 +531,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
         )  # window: maximized, in X11 - always False
         settings.setValue("scheduler/pos", self.pos())  # window: pos
         settings.setValue("scheduler/size", self.size())  # window: size
-        settings.setValue(
-            "scheduler/state", self.saveState()
-        )  # toolbars, dockwidgets: pos, size
+        settings.setValue("scheduler/state", self.saveState())
         settings.setValue("scheduler/menu/node_info", self.menu_node_info.isChecked())
         settings.setValue("scheduler/splitter/state", self.splitter.saveState())
         settings.setValue("scheduler/splitter/pos", self.splitter.sizes()[1])
diff --git a/b_asic/scheduler_gui/operation_item.py b/b_asic/scheduler_gui/operation_item.py
index 67898a184acc22440b96438fec12e82e4dfdc906..01d0231a23d8dcd7fa4dd58e3f22560b0fe971d5 100644
--- a/b_asic/scheduler_gui/operation_item.py
+++ b/b_asic/scheduler_gui/operation_item.py
@@ -134,11 +134,6 @@ class OperationItem(QGraphicsItemGroup):
             self._height = height
             self._make_component()
 
-    @property
-    def end_time(self) -> int:
-        """The relative end time."""
-        return self._end_time
-
     @property
     def event_items(self) -> List[QGraphicsItem]:
         """List of objects that receives events."""
diff --git a/b_asic/scheduler_gui/scheduler_event.py b/b_asic/scheduler_gui/scheduler_event.py
index 7e6fa0ca8de5d882d9d220a60c37488445f48f76..96fa6c1dccd0045d3a58bcb99d729962806ac0dc 100644
--- a/b_asic/scheduler_gui/scheduler_event.py
+++ b/b_asic/scheduler_gui/scheduler_event.py
@@ -11,15 +11,7 @@ from typing import List, Optional, overload
 
 # QGraphics and QPainter imports
 from qtpy.QtCore import QEvent, QObject, QPointF, Signal
-from qtpy.QtGui import QFocusEvent
-from qtpy.QtWidgets import (
-    QGraphicsItem,
-    QGraphicsSceneContextMenuEvent,
-    QGraphicsSceneDragDropEvent,
-    QGraphicsSceneHoverEvent,
-    QGraphicsSceneMouseEvent,
-    QGraphicsSceneWheelEvent,
-)
+from qtpy.QtWidgets import QGraphicsItem, QGraphicsSceneMouseEvent
 
 from b_asic.schedule import Schedule
 from b_asic.scheduler_gui._preferences import OPERATION_GAP, OPERATION_HEIGHT
diff --git a/b_asic/scheduler_gui/scheduler_item.py b/b_asic/scheduler_gui/scheduler_item.py
index 82c8536a76a4895c0766107431a67a8618449ef1..8a09b7b1d94a3cdb96f0c06c33fec0a9367c6959 100644
--- a/b_asic/scheduler_gui/scheduler_item.py
+++ b/b_asic/scheduler_gui/scheduler_item.py
@@ -99,7 +99,6 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup):  # PySide2 / PyQt5
         # TODO: implement
         if self.schedule is None:
             raise ValueError("No schedule installed.")
-        end_time = item.end_time
         new_start_time = floor(pos) - floor(self._x_axis_indent)
         slacks = self.schedule.slacks(item.graph_id)
         op_start_time = self.schedule.start_time_of_operation(item.graph_id)
@@ -116,7 +115,7 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup):  # PySide2 / PyQt5
         else:
             if pos < 0:
                 return False
-            if new_start_time + end_time > self.schedule.schedule_time:
+            if new_start_time + item.operation.latency > self.schedule.schedule_time:
                 return False
 
         return True