diff --git a/b_asic/scheduler-gui/__init__.py b/b_asic/scheduler-gui/__init__.py
index da8542a02e3b46d6ea02cfea99ada0ddb4bc12aa..6d2e933f306b6ea1507787f93c73d859a1e8ae28 100644
--- a/b_asic/scheduler-gui/__init__.py
+++ b/b_asic/scheduler-gui/__init__.py
@@ -3,10 +3,12 @@
 Graphical user interface for B-ASIC scheduler.
 """
 
-from logger import *
-from main_window import *
+from logger         import *
+from main_window    import *
 from graphics_graph import *
+from graphics_axis  import *
+from component_item import *
 
-#__all__ = ['main_window', 'scheduler']
+# __all__ = ['main_window', 'graphics_graph', 'graphics_axis', 'component_item']
 __version__ = '0.1'
 __author__ = 'Andreas Bolin'
diff --git a/b_asic/scheduler-gui/component_item.py b/b_asic/scheduler-gui/component_item.py
index 5f08f84b1100e88093b449ffcffbab7e5a01ce1a..0b9257a3dc66eed20d96cf530942be1a38f6c865 100644
--- a/b_asic/scheduler-gui/component_item.py
+++ b/b_asic/scheduler-gui/component_item.py
@@ -39,7 +39,7 @@ class ComponentItem(QGraphicsItemGroup):
     _item_group: QGraphicsItemGroup
     
     
-    def __init__(self, height: float = 1.0, parent: QGraphicsItem = None):
+    def __init__(self, height: float = 10.0, parent: QGraphicsItem = None):
         super().__init__(parent)
 
         self._height = height
@@ -48,6 +48,7 @@ class ComponentItem(QGraphicsItemGroup):
         
         self.setFlag(QGraphicsItem.ItemIsMovable)
         self.setFlag(QGraphicsItem.ItemIsSelectable)
+        # self.setHandlesChildEvents(False)
         
         self._populate()
     
@@ -57,11 +58,8 @@ class ComponentItem(QGraphicsItemGroup):
         return self._height
 
     def _populate(self) -> None:
-        # brush = QBrush(Qt.lightGray, bs=Qt.SolidPattern)
         brush = QBrush(Qt.lightGray)
-        # brush.setStyle(Qt.SolidPattern)
-        pen = QPen(Qt.SolidLine)
-        pen.setWidthF(1/self._scale)
+        pen = QPen(Qt.SolidPattern, 2/self._scale)
         pen.setBrush(Qt.darkGray)
         # pen.setCapStyle(Qt.RoundCap)      # Qt.FlatCap, Qt.SquareCap (default), Qt.RoundCap
         pen.setJoinStyle(Qt.RoundJoin)      # Qt.MiterJoin, Qt.BevelJoin (default), Qt.RoundJoin, Qt.SvgMiterJoin
@@ -69,21 +67,21 @@ class ComponentItem(QGraphicsItemGroup):
         # component path
         component_path = QPainterPath(QPoint(0,0))
         component_path.lineTo(0, self._height/2)
-        component_path.lineTo(0.2, self._height/2)
-        component_path.lineTo(0.2, self._height)
-        component_path.lineTo(4, self._height)
-        component_path.lineTo(4, 0)
+        component_path.lineTo(2, self._height/2)
+        component_path.lineTo(2, self._height)
+        component_path.lineTo(40, self._height)
+        component_path.lineTo(40, 0)
         component_path.closeSubpath()
 
         # component item
         self._component_item.setPath(component_path)
         self._component_item.setPen(pen)
         self._component_item.setBrush(brush)
-        self._component_item.setPos(1, 0)      # in parent (i.e. self) coordinates
+        self._component_item.setPos(10, 0)      # in parent (i.e. self) coordinates
         
         # execution time square
         execution_time_path = QPainterPath(QPoint(0,0))
-        execution_time_path.addRect(0, 0, 2.0, self._height)
+        execution_time_path.addRect(0, 0, 20, self._height)
 
         # execution time item
         green_color = QColor(Qt.magenta)
diff --git a/b_asic/scheduler-gui/graphics_axis.py b/b_asic/scheduler-gui/graphics_axis.py
index f6f7a345f125d0ff3dd8c38a5bbcf00e02b9c9c3..465726cc7bc80d60cc89cd79e1f5cecceb543475 100644
--- a/b_asic/scheduler-gui/graphics_axis.py
+++ b/b_asic/scheduler-gui/graphics_axis.py
@@ -1,3 +1,4 @@
+from operator import contains
 import os
 import sys
 from typing     import Any, Optional
@@ -6,7 +7,7 @@ from typing     import Any, AnyStr, Generic, Protocol, TypeVar, Union, Optional,
 # from typing_extensions import Self, Final, Literal, LiteralString, TypeAlias, final
 import numpy    as np
 from copy       import deepcopy
-from itertools  import combinations
+from math       import cos, sin, pi
 
 import qtpy
 from qtpy import QtCore
@@ -18,12 +19,12 @@ from qtpy.QtCore    import (
     Qt, QObject, QRect, QRectF, QPoint, QSize, QSizeF, QByteArray)
 from qtpy.QtGui     import (
     QPaintEvent, QPainter, QPainterPath, QColor, QBrush, QPen, QFont, QPolygon, QIcon, QPixmap,
-    QLinearGradient, QTransform)
+    QLinearGradient, QTransform, QPolygonF)
 from qtpy.QtWidgets import (
     QGraphicsView, QGraphicsScene, QGraphicsWidget,
     QGraphicsLayout, QGraphicsLinearLayout, QGraphicsGridLayout, QGraphicsLayoutItem, QGraphicsAnchorLayout,
     QGraphicsItem, QGraphicsItemGroup, QGraphicsPathItem, QGraphicsLineItem, QGraphicsTextItem, QGraphicsRectItem,
-    QStyleOptionGraphicsItem, QWidget, QGraphicsObject, QGraphicsSimpleTextItem)
+    QStyleOptionGraphicsItem, QWidget, QGraphicsObject, QGraphicsSimpleTextItem, QGraphicsPolygonItem)
 from qtpy.QtCore    import (
     QPoint, QPointF)
 
@@ -37,20 +38,21 @@ class GraphicsAxis(QGraphicsItemGroup):
     _scale: float = 1.0
     _width: float
     _height: float
+    _x_indent: float
     _axis: dict[str: Any]
+    Type: int
 
-
-    def __init__(self, width: float = 1.0, height: float = 1.0, parent: QGraphicsItem = None):
+    def __init__(self, width: float = 10.0, height: float = 10.0, x_indent: float = 2.0, parent: QGraphicsItem = None):
         super().__init__(parent)
 
-        self._width = width
-        self._height = height
+        
         self._axis = {}
-        # self._axis['x'] = QGraphicsItemGroup()
-        # self._axis['y'] = QGraphicsLineItem()
+        self.Type = 10                          # QGraphicsItemGroup.Type == 10
 
-        self._make_axis()
-        
+        self.update(width, height, x_indent)
+    
+    def type(self) -> int:
+        return self.Type
 
     @property
     def width(self) -> float:
@@ -76,10 +78,18 @@ class GraphicsAxis(QGraphicsItemGroup):
     #     for child in self._axis.values():
     #         del child
 
-    def _make_axis(self) -> None:
+    def update(self, width, height, x_indent) -> None:
+        self._width = width
+        self._height = height
+        self._x_indent = x_indent
         
-        pen = QPen()
-        pen.setWidthF(2/self._scale)
+        # make sure the group is empty
+        keys = list(self._axis.keys())
+        for key in keys:
+            self._axis[key].setParentItem(None)
+            del self._axis[key]
+
+        pen = QPen(Qt.SolidPattern, 2/self._scale, j = Qt.MiterJoin)
         
         # x-axis
         self._axis['x'] = QGraphicsItemGroup()
@@ -87,37 +97,37 @@ class GraphicsAxis(QGraphicsItemGroup):
         line.setPen(pen)
         self._axis['x'].addToGroup(line)
         # x-axis arrow
-        arrow_line1 = QGraphicsLineItem(0, 0, -0.05, -0.05)
-        arrow_line1.setPen(pen)
-        arrow_line1.setPos(self._width, 0)
-        self._axis['x'].addToGroup(arrow_line1)
-        arrow_line2 = QGraphicsLineItem(0, 0, -0.05, 0.05)
-        arrow_line2.setPen(pen)
-        arrow_line2.setPos(self._width, 0)
-        self._axis['x'].addToGroup(arrow_line2)
+        arrow_size = 8/self._scale
+        p0 = QPointF(0, sin(pi/6) * arrow_size)
+        p1 = QPointF(arrow_size, 0)
+        p2 = QPointF(0, -sin(pi/6) * arrow_size)
+        polygon = QPolygonF([p0, p1, p2])
+        arrow = QGraphicsPolygonItem(polygon)
+        arrow.setPen(pen)
+        arrow.setBrush(Qt.SolidPattern)
+        arrow.setPos(self._width, 0)
+        self._axis['x'].addToGroup(arrow)
         # x-axis scale
-        # ticks = [x for x in range(int(self._width) + 1)]
-        # print(f'{range(int(self._width) + 1)}')
-        # print('xxxxxxxxxxxxxxxxxxxxxxx', x)
         x_scale = []
         x_scale_labels = []
-        for i in range(int(self._width) + 1):
+        for i in range(int(self._width/10) + 1):
             # vertical x-scale
-            x_scale.append(QGraphicsLineItem(0, -0.05, 0, 0.05))
+            x_scale.append(QGraphicsLineItem(0, -0.5, 0, 0.5))
             x_scale[i].setPen(pen)
-            x_scale[i].setPos(0.2 + i, 0)
+            x_scale[i].setPos(self._x_indent + i*10, 0)
             self._axis['x'].addToGroup(x_scale[i])
             # numbers
             x_scale_labels.append(QGraphicsSimpleTextItem(str(i)))
             x_scale_labels[i].setScale(x_scale_labels[i].scale() / self._scale)
-            x_scale_labels[i].setPen(pen)
-            x_scale_labels[i].setPos(0.16 + i, 0.08)
+            half_width = x_scale_labels[i].boundingRect().width()/(2*self._scale)
+            x_scale_labels[i].setPos(self._x_indent + i*10 - half_width, 0.8)
             self._axis['x'].addToGroup(x_scale_labels[i])
-
         # x-axis label
         label = QGraphicsSimpleTextItem('time')
         label.setScale(label.scale() / self._scale)
-        label.setPos(self._width - 0.18, 0.08)
+        half_width = label.boundingRect().width()/(2*self._scale)
+        arrow_half_width = arrow_size/2
+        label.setPos(self._width - half_width + arrow_half_width, 0.8)
         self._axis['x'].addToGroup(label)
         self._axis['x'].boundingRect()
         # add x-axis
@@ -127,7 +137,6 @@ class GraphicsAxis(QGraphicsItemGroup):
         # y-axis
         self._axis['y'] = QGraphicsLineItem(0, 0, 0, self._height)
         self._axis['y'].setPen(pen)
-        self._axis['y'].setPos(0, 0)
         # add y-axis
         self.addToGroup(self._axis['y'])
         
\ No newline at end of file
diff --git a/b_asic/scheduler-gui/graphics_graph.py b/b_asic/scheduler-gui/graphics_graph.py
index 035ccf10ebd0d3c95c3e422706142475c8a345e2..bfebf454a32e68ff9a6e703aa5586e8e099a1e99 100644
--- a/b_asic/scheduler-gui/graphics_graph.py
+++ b/b_asic/scheduler-gui/graphics_graph.py
@@ -40,34 +40,45 @@ class GraphicsGraph(QGraphicsItemGroup):
     _axis: GraphicsAxis
     _component_group: QGraphicsItemGroup
     _axis_group: QGraphicsItemGroup
+    
+    _components_height: float
+    _x_axis_indent: float
 
     
     def __init__(self, schedule: Schedule, parent: QGraphicsItem = None):
         super().__init__(parent)
         
+        self.setHandlesChildEvents(False)
+        
         self._schedule = deepcopy(schedule)
         self._axis = None
         self._component_group = QGraphicsItemGroup()
         self._axis_group = QGraphicsItemGroup()
 
         # add components
-        y: float = 0.0
+        self._x_axis_indent = 2.0
+        self._components_height = 0.0
         for i in range(5):
             component = ComponentItem()
-            component.setPos(0, y)
+            component.setPos(0, self._components_height)
             self._component_group.addToGroup(component)
-            y += component.height + 0.2
+            self._components_height += component.height + 2
 
         
-        self._component_group.setPos(0.2, 0.1)
+        self._component_group.setPos(self._x_axis_indent, 1)
         self.addToGroup(self._component_group)
 
-        y += 0.1
+        self._components_height += 1.5
         # add axis
-        self._axis = GraphicsAxis(5 + 0.6, y)
+        self._axis = GraphicsAxis(50 + 6, self._components_height, self._x_axis_indent)
         self.addToGroup(self._axis)
         
-        
+    def update(self) -> None:
+        # self.prepareGeometryChange()
+        self.removeFromGroup(self._axis)
+        self._axis.update(40 + 6, self._components_height, self._x_axis_indent)
+        self.addToGroup(self._axis)
+
             
 
     # @property
diff --git a/b_asic/scheduler-gui/main_window.py b/b_asic/scheduler-gui/main_window.py
index b6e722d65170833e95eb4d5bb1e368a2d956a90e..d638ded3a9b38ef47e3db4f9b79dc17a43ab9398 100644
--- a/b_asic/scheduler-gui/main_window.py
+++ b/b_asic/scheduler-gui/main_window.py
@@ -33,14 +33,14 @@ from qtpy.QtWidgets import (
 
 # QGraphics and QPainter imports
 from qtpy.QtCore    import (
-    QRect, QRectF, QPoint, QSize, QByteArray)
+    QRect, QRectF, QPoint, QSize, QByteArray, QMarginsF)
 from qtpy.QtGui     import (
     QPaintEvent, QPainter, QPainterPath, QColor, QBrush, QPen, QFont, QPolygon, QIcon, QPixmap,
     QLinearGradient)
 from qtpy.QtWidgets import (
     QGraphicsView, QGraphicsScene, QGraphicsWidget, QGraphicsScale,
     QGraphicsLayout, QGraphicsLinearLayout, QGraphicsGridLayout, QGraphicsLayoutItem, QGraphicsAnchorLayout,
-    QGraphicsItem, QGraphicsItemGroup)
+    QGraphicsItem, QGraphicsItemGroup, QGraphicsRectItem)
 
 # B-ASIC
 import logger
@@ -117,6 +117,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
     _scene_count: int
     _open_file_dialog_opened: bool
     _scale: float
+    _debug_rects: QGraphicsItemGroup
 
     
     def __init__(self):
@@ -127,7 +128,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
         self._scene_count = 0
         self._graph_count = 0
         self._open_file_dialog_opened = False
-        self._scale = 75.0
+        self._scale = 10.0
+        self._debug_rects = None
         
         QIcon.setThemeName('breeze')
         log.debug('themeName: \'{}\''.format(QIcon.themeName()))
@@ -275,21 +277,29 @@ class MainWindow(QMainWindow, Ui_MainWindow):
 
 
         graph = GraphicsGraph(schedule)
-        # graph.setPos(200, 20)
         self._scene.addItem(graph)
+        
+        # graph.prepareGeometryChange()
+        # graph.setPos(200, 20)
 
-        # Debug rectangles
+        # self._scene.setSceneRect(self._scene.itemsBoundingRect())   # Forces the scene to it's minimum size
+        
+        # # Debug rectangles
         # if __debug__:
-        #     self._scene.setSceneRect(self._scene.itemsBoundingRect())   # Forces the scene to it's minimum size
+        #     # self._scene.setSceneRect(self._scene.itemsBoundingRect())   # Forces the scene to it's minimum size
+        #     m = QMarginsF(1/self._scale, 1/self._scale, 0, 0)
+        #     m2 = QMarginsF(1, 1, 1, 1)
         #     pen = QPen(Qt.red)
-        #     pen.setStyle(Qt.DashLine)
+        #     pen.setStyle(Qt.DotLine)
         #     pen.setCosmetic(True)
         #     for component in graph.items:
-        #         self._scene.addRect(component.mapRectToScene(component.boundingRect()), pen)
+        #         self._scene.addRect(component.mapRectToScene(component.boundingRect() - m), pen)
+        #     pen.setColor(Qt.red)
         #     for axis in graph.axis.childItems():
-        #         self._scene.addRect(axis.mapRectToScene(axis.boundingRect()), pen)
+        #         self._scene.addRect(axis.mapRectToScene(axis.boundingRect() - m), pen)
         #     pen.setColor(Qt.green)
-        #     self._scene.addRect(self._scene.itemsBoundingRect(), pen)
+        #     # self._scene.addRect(self._scene.itemsBoundingRect() - m, pen)
+