diff --git a/src/simudator/core/modules/register.py b/src/simudator/core/modules/register.py
index 1d066ed7b9c2d983e0abe3365097e5a6c66be65d..4f15d9d0679142567706ab9c27d7a7a25ea778d3 100644
--- a/src/simudator/core/modules/register.py
+++ b/src/simudator/core/modules/register.py
@@ -71,7 +71,7 @@ class Register(Module):
         return state
 
     def get_gui_state(self) -> dict[str, Any]:
-        state = self.get_state()
+        state = {"name": self.name, "value": self._value}
         return state
 
     def set_state(self, state: dict[str, Any]) -> None:
diff --git a/src/simudator/gui/module_graphics_item/integer_memory_graphic.py b/src/simudator/gui/module_graphics_item/integer_memory_graphic.py
index a177b6228b5395a5c163bf8d1c371f4e0f0a923a..c746c082c3fcc3e33d16b20949415b833cdfcf07 100644
--- a/src/simudator/gui/module_graphics_item/integer_memory_graphic.py
+++ b/src/simudator/gui/module_graphics_item/integer_memory_graphic.py
@@ -248,6 +248,6 @@ class IntegerMemoryTable(MemoryTable):
         # -7 + 16 % 16 = 9 = 1001 = -7
         value = (value + max_value) % max_value
 
-        index = row * 4 + col
+        index = row * self._column_size + col
         state['memory'][index] = value
         self._memory.set_state(state)
diff --git a/src/simudator/gui/module_graphics_item/memory_graphic.py b/src/simudator/gui/module_graphics_item/memory_graphic.py
index 5cf08f503d89d6bd54a958abe1461747dd472461..26c95fe5897a8b6fe162db809a5e68ed5fde3e7d 100644
--- a/src/simudator/gui/module_graphics_item/memory_graphic.py
+++ b/src/simudator/gui/module_graphics_item/memory_graphic.py
@@ -191,12 +191,12 @@ class MemoryTable(QTableWidget):
         return
 
     def _on_cell_changed(self, row, col):
-        state = self._memory.get_state()
+        state = self._memory.get_gui_state()
         item = self.item(row, col)
         value = item.text()
         if value == "":
             return
-        index = row * 4 + col
+        index = row * self._column_size + col
         state['memory'][index] = value
         self._memory.set_state(state)
 
diff --git a/src/simudator/gui/module_graphics_item/module_graphics_item.py b/src/simudator/gui/module_graphics_item/module_graphics_item.py
index 89d8e9a87fe5aff05f8659277ab34a50bb99f31e..b676114c181c5f32a6294b8df53649621e39b122 100644
--- a/src/simudator/gui/module_graphics_item/module_graphics_item.py
+++ b/src/simudator/gui/module_graphics_item/module_graphics_item.py
@@ -57,7 +57,7 @@ class ModuleGraphicsItem(QGraphicsObject, QGraphicsItem):
 
         # Get information about module
         # Get inputs/outputs is not always implemented so might not show all ports
-        self.state = module.get_state()
+        self.state = module.get_gui_state()
         self.input_signals = module.get_input_signals()
         self.output_signals = module.get_output_signals()
 
diff --git a/src/simudator/gui/module_graphics_item/register_graphic.py b/src/simudator/gui/module_graphics_item/register_graphic.py
index b84f1414e9e1f84384b41ff699b227a9f72be5e3..5f27cbd458b9c9d239c764a0c99e3b50af019b69 100644
--- a/src/simudator/gui/module_graphics_item/register_graphic.py
+++ b/src/simudator/gui/module_graphics_item/register_graphic.py
@@ -38,7 +38,7 @@ class RegisterGraphicsItem(ModuleGraphicsItem):
         )
 
     def update(self):
-        state = self.module.get_state()
+        state = self.module.get_gui_state()
         full_text = f"{state['name']}: {state['value']}"
         self.text.setText(full_text)
 
@@ -52,6 +52,6 @@ class IntegerRegisterGraphicsItem(RegisterGraphicsItem):
     def update(self):
         parameter = self.module.get_parameter()
         hex_length = math.ceil(parameter["bit_length"] / 4)
-        state = self.module.get_state()
+        state = self.module.get_gui_state()
         full_text = f"{state['name']}: {state['value']:0{hex_length}x}"
         self.text.setText(full_text)
diff --git a/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py b/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py
index aedf31b56a012561fc5ed1cf0f872c071f142336..6910d2bfd4c83b10f72b4b5ce834d5f3d8d84730 100644
--- a/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py
+++ b/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py
@@ -35,7 +35,7 @@ class MicroMemoryGraphicsItem(MiaMemoryGraphicsItem):
 
     def update(self):
         # get instruction field
-        uM_state = self.module.get_state()
+        uM_state = self.module.get_gui_state()
 
         instr = uM_state["curr_instr"]
 
diff --git a/src/simudator/processor/mia/gui/pc_graphic.py b/src/simudator/processor/mia/gui/pc_graphic.py
index 34ed5fcbe1aa599609cd154e72968116ac713818..354250597e2d8580858627da8416cfa0e86d5e54 100644
--- a/src/simudator/processor/mia/gui/pc_graphic.py
+++ b/src/simudator/processor/mia/gui/pc_graphic.py
@@ -10,7 +10,7 @@ class PcGraphicsItem(IntegerRegisterGraphicsItem):
     """
 
     def update(self):
-        self.state = self.module.get_state()
+        self.state = self.module.get_gui_state()
         name = self.state["name"]
         value = self.state["value"]
 
diff --git a/src/simudator/processor/mia/gui/upc_graphic.py b/src/simudator/processor/mia/gui/upc_graphic.py
index 85d27b9a1715fbf22970baf711611fb7e5e9ac9c..453a1e11be8d216f7c51d8239bc70504bf8af2f4 100644
--- a/src/simudator/processor/mia/gui/upc_graphic.py
+++ b/src/simudator/processor/mia/gui/upc_graphic.py
@@ -11,9 +11,9 @@ class uPcGraphicsItem(IntegerRegisterGraphicsItem):
     """
 
     def update(self):
-        self.state = self.module.get_state()
-        name = self.state["name"]
-        value = self.state["value"]
+        self.gui_state = self.module.get_gui_state()
+        name = self.gui_state["name"]
+        value = self.gui_state["value"]
 
         full_text = f"{name}: {value:02x}"
 
@@ -27,12 +27,16 @@ class uPcGraphicsItem(IntegerRegisterGraphicsItem):
         )
 
         # Draw from K1 port
-        from_k1 = PortGraphicsItem(self.module.signals["in_k1"], Orientation.UP, parent=self)
+        from_k1 = PortGraphicsItem(
+            self.module.signals["in_k1"], Orientation.UP, parent=self
+        )
         from_k1.setPos(width * 2 / 8, 0)
         self.ports.append(from_k1)
 
         # Draw from K2 port
-        from_k2 = PortGraphicsItem(self.module.signals["in_k2"], Orientation.UP, parent=self)
+        from_k2 = PortGraphicsItem(
+            self.module.signals["in_k2"], Orientation.UP, parent=self
+        )
         from_k2.setPos(width * 6 / 8, 0)
         self.ports.append(from_k2)
 
diff --git a/src/simudator/processor/mia/modules/lc.py b/src/simudator/processor/mia/modules/lc.py
index 6f815a38161c1cf8526afe01b20c154aed0c03bc..bf5b89d4a73c14a62dc11c50403bb234020f6cc7 100644
--- a/src/simudator/processor/mia/modules/lc.py
+++ b/src/simudator/processor/mia/modules/lc.py
@@ -158,6 +158,11 @@ class LC(Module):
         state["decrement_by_one"] = self._decrement_by_one
         return state
 
+    def get_gui_state(self) -> dict[str, Any]:
+        state = super().get_gui_state()
+        state["value"] = self._value
+        return state
+
     def get_parameter(self) -> dict[str, Any]:
         """Return a dictionary of the parameters of the loop counter,
         i.e. the bit length of the counter.
diff --git a/src/simudator/processor/mia/modules/micro_memory.py b/src/simudator/processor/mia/modules/micro_memory.py
index 4109d9b7f2d021f745e0c49524e639a1c2fb92c5..9ffe8893bbf54ebb0057d31509a141a45c2da9e9 100644
--- a/src/simudator/processor/mia/modules/micro_memory.py
+++ b/src/simudator/processor/mia/modules/micro_memory.py
@@ -284,8 +284,10 @@ class MicroMemory(Module):
         return state
 
     def get_gui_state(self) -> dict[str, Any]:
-        state = super().get_state()
+        state = super().get_gui_state()
         state["memory"] = self._memory[:]
+        state["halt"] = self._halt
+        state["curr_instr"] = self._curr_instr
         return state
 
     def set_state(self, state: dict) -> None: