diff --git a/SiliconTorch/fxCyanF.py b/SiliconTorch/fxCyan.py
similarity index 77%
rename from SiliconTorch/fxCyanF.py
rename to SiliconTorch/fxCyan.py
index 4d7b1bdeed6ffde18f35757e3e7b2ea6f36e2ce6..dc9cd063252955080c490493d2fb89c52dff1459 100644
--- a/SiliconTorch/fxCyanF.py
+++ b/SiliconTorch/fxCyan.py
@@ -7,9 +7,11 @@ from inspect import signature
 from socket import socket, AF_INET, SOCK_DGRAM
 
 
-class DEFAULT:
+class fxCyanDefaults:
   port = 4213
-  header = b'fxCyanF'
+
+  @staticmethod
+  def header(suffix: str): return bytes(f'fxCyan{suffix}', 'ASCII')
 
   listenAddr = '0.0.0.0'
 
@@ -18,7 +20,7 @@ class Sender:
 
   _socket = socket(AF_INET, SOCK_DGRAM)
 
-  def __init__(self, host: str, port: int = DEFAULT.port):
+  def __init__(self, host: str = 'localhost', port: int = fxCyanDefaults.port):
     self._host = host
     self._port = port
 
@@ -37,7 +39,7 @@ class Sender:
     return struct.pack('f' * len(channels), *channels)
 
   @classmethod
-  def _sendUDP(cls, data: bytearray, host: str, port: int = DEFAULT.port):
+  def _sendUDP(cls, data: bytearray, host: str, port: int = fxCyanDefaults.port):
     try:
       cls._socket.sendto(data, (host, port))
     except:
@@ -45,8 +47,8 @@ class Sender:
       pass
 
   @classmethod
-  def sendTo(cls, channels: list, host: str, port: int = DEFAULT.port):
-    data = DEFAULT.header
+  def sendTo(cls, channels: list, host: str, port: int = fxCyanDefaults.port):
+    data = fxCyanDefaults.header('F')
     data += Sender._convertData(channels)
 
     cls._sendUDP(data, host, port)
@@ -57,7 +59,7 @@ class Sender:
 
 class Receiver:
 
-  def __init__(self, host: str = DEFAULT.listenAddr, port: int = DEFAULT.port):
+  def __init__(self, host: str = fxCyanDefaults.listenAddr, port: int = fxCyanDefaults.port):
 
     self._socket = socket(AF_INET, SOCK_DGRAM)
     self._socket.bind((host, port))
@@ -81,7 +83,7 @@ class Receiver:
 
     params = len(signature(callback).parameters)
 
-    if params < 1 or params:
+    if params < 1:
       raise AttributeError(f'callback must take at least param#[ 1 ], takes param#[ {params} ]')
     else:
       self._callbacks[callback] = params
@@ -102,7 +104,7 @@ class Receiver:
 
   def _recvLoop(self):
 
-    header = DEFAULT.header
+    header = fxCyanDefaults.header('F')
     headerLen = len(header)
 
     while True:
@@ -117,7 +119,8 @@ class Receiver:
         # TODO: logging…?
         continue
 
-      _chs = struct.unpack('f' * len(data), data)
+      chCnt = int(len(data) / 4)
+      _chs = struct.unpack('f' * chCnt, data)
 
       channels = []
       for ch in _chs:
@@ -129,9 +132,18 @@ class Receiver:
         try:
           if params == 1:
             callback(channels)
-          elif params == 2:
+          elif params >= 2:
             callback(channels, addr)
         except:
           # TODO: logging…?
           pass
 
+
+
+tx = Sender()
+rx = Receiver()
+
+def _rcv(ch, addr, something=None):
+  print(f'Got ch#[ {len(ch)} ] from host[ {addr} ] with data[ {ch} ]')
+
+rx.addCallback(_rcv)