diff --git a/b_asic/basic_operation.py b/b_asic/basic_operation.py
index 6810a9a753e327773d6ed8fe11e136b4ffb686e1..42689a74b0b173725f58e438c2fb6ed89598a9ba 100644
--- a/b_asic/basic_operation.py
+++ b/b_asic/basic_operation.py
@@ -23,7 +23,7 @@ class BasicOperation(Operation):
 	_output_ports: List[OutputPort]
 	_parameters: Dict[str, Optional[Any]]
 
-	def __init__(self, identifier: OperationId):
+	def __init__(self):
 		"""
 		Construct a BasicOperation.
 		"""
diff --git a/b_asic/signal.py b/b_asic/signal.py
index 4fac563faf48cb6a6a7ea585cf7aea44ce259758..6ef55c8d076320d52e5044296af0e3e65617728c 100644
--- a/b_asic/signal.py
+++ b/b_asic/signal.py
@@ -6,9 +6,6 @@ TODO: More info.
 from b_asic.operation import Operation
 from typing import NewType
 
-SignalId = NewType("SignalId", int)
-
-
 class SignalSource:
 	"""
 	Handle to a signal source.
@@ -50,22 +47,14 @@ class Signal:
 	A connection between two operations consisting of a source and destination handle.
 	TODO: More info.
 	"""
-	_identifier: SignalId
 	source: SignalSource
 	destination: SignalDestination
 
-	def __init__(self, identifier: SignalId, source: SignalSource, destination: SignalDestination):
+	def __init__(self, source: SignalSource, destination: SignalDestination):
 		"""
 		Construct a Signal.
 		"""
-		self._identifier = identifier
 		self.source = source
 		self.destination = destination
 
-	def identifier(self) -> SignalId:
-		"""
-		Get the unique identifier.
-		"""
-		return self._identifier
-
 	# TODO: More stuff.
diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index 3c709ab3a57b9c81b455630f89f315341e602384..3f804f0e9b81dfa2797ba40016eaba96414b2509 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -5,12 +5,14 @@ TODO: More info.
 
 from b_asic.operation import Operation
 from b_asic.basic_operation import BasicOperation
-from b_asic.signal import SignalSource, SignalDestination
+from b_asic.signal import Signal, SignalSource, SignalDestination
 from b_asic.simulation import SimulationState, OperationState
 from typing import List, Dict
 
 # Types
 OperationId = NewType("OperationId", int)
+SignalId = NewType("SignalId", int)
+
 
 
 class SFG(BasicOperation):
@@ -20,8 +22,9 @@ class SFG(BasicOperation):
 	"""
 
 	_operations: Dict[OperationID, Operation]
+	_signals: Dict[SignalID, Signal]
 
-	def __init__(self, identifier: OperationId, input_destinations: List[SignalDestination], output_sources: List[SignalSource]):
+	def __init__(self, input_destinations: List[SignalDestination], output_sources: List[SignalSource]):
 		"""
 		Construct a SFG.
 		"""
@@ -29,6 +32,7 @@ class SFG(BasicOperation):
 		# TODO: Allocate input/output ports with appropriate IDs.
 		
 		self._operations = dict # Map Operation ID to Operation objects
+		self._signals = dict # Map Signal ID to Signal objects	
 
 		# TODO: Traverse the graph between the inputs/outputs and add to self._operations.
 		# TODO: Connect ports with signals with appropriate IDs.
@@ -37,6 +41,5 @@ class SFG(BasicOperation):
 		return [] # TODO: Implement
 
 	def split(self) -> List[Operation]:
-		return self._operations
+		return self
 
-	# TODO: More stuff.
diff --git a/b_asic/simulation.py b/b_asic/simulation.py
index e219445b38abf7fc755295a4ccf8b6284ce6651b..5f9dffb6fe9e5d8b8850cd7a35ace9b450360520 100644
--- a/b_asic/simulation.py
+++ b/b_asic/simulation.py
@@ -3,7 +3,6 @@ B-ASIC Simulation Module.
 TODO: More info.
 """
 
-from b_asic.operation import OperationId
 from numbers import Number
 from typing import List, Dict