 
 extension MIDIEntity {
     
+    public func recieve(_ packet: MIDIPacket) {
+        for source in sources {
+            source.receive(packet)
+        }
+    }
+    
     public func send(_ packet: MIDIPacket, via output: MIDIPort<Output>? = MIDI.output) {
         for destination in destinations {
             destination.send(packet, via: output)
         }
     }
     
-    public func recieve(_ packet: MIDIPacket) {
-        for source in sources {
-            source.receive(packet)
+}
+
+extension MIDIEndpoint where Type == Source {
+    
+    public func receive(_ packet: MIDIPacket) {
+        do {
+            try received(packet)
+        } catch let error {
+            print(error)
         }
     }
-    
+
 }
 
 extension MIDIEndpoint where Type == Destination {

        }
    }
    
    public func receive(_ packet: MIDIPacket) {
        do {
            recieved(packet)
        } catch let error {
            print(error)
        }
    }
    
}


extension MIDIDevice {
    
    public func recieve(_ packet: MIDIPacket) {
        for entity in entities {
            entity.recieve(packet)
        }
    }
    
    public func send(_ packet: MIDIPacket, via output: MIDIPort<Output>? = MIDI.output) {
        for entity in entities {
            entity.send(packet, via: output)
        }
    }
    
