diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py
index e8e7af01ab93fdba948d9ff7ec19078b3b71dee6..5713c192fff3db669c4297566c2c6262e06cfaad 100644
--- a/b_asic/signal_flow_graph.py
+++ b/b_asic/signal_flow_graph.py
@@ -232,7 +232,14 @@ class SFG(AbstractOperation):
         return value
 
     def split(self) -> Iterable[Operation]:
-        return self.operations
+        """ Returns every operation in the SFG except for Input and Output types. """
+
+        ops = []
+        for op in self.operations:
+            if not isinstance(op, Input) and not isinstance(op, Output):
+                ops.append(op)
+
+        return ops # Need any checking before returning?
     
     def copy_component(self, *args, **kwargs) -> GraphComponent:
         return super().copy_component(*args, **kwargs, inputs = self._input_operations, outputs = self._output_operations,
diff --git a/test/test_split_r.py b/test/test_split_r.py
new file mode 100644
index 0000000000000000000000000000000000000000..20874335dce95b155312d1b54133e4f99208a2e3
--- /dev/null
+++ b/test/test_split_r.py
@@ -0,0 +1,34 @@
+import pytest
+
+from b_asic import Addition, Subtraction, Multiplication, ConstantMultiplication, Division, Input, Output, SFG
+
+def test_split_three_add():
+    """ Split one custom operation consisting of three Additions"""
+    in1 = Input()
+    in2 = Input()
+    in3 = Input()
+    in4 = Input()
+
+    #in1.value = 1
+    #in2.value = 2
+    #in3.value = 3
+    #in4.value = 4
+
+    add1 = in1 + in2
+    add2 = in3 + in4
+    add3 = add1 + add2
+    out1 = Output(add3)
+    
+    Cstm = SFG(inputs=[in1, in2, in3, in4], outputs=[out1])
+
+    result = Cstm.split()
+
+    assert(isinstance(result[0], Addition))
+    assert(isinstance(result[1], Addition))
+    assert(isinstance(result[2], Addition))
+
+    assert(len(result) == 3)
+    
+    
+    
+