diff --git a/b_asic/basic_operation.py b/b_asic/basic_operation.py
index e87860c6a226484afd6d3ba6c28811cd7b545b66..6810a9a753e327773d6ed8fe11e136b4ffb686e1 100644
--- a/b_asic/basic_operation.py
+++ b/b_asic/basic_operation.py
@@ -8,9 +8,10 @@ from b_asic.signal import SignalSource, SignalDestination
 from b_asic.operation import OperationId, Operation
 from b_asic.simulation import SimulationState, OperationState
 from abc import ABC, abstractmethod
-from typing import List, Dict, Optional, Any, final
+from typing import List, Dict, Optional, Any
 from numbers import Number
 
+
 class BasicOperation(Operation):
 	"""
 	Generic abstract operation class which most implementations will derive from.
@@ -38,43 +39,33 @@ class BasicOperation(Operation):
 		"""
 		pass
 
-	@final
 	def id(self) -> OperationId:
 		return self._identifier
-		
-	@final
+
 	def inputs(self) -> List[InputPort]:
 		return self._input_ports.copy()
 
-	@final
 	def outputs(self) -> List[OutputPort]:
 		return self._output_ports.copy()
 
-	@final
 	def input_count(self) -> int:
 		return len(self._input_ports)
 
-	@final
 	def output_count(self) -> int:
 		return len(self._output_ports)
 
-	@final
 	def input(self, i: int) -> InputPort:
 		return self._input_ports[i]
 
-	@final
 	def output(self, i: int) -> OutputPort:
 		return self._output_ports[i]
 
-	@final
 	def params(self) -> Dict[str, Optional[Any]]:
 		return self._parameters.copy()
-	
-	@final
+
 	def param(self, name: str) -> Optional[Any]:
 		return self._parameters.get(name)
 
-	@final
 	def set_param(self, name: str, value: Any) -> None:
 		assert name in self._parameters # TODO: Error message.
 		self._parameters[name] = value
@@ -110,5 +101,5 @@ class BasicOperation(Operation):
 		if all(isinstance(e, Operation) for e in results):
 			return results
 		return [self]
-		
-	# TODO: More stuff.
\ No newline at end of file
+
+	# TODO: More stuff.
diff --git a/b_asic/core_operations.py b/b_asic/core_operations.py
index 553d7cff4d7b06cfdc79704773e0d1a3e4edf390..c766d06c2f190b8a20763bf75f2661cb65df2fd0 100644
--- a/b_asic/core_operations.py
+++ b/b_asic/core_operations.py
@@ -7,7 +7,7 @@ from b_asic.port import InputPort, OutputPort
 from b_asic.operation import OperationId, Operation
 from b_asic.basic_operation import BasicOperation
 from numbers import Number
-from typing import final
+
 
 class Input(Operation):
 	"""
@@ -18,6 +18,7 @@ class Input(Operation):
 	# TODO: Implement.
 	pass
 
+
 class Constant(BasicOperation):
 	"""
 	Constant value operation.
@@ -32,10 +33,10 @@ class Constant(BasicOperation):
 		self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
 		self._parameters["value"] = value
 
-	@final
 	def evaluate(self, inputs: list) -> list:
 		return [self.param("value")]
 
+
 class Addition(BasicOperation):
 	"""
 	Binary addition operation.
@@ -50,7 +51,6 @@ class Addition(BasicOperation):
 		self._input_ports = [InputPort(), InputPort()] # TODO: Generate appropriate ID for ports.
 		self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
 
-	@final
 	def evaluate(self, inputs: list) -> list:
 		return [inputs[0] + inputs[1]]
 
@@ -70,8 +70,7 @@ class ConstantMultiplication(BasicOperation):
 		self._output_ports = [OutputPort()] # TODO: Generate appropriate ID for ports.
 		self._parameters["coefficient"] = coefficient
 
-	@final
 	def evaluate(self, inputs: list) -> list:
 		return [inputs[0] * self.param("coefficient")]
 
-# TODO: More operations.
\ No newline at end of file
+# TODO: More operations.
diff --git a/b_asic/operation.py b/b_asic/operation.py
index 310491bce3ea18e206d087c298d67d23655bc709..731822f1d0cbc06e5ad244c878c5dbaf8847b905 100644
--- a/b_asic/operation.py
+++ b/b_asic/operation.py
@@ -13,6 +13,7 @@ if TYPE_CHECKING:
 
 OperationId = NewType("OperationId", int)
 
+
 class Operation(ABC):
 	"""
 	Operation interface.
