diff --git a/b_asic/signal_generator.py b/b_asic/signal_generator.py
index 7ce87cc1edd784b854e2c4c8f3cc368218847a61..4fbdc38853170f65ba736a4a508db85ba0c21b37 100644
--- a/b_asic/signal_generator.py
+++ b/b_asic/signal_generator.py
@@ -90,6 +90,8 @@ class Impulse(SignalGenerator):
         The delay before the signal goes to 1 for one sample.
     """
 
+    __slots__ = ("_delay",)
+
     def __init__(self, delay: int = 0) -> None:
         self._delay = delay
 
@@ -110,6 +112,8 @@ class Step(SignalGenerator):
         The delay before the signal goes to 1.
     """
 
+    __slots__ = ("_delay",)
+
     def __init__(self, delay: int = 0) -> None:
         self._delay = delay
 
@@ -130,6 +134,8 @@ class Constant(SignalGenerator):
         The constant.
     """
 
+    __slots__ = ("_constant",)
+
     def __init__(self, constant: complex = 1.0) -> None:
         self._constant = constant
 
@@ -150,6 +156,8 @@ class ZeroPad(SignalGenerator):
         The data that should be padded.
     """
 
+    __slots__ = ("_data", "_len")
+
     def __init__(self, data: Sequence[complex]) -> None:
         self._data = data
         self._len = len(data)
diff --git a/pyproject.toml b/pyproject.toml
index f5cc2814b6cb6f141fb9e3c1abd82e40c00f03a8..c0d7de2f3de2c0ef05ede630c7ac44e96d78da1d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,9 +9,9 @@ dependencies = [
   "numpy",
   "qtpy",
   "graphviz>=0.19",
-  "matplotlib",
+  "matplotlib>=3.7",
   "setuptools_scm[toml]>=6.2",
-  "networkx",
+  "networkx>=3",
   "qtawesome"
 ]
 classifiers = [
diff --git a/requirements.txt b/requirements.txt
index ff0a1020594e70099e4d9cab049b03b09a2fd693..5fc3bae5b83499ff0df0c2d065c9e05b1aa7e4c4 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
 numpy
 qtpy
 graphviz>=0.19
-matplotlib
+matplotlib>=3.7
 setuptools_scm[toml]>=6.2
-networkx
+networkx>=3
 qtawesome