diff --git a/b_asic/operation.py b/b_asic/operation.py
index 11cd476b99afd9c832b0c286bf6693e222763567..61fab3a70ed59dc158a4529c0ea825182bc3f84e 100644
--- a/b_asic/operation.py
+++ b/b_asic/operation.py
@@ -24,8 +24,16 @@ from typing import (
 )
 
 from b_asic.graph_component import AbstractGraphComponent, GraphComponent, Name
+from b_asic.core_operations import (
+    Addition,
+    Subtraction,
+    Multiplication,
+    ConstantMultiplication,
+    Division,
+)
 from b_asic.port import InputPort, OutputPort, SignalSourceProvider
 from b_asic.signal import Signal
+from b_asic.signal_flow_graph import SFG
 
 ResultKey = NewType("ResultKey", str)
 ResultMap = Mapping[ResultKey, Optional[Number]]
@@ -47,7 +55,7 @@ class Operation(GraphComponent, SignalSourceProvider):
     """
 
     @abstractmethod
-    def __add__(self, src: Union[SignalSourceProvider, Number]) -> "Addition":
+    def __add__(self, src: Union[SignalSourceProvider, Number]) -> Addition:
         """
         Overloads the addition operator to make it return a new Addition operation
         object that is connected to the self and other objects.
@@ -55,7 +63,7 @@ class Operation(GraphComponent, SignalSourceProvider):
         raise NotImplementedError
 
     @abstractmethod
-    def __radd__(self, src: Union[SignalSourceProvider, Number]) -> "Addition":
+    def __radd__(self, src: Union[SignalSourceProvider, Number]) -> Addition:
         """
         Overloads the addition operator to make it return a new Addition operation
         object that is connected to the self and other objects.
@@ -63,9 +71,7 @@ class Operation(GraphComponent, SignalSourceProvider):
         raise NotImplementedError
 
     @abstractmethod
-    def __sub__(
-        self, src: Union[SignalSourceProvider, Number]
-    ) -> "Subtraction":
+    def __sub__(self, src: Union[SignalSourceProvider, Number]) -> Subtraction:
         """
         Overloads the subtraction operator to make it return a new Subtraction operation
         object that is connected to the self and other objects.
@@ -75,7 +81,7 @@ class Operation(GraphComponent, SignalSourceProvider):
     @abstractmethod
     def __rsub__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Subtraction":
+    ) -> Subtraction:
         """
         Overloads the subtraction operator to make it return a new Subtraction operation
         object that is connected to the self and other objects.
@@ -85,7 +91,7 @@ class Operation(GraphComponent, SignalSourceProvider):
     @abstractmethod
     def __mul__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Union[Multiplication, ConstantMultiplication]":
+    ) -> Union[Multiplication, ConstantMultiplication]:
         """
         Overloads the multiplication operator to make it return a new Multiplication operation
         object that is connected to the self and other objects. If *src* is a number, then
@@ -96,7 +102,7 @@ class Operation(GraphComponent, SignalSourceProvider):
     @abstractmethod
     def __rmul__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Union[Multiplication, ConstantMultiplication]":
+    ) -> Union[Multiplication, ConstantMultiplication]:
         """
         Overloads the multiplication operator to make it return a new Multiplication operation
         object that is connected to the self and other objects. If *src* is a number, then
@@ -107,7 +113,7 @@ class Operation(GraphComponent, SignalSourceProvider):
     @abstractmethod
     def __truediv__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Division":
+    ) -> Division:
         """
         Overloads the division operator to make it return a new Division operation
         object that is connected to the self and other objects.
@@ -117,7 +123,7 @@ class Operation(GraphComponent, SignalSourceProvider):
     @abstractmethod
     def __rtruediv__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Division":
+    ) -> Division:
         """
         Overloads the division operator to make it return a new Division operation
         object that is connected to the self and other objects.
@@ -274,7 +280,7 @@ class Operation(GraphComponent, SignalSourceProvider):
         raise NotImplementedError
 
     @abstractmethod
-    def to_sfg(self) -> "SFG":
+    def to_sfg(self) -> SFG:
         """
         Convert the operation into its corresponding SFG.
         If the operation is composed by multiple operations, the operation will be split.
@@ -507,7 +513,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
 
     def __rmul__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Union[Multiplication, ConstantMultiplication]":
+    ) -> Union[Multiplication, ConstantMultiplication]:
         # Import here to avoid circular imports.
         from b_asic.core_operations import (
             ConstantMultiplication,
@@ -522,7 +528,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
 
     def __truediv__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Division":
+    ) -> Division:
         # Import here to avoid circular imports.
         from b_asic.core_operations import Constant, Division
 
@@ -532,7 +538,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
 
     def __rtruediv__(
         self, src: Union[SignalSourceProvider, Number]
-    ) -> "Division":
+    ) -> Division:
         # Import here to avoid circular imports.
         from b_asic.core_operations import Constant, Division
 
@@ -747,7 +753,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
             pass
         return [self]
 
-    def to_sfg(self) -> "SFG":
+    def to_sfg(self) -> SFG:
         # Import here to avoid circular imports.
         from b_asic.signal_flow_graph import SFG
         from b_asic.special_operations import Input, Output