@@ -107,6 +108,6 @@ class Operation(ABC):
 		If splitting is not possible, this may return a list containing only the operation itself.
 		"""
 		pass
-	
+
 	# TODO: More stuff.
 
diff --git a/b_asic/port.py b/b_asic/port.py
index 6b1e8d2025ee5696f1365b8b8b2195167620925f..2d5405ed7f204e32342b31f7fc3d41a02f247b42 100644
--- a/b_asic/port.py
+++ b/b_asic/port.py
@@ -5,10 +5,11 @@ TODO: More info.
 
 from b_asic.signal import Signal
 from abc import ABC, abstractmethod
-from typing import NewType, Optional, List, Dict, final
+from typing import NewType, Optional, List, Dict
 
 PortId = NewType("PortId", int)
 
+
 class Port(ABC):
 	"""
 	Abstract port class.
@@ -22,8 +23,7 @@ class Port(ABC):
 		Construct a Port.
 		"""
 		self._identifier = identifier
-	
-	@final
+
 	def identifier(self) -> PortId:
 		"""
 		Get the unique identifier.
@@ -36,7 +36,7 @@ class Port(ABC):
 		Get a list of all connected signals.
 		"""
 		pass
-	
+
 	@abstractmethod
 	def signal_count(self) -> int:
 		"""
@@ -67,6 +67,7 @@ class Port(ABC):
 
 	# TODO: More stuff.
 
+
 class InputPort(Port):
 	"""
 	Input port.
@@ -81,31 +82,27 @@ class InputPort(Port):
 		super().__init__(identifier)
 		self._source_signal = None
 
-	@final
 	def signals(self) -> List[Signal]:
 		return [] if self._source_signal == None else [self._source_signal]
-	
-	@final
+
 	def signal_count(self) -> int:
 		return 0 if self._source_signal == None else 1
 
-	@final
 	def signal(self, i: int = 0) -> Signal:
 		assert i >= 0 and i < self.signal_count() # TODO: Error message.
 		assert self._source_signal != None # TODO: Error message.
 		return self._source_signal
 
-	@final
 	def connect(self, signal: Signal) -> None:
 		self._source_signal = signal
 
-	@final
 	def disconnect(self, i: int = 0) -> None:
 		assert i >= 0 and i < self.signal_count() # TODO: Error message.
 		self._source_signal = None
 
 	# TODO: More stuff.
 
+
 class OutputPort(Port):
 	"""
 	Output port.
@@ -121,27 +118,22 @@ class OutputPort(Port):
 		super().__init__(identifier)
 		self._destination_signals = []
 
-	@final
 	def signals(self) -> List[Signal]:
 		return self._destination_signals.copy()
 
-	@final
 	def signal_count(self) -> int:
 		return len(self._destination_signals)
 
-	@final
 	def signal(self, i: int = 0) -> Signal:
 		assert i >= 0 and i < self.signal_count() # TODO: Error message.
 		return self._destination_signals[i]
 
-	@final
 	def connect(self, signal: Signal) -> None:
 		assert signal not in self._destination_signals # TODO: Error message.
 		self._destination_signals.append(signal)
-	
-	@final
+
 	def disconnect(self, i: int = 0) -> None:
 		assert i >= 0 and i < self.signal_count() # TODO: Error message.
 		del self._destination_signals[i]
-		
-	# TODO: More stuff.
\ No newline at end of file
+
+	# TODO: More stuff.
diff --git a/b_asic/precedence_chart.py b/b_asic/precedence_chart.py
index 76a22c9fe0b006192b3755268ceecdef0f1174eb..329c78d2d7fea1cc21971c187b43d50b703b205b 100644
--- a/b_asic/precedence_chart.py
+++ b/b_asic/precedence_chart.py
@@ -5,6 +5,7 @@ TODO: More info.
 
 from b_asic.signal_flow_graph import SFG
 
+
 class PrecedenceChart:
 	"""
 	Precedence chart constructed from a signal flow graph.
@@ -21,4 +22,4 @@ class PrecedenceChart:
 		self.sfg = sfg
 		# TODO: Implement.
 
-	# TODO: More stuff.
\ No newline at end of file
+	# TODO: More stuff.
diff --git a/b_asic/schema.py b/b_asic/schema.py
index c7a72526fc9a00f7bf573f98f17b68f6bd8c3003..56eb47ff0ad6674ac7acb610b8bc4bec8dc73d26 100644
--- a/b_asic/schema.py
+++ b/b_asic/schema.py
@@ -5,6 +5,7 @@ TODO: More info.
 
 from b_asic.precedence_chart import PrecedenceChart
 
+
 class Schema:
 	"""
 	Schema constructed from a precedence chart.
@@ -21,4 +22,4 @@ class Schema:
 		self.pc = pc
 		# TODO: Implement.
 
-	# TODO: More stuff.
\ No newline at end of file
+	# TODO: More stuff.
diff --git a/b_asic/signal.py b/b_asic/signal.py
index 36be9f58d6a9a9403fb034140c3b60958f436f85..4fac563faf48cb6a6a7ea585cf7aea44ce259758 100644
--- a/b_asic/signal.py
+++ b/b_asic/signal.py
@@ -8,6 +8,7 @@ from typing import NewType
 
 SignalId = NewType("SignalId", int)
 
+
 class SignalSource:
 	"""
 	Handle to a signal source.
@@ -25,6 +26,7 @@ class SignalSource:
 
 	# TODO: More stuff.
 
+
 class SignalDestination:
 	"""
 	Handle to a signal destination.
@@ -42,6 +44,7 @@ class SignalDestination:
 
 	# TODO: More stuff.
 
+
 class Signal:
 	"""
 	A connection between two operations consisting of a source and destination handle.
@@ -65,4 +68,4 @@ class Signal:
 		"""
 		return self._identifier
 
-	# TODO: More stuff.
\ No newline at end of file
+	# TODO: More stuff.
diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index 8fbbebff824dd3a82e8ba4c10f86286d6d4b828a..f9671636dd345fadfebd2a116a9add2466615db8 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -7,7 +7,8 @@ from b_asic.operation import OperationId, Operation
 from b_asic.basic_operation import BasicOperation
 from b_asic.signal import SignalSource, SignalDestination
 from b_asic.simulation import SimulationState, OperationState
-from typing import List, final
+from typing import List
+
 
 class SFG(BasicOperation):
 	"""
@@ -27,12 +28,10 @@ class SFG(BasicOperation):
 		# TODO: Traverse the graph between the inputs/outputs and add to self._operations.
 		# TODO: Connect ports with signals with appropriate IDs.
 
-	@final
 	def evaluate(self, inputs: list) -> list:
 		return [] # TODO: Implement
 
-	@final
 	def split(self) -> List[Operation]:
 		return self._operations
 
-	# TODO: More stuff.
\ No newline at end of file
+	# TODO: More stuff.
diff --git a/b_asic/simulation.py b/b_asic/simulation.py
index aa33cb337d913bead6a7446ce093efdb86b09cb5..e219445b38abf7fc755295a4ccf8b6284ce6651b 100644
--- a/b_asic/simulation.py
+++ b/b_asic/simulation.py
@@ -7,6 +7,7 @@ from b_asic.operation import OperationId
 from numbers import Number
 from typing import List, Dict
 
+
 class OperationState:
 	"""
 	Simulation state of an operation.
@@ -23,6 +24,7 @@ class OperationState:
 		self.output_values = []
 		self.iteration = 0
 
+
 class SimulationState:
 	"""
 	Simulation state.
@@ -39,4 +41,4 @@ class SimulationState:
 		self.operation_states = {}
 		self.iteration = 0
 
-	# TODO: More stuff.
\ No newline at end of file
+	# TODO: More stuff.