diff --git a/atsamd51j19/src/build_bootstrap.h b/atsamd51j19/src/build_bootstrap.h
index 7d4683bb618eb22b242097bdbda69bd219d3c65c..f7356f0e4be31468feeb33734d5f51560311af28 100644
--- a/atsamd51j19/src/build_bootstrap.h
+++ b/atsamd51j19/src/build_bootstrap.h
@@ -181,18 +181,10 @@ Hunk* allocateHunkByType(String type){
   if(type == "pins/pa12_output"){
     ret = new PA12_Output();
   }
-  #ifdef BUILD_INCLUDES_HUNK_STEPPER
-    hunklist[hlc++] = "driver/stepper";
-    if (type == "driver/stepper"){
-      ret = new Stepper();
-    }
-  #endif
-  #ifdef BUILD_INCLUDES_HUNK_COBSERIALA
-    hunklist[hlc++] = "comm/COBSerial_A";
-    if (type == "comm/COBSerial_A") {
-      ret = new COBSerial_A();
-    }
-  #endif
+  hunklist[hlc++] = "comm/COBSerial_A";
+  if (type == "comm/COBSerial_A") {
+    ret = new COBSerial_A();
+  }
   #ifdef BUILD_INCLUDES_HUNK_COBSERIALB
     hunklist[hlc++] = "comm/COBSerial_B";
     if (type == "comm/COBSerial_B"){
@@ -223,6 +215,12 @@ Hunk* allocateHunkByType(String type){
       ret = new COBSerial_F();
     }
   #endif
+  #ifdef BUILD_INCLUDES_HUNK_STEPPER
+    hunklist[hlc++] = "driver/stepper";
+    if (type == "driver/stepper"){
+      ret = new Stepper();
+    }
+  #endif
   #ifdef BUILD_INCLUDES_HUNK_DRIVER_SPI_TLC5940
     hunklist[hlc++] = "driver/spi_tlc5940";
     if (type == "driver/spi_tlc5940"){
diff --git a/atsamd51j19/src/build_list.h b/atsamd51j19/src/build_list.h
index 6c13181ad43e2d85b064acea200d472982a74547..7baef03757a4ab0558f51d62c65cdc52e455de70 100644
--- a/atsamd51j19/src/build_list.h
+++ b/atsamd51j19/src/build_list.h
@@ -33,23 +33,16 @@ this should be where we go to configure a system,
 #define USE_DEBUGPIN_A
 #define USE_DEBUGPIN_B
 
-// doth it use the module?
-#define IS_MODULE_V01
-#ifdef IS_MODULE_V01
-  #define BUILD_INCLUDES_HUNK_COBSERIALA
-#endif
-
 // START: do bootstrap steppers -> connected, ok
 // then bootstrap router -> ok, hello all three,
 // now try stepping ... where borked ?
 #define BOOT_USB
 
 // pick 'yer board
-//#define BOARD_IS_BASIC
 //#define BOARD_IS_STEPPER
 #define BOARD_IS_ROUTER
-//#define BOARD_IS_DLPCORE
 //#define BOARD_IS_SPINDLE
+//#define BOARD_IS_DLPCORE
 
 #ifdef BOARD_IS_STEPPER
   #define BUILD_INCLUDES_HUNK_STEPPER
@@ -57,15 +50,11 @@ this should be where we go to configure a system,
 #endif
 
 #ifdef BOARD_IS_ROUTER
-  // it ain't
-  #undef IS_MODULE_V01
-  #define BUILD_INCLUDES_HUNK_COBSERIALA // ok
   #define BUILD_INCLUDES_HUNK_COBSERIALB // ok
   #define BUILD_INCLUDES_HUNK_COBSERIALC // ok
   #define BUILD_INCLUDES_HUNK_COBSERIALD // ok
   #define BUILD_INCLUDES_HUNK_COBSERIALE // ok
   #define BUILD_INCLUDES_HUNK_COBSERIALF // ok
-  // also
   #define BUILD_INCLUDES_HUNK_MDTODMSEG
 #endif
 
diff --git a/atsamd51j19/src/debugpins.h b/atsamd51j19/src/debugpins.h
index 14d019535ec73146f6f7e1e04343134b3aedac0b..bfd490ff1f099796ee484487e674bc2353271e2f 100644
--- a/atsamd51j19/src/debugpins.h
+++ b/atsamd51j19/src/debugpins.h
@@ -1,7 +1,7 @@
 /*
 debugpins.h
 
-low level interface to debug outputs 
+low level interface to debug outputs
 
 Jake Read at the Center for Bits and Atoms
 (c) Massachusetts Institute of Technology 2019
@@ -41,19 +41,10 @@ no warranty is provided, and users accept all liability.
 // ---------------------- BASEBOARD ---------------------- //
 // ------------------------------------------------------- //
 
-#ifdef IS_MODULE_V01
-  #define CLKLIGHT_PIN 30
-  #define CLKLIGHT_PORT PORT->Group[1]
-  #define ERRLIGHT_PIN 27
-  #define ERRLIGHT_PORT PORT->Group[0]
-#elif defined(BOARD_IS_ROUTER)
-  #define CLKLIGHT_PIN 21
-  #define CLKLIGHT_PORT PORT->Group[0]
-  #define ERRLIGHT_PIN 23
-  #define ERRLIGHT_PORT PORT->Group[1]
-#else
-  #error which board is this?
-#endif
+#define CLKLIGHT_PIN 30
+#define CLKLIGHT_PORT PORT->Group[1]
+#define ERRLIGHT_PIN 27
+#define ERRLIGHT_PORT PORT->Group[0]
 
 #define CLKLIGHT_BM (uint32_t)(1 << CLKLIGHT_PIN)
 #define CLKLIGHT_SETUP CLKLIGHT_PORT.DIRSET.reg = CLKLIGHT_BM
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp
index fe374c711e3c0d10b743fe2ffef2c5f49cf302bc..a76321231dc454abfe769d4d35fe65e82ece1aac 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp
@@ -18,13 +18,13 @@ no warranty is provided, and users accept all liability.
 // for the uartport example from earlier work,
 // https://gitlab.cba.mit.edu/jakeread/atkstepper17/tree/master/embedded/mkstepper17
 
-#define SET_TXLIGHT_ON light_tx_port->OUTCLR.reg = light_tx_bm
-#define SET_TXLIGHT_OFF light_tx_timesince = 0
-#define WRITE_TXLIGHT_OFF light_tx_port->OUTSET.reg = light_tx_bm
+#define SET_LIGHT_ON light_port->OUTCLR.reg = light_bm
+#define WRITE_LIGHT_OFF light_port->OUTSET.reg = light_bm
 
-#define SET_RXLIGHT_ON light_rx_port->OUTCLR.reg = light_rx_bm
-#define SET_RXLIGHT_OFF light_rx_timesince = 0
-#define WRITE_RXLIGHT_OFF light_rx_port->OUTSET.reg = light_rx_bm
+#define SET_TXLIGHT_ON SET_LIGHT_ON
+#define SET_TXLIGHT_OFF light_timesince_tx = 0
+#define SET_RXLIGHT_ON SET_LIGHT_ON
+#define SET_RXLIGHT_OFF light_timesince_rx = 0
 
 COBSerial::COBSerial(){
   // children do this...
@@ -32,12 +32,14 @@ COBSerial::COBSerial(){
 
 void COBSerial::init(void){
   // not the most important, but lights are first:
-  light_tx_bm = 1 << light_tx_pin;
-  light_rx_bm = 1 << light_rx_pin;
-  light_tx_port->DIRSET.reg = light_tx_bm;
-  light_tx_port->OUTSET.reg = light_tx_bm;
-  light_rx_port->DIRSET.reg = light_rx_bm;
-  light_rx_port->OUTSET.reg = light_rx_bm;
+  light_bm = 1 << light_pin;
+  te_bm = 1 << te_pin;
+  // turn the light *off*
+  light_port->DIRSET.reg = light_bm;
+  light_port->OUTSET.reg = light_bm;
+  // for now, all point to point, enable the termination resistor
+  te_port->DIRSET.reg = te_bm;
+  te_port->OUTSET.reg = te_bm;
   // our local business 1st,
   for(uint8_t i = 0; i < HCBSRJ45_NETBUFF_NUM; i ++){
     netBufLen_[i] = 0;
@@ -107,23 +109,14 @@ if the byte is a zero, that's a packet, memcpy that to ... an mmd ?
 
 void COBSerial::loop(void){
   // turn off like apres 100 loops ? we have LOOP_TICKS_PER_BLINK - is in sys toplevel
-  if(light_tx_timesince > LOOP_TICKS_PER_BLINK){
+  if((light_timesince_tx > LOOP_TICKS_PER_BLINK) && (light_timesince_rx > LOOP_TICKS_PER_BLINK)){
     // noop
   } else {
-    light_tx_timesince ++;
+    light_timesince_tx ++;
+    light_timesince_rx ++;
     // catch on transitions,
-    if(light_tx_timesince > LOOP_TICKS_PER_BLINK) {
-      WRITE_TXLIGHT_OFF;
-    }
-  }
-
-  if(light_rx_timesince > LOOP_TICKS_PER_BLINK){
-    // noop
-  } else {
-    light_rx_timesince ++;
-    // catch on transitions,
-    if(light_rx_timesince > LOOP_TICKS_PER_BLINK) {
-      WRITE_RXLIGHT_OFF;
+    if((light_timesince_tx > LOOP_TICKS_PER_BLINK) && (light_timesince_rx > LOOP_TICKS_PER_BLINK)) {
+      WRITE_LIGHT_OFF;
     }
   }
 
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial.h b/atsamd51j19/src/hunks/comm/hunk_cobserial.h
index a4375952eff53dea58af536a40fe6903f6f9e478..4e7eab829574f69b2f93738cbfe6ce9fbf0d08a6 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial.h
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial.h
@@ -59,18 +59,18 @@ public:
   // clock bs
   uint32_t gclknum_pick;
   uint32_t gclkid_core;
-
-  uint32_t light_tx_timesince = LOOP_TICKS_PER_BLINK + 1;
-  uint32_t light_tx_pin = 4;
-  uint32_t light_tx_bm;
-  PortGroup* light_tx_port = &(PORT->Group[1]);
-  uint16_t light_tx_time = LOOP_TICKS_PER_BLINK;
-
-  uint32_t light_rx_timesince = LOOP_TICKS_PER_BLINK + 1;
-  uint32_t light_rx_pin = 4;
-  uint32_t light_rx_bm;
-  PortGroup* light_rx_port = &(PORT->Group[1]);
-  boolean light_rx_off = false;
+  // status light: track time since TX and RX events,
+  uint32_t light_timesince_tx = LOOP_TICKS_PER_BLINK + 1;
+  uint32_t light_timesince_rx = LOOP_TICKS_PER_BLINK + 1;
+  // actuate one LED ... 
+  uint32_t light_pin = 4;
+  uint32_t light_bm;
+  PortGroup* light_port = &(PORT->Group[1]);
+  uint16_t light_time = LOOP_TICKS_PER_BLINK;
+  // termination enable, sometimes software defined (for busses)
+  uint32_t te_pin = 4;
+  uint32_t te_bm;
+  PortGroup* te_port = &(PORT->Group[1]);
   // we keep contiguous chunks of 1kb,
   uint8_t netBuf_[HCBSRJ45_NETBUFF_NUM][HCBSRJ45_NETBUFF_PAD];
   uint16_t netBufLen_[HCBSRJ45_NETBUFF_NUM];
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp
index 986841675390f4d500f3288ea0bc8cd61b4b5886..dfb2b897d314fbae9dcb3df334f2b0fe54249135 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp
@@ -11,38 +11,21 @@ no warranty is provided, and users accept all liability.
 */
 
 #include "hunk_cobserial_a.h"
-
-#ifdef BUILD_INCLUDES_HUNK_COBSERIALA
-
 #include "isrcpp.h"
 // TX: PA22, SER3-0 or SER5-1.. tx is always on -0, so 3-0, peripheral C
 // RX: PA20, SER3-2 or SER5-2.. rx can go anywhere, so its 3-2, peripheral D
 
-#ifdef IS_MODULE_V01
-  #define COBA_SERCOM SERCOM1
-  #define COBA_SERCOM_CLK SERCOM1_GCLK_ID_CORE
-  #define COBA_COMPORT PORT->Group[0]
-  #define COBA_TXPIN 16
-  #define COBA_RXPIN 18
-  #define COBA_TXPERIPHERAL PERIPHERAL_C
-  #define COBA_RXPERIPHERAL PERIPHERAL_C
-  #define COBA_LIGHT_TX_PIN 19 // TX: green
-  #define COBA_LIGHT_TX_PORT PORT->Group[0]
-  #define COBA_LIGHT_RX_PIN 17 // RX: yellow
-  #define COBA_LIGHT_RX_PORT PORT->Group[0]
-#else
-  #define COBA_SERCOM SERCOM3
-  #define COBA_SERCOM_CLK SERCOM3_GCLK_ID_CORE
-  #define COBA_COMPORT PORT->Group[0]
-  #define COBA_TXPIN 22
-  #define COBA_RXPIN 20
-  #define COBA_TXPERIPHERAL PERIPHERAL_C
-  #define COBA_RXPERIPHERAL PERIPHERAL_D
-  #define COBA_LIGHT_TX_PIN 7
-  #define COBA_LIGHT_TX_PORT PORT->Group[1]
-  #define COBA_LIGHT_RX_PIN 6
-  #define COBA_LIGHT_RX_PORT PORT->Group[1]
-#endif
+#define COBA_SERCOM SERCOM1
+#define COBA_SERCOM_CLK SERCOM1_GCLK_ID_CORE
+#define COBA_COMPORT PORT->Group[0]
+#define COBA_TXPIN 16 // x-0
+#define COBA_RXPIN 18 // x-2
+#define COBA_TXPERIPHERAL PERIPHERAL_C
+#define COBA_RXPERIPHERAL PERIPHERAL_C
+#define COBA_LIGHT_PIN 19 // status, x-3
+#define COBA_LIGHT_PORT PORT->Group[0]
+#define COBA_TE_PIN 17 // TE, x-1
+#define COBA_TE_PORT PORT->Group[0]
 
 COBSerial_A::COBSerial_A(){
   // hunk stuff,
@@ -63,34 +46,19 @@ COBSerial_A::COBSerial_A(){
   gclknum_pick = 7;
   gclkid_core = COBA_SERCOM_CLK;
   // lights
-  light_tx_pin = COBA_LIGHT_TX_PIN; // green (good to go!)
-  light_tx_port = &(COBA_LIGHT_TX_PORT);
-  light_rx_pin = COBA_LIGHT_RX_PIN; // yellow (pls catch!)
-  light_rx_port = &(COBA_LIGHT_RX_PORT);
+  light_pin = COBA_LIGHT_PIN; // status
+  light_port = &(COBA_LIGHT_PORT);
+  te_pin = COBA_TE_PIN; // termination resitor en/disable
+  te_port = &(COBA_TE_PORT);
 }
 
 void COBSerial_A::register_for_interrupts(void){
-  #ifdef IS_MODULE_V01
   isrcpp->register_for_ser1_rx(indice_, HUNK_HANDLER_A);
   isrcpp->register_for_ser1_tx(indice_, HUNK_HANDLER_B);
   NVIC_EnableIRQ(SERCOM1_2_IRQn);
   NVIC_EnableIRQ(SERCOM1_0_IRQn);
-  #else
-  // sys -> interrupts
-  isrcpp->register_for_ser3_rx(indice_, HUNK_HANDLER_A);
-  isrcpp->register_for_ser3_tx(indice_, HUNK_HANDLER_B);
-  // and,
-  NVIC_EnableIRQ(SERCOM3_2_IRQn);
-  NVIC_EnableIRQ(SERCOM3_0_IRQn);
-  #endif
 }
 
 void COBSerial_A::unmask_clocks(void){
-  #ifdef IS_MODULE_V01
   MCLK->APBAMASK.bit.SERCOM1_ = 1;
-  #else
-  MCLK->APBBMASK.bit.SERCOM3_ = 1;
-  #endif
 }
-
-#endif
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h
index 3d728b9c080a4726674935f213a7b7374621729a..36518398689d14b49663da7fdd31c46c13253c2e 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h
@@ -14,9 +14,6 @@ no warranty is provided, and users accept all liability.
 #define HUNK_COBSERIALRJ45_A_H_
 
 #include "build_list.h"
-
-#ifdef BUILD_INCLUDES_HUNK_COBSERIALA
-
 #include "hunk_cobserial.h"
 
 class COBSerial_A : public COBSerial {
@@ -31,4 +28,3 @@ public:
 };
 
 #endif
-#endif
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp
index 72ec344b4c28e8aca270f14e9d8b1656791fa35c..8662984043eeb046dba44078e63d0766f54f7a68 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp
@@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability.
 
 #include "isrcpp.h"
 
-#define COBB_SERCOM SERCOM4
-#define COBB_SERCOM_CLK SERCOM4_GCLK_ID_CORE
-#define COBB_COMPORT PORT->Group[1]
-#define COBB_TXPIN 12
-#define COBB_RXPIN 14
-#define COBB_TXPERIPHERAL PERIPHERAL_C
-#define COBB_RXPERIPHERAL PERIPHERAL_C
-#define COBB_LIGHT_TX_PIN 4 // TX: green
-#define COBB_LIGHT_TX_PORT PORT->Group[0]
-#define COBB_LIGHT_RX_PIN 9  // RX: yellow
-#define COBB_LIGHT_RX_PORT PORT->Group[1]
+// B: SER3 PA20 -
+#define COBB_SERCOM SERCOM3
+#define COBB_SERCOM_CLK SERCOM3_GCLK_ID_CORE
+#define COBB_COMPORT PORT->Group[0]
+#define COBB_TXPIN 22 // x-0
+#define COBB_RXPIN 20 // x-2
+#define COBB_TXPERIPHERAL PERIPHERAL_D
+#define COBB_RXPERIPHERAL PERIPHERAL_D
+#define COBB_LIGHT_PIN 21 // x-3
+#define COBB_LIGHT_PORT PORT->Group[0]
+#define COBB_TE_PIN 23  // x-1
+#define COBB_TE_PORT PORT->Group[0]
 
 COBSerial_B::COBSerial_B(){
   // hunk stuff,
@@ -47,21 +48,21 @@ COBSerial_B::COBSerial_B(){
   gclknum_pick = 8;
   gclkid_core = COBB_SERCOM_CLK;
   // lights
-  light_tx_pin = COBB_LIGHT_TX_PIN; // green (good to go!)
-  light_tx_port = &(COBB_LIGHT_TX_PORT);
-  light_rx_pin = COBB_LIGHT_RX_PIN; // yellow (pls catch!)
-  light_rx_port = &(COBB_LIGHT_RX_PORT);
+  light_pin = COBB_LIGHT_PIN; // green (good to go!)
+  light_port = &(COBB_LIGHT_PORT);
+  te_pin = COBB_TE_PIN; // yellow (pls catch!)
+  te_port = &(COBB_TE_PORT);
 }
 
 void COBSerial_B::register_for_interrupts(void){
-  isrcpp->register_for_ser4_rx(indice_, HUNK_HANDLER_A);
-  isrcpp->register_for_ser4_tx(indice_, HUNK_HANDLER_B);
-  NVIC_EnableIRQ(SERCOM4_2_IRQn);
-  NVIC_EnableIRQ(SERCOM4_0_IRQn);
+  isrcpp->register_for_ser3_rx(indice_, HUNK_HANDLER_A);
+  isrcpp->register_for_ser3_tx(indice_, HUNK_HANDLER_B);
+  NVIC_EnableIRQ(SERCOM3_2_IRQn);
+  NVIC_EnableIRQ(SERCOM3_0_IRQn);
 }
 
 void COBSerial_B::unmask_clocks(void){
-  MCLK->APBDMASK.bit.SERCOM4_ = 1;
+  MCLK->APBBMASK.bit.SERCOM3_ = 1;
 }
 
 #endif
@@ -89,10 +90,10 @@ COBSerial_B::COBSerial_B(){
   gclknum_pick = 8;
   gclkid_core = SERCOM4_GCLK_ID_CORE;
   // lights
-  light_tx_pin = 4; // green (good to go!)
-  light_tx_port = &(PORT->Group[0]);
-  light_rx_pin = 9; // yellow (pls catch!)
-  light_rx_port = &(PORT->Group[1]);
+  light_pin = 4; // green (good to go!)
+  light_port = &(PORT->Group[0]);
+  te_pin = 9; // yellow (pls catch!)
+  te_port = &(PORT->Group[1]);
 }
 
 void COBSerial_B::register_for_interrupts(void){
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp
index aa6d7ec386eb9ac48a92c4ec909640ba6b1da752..b44d3bd3587f8bdff09fa4ed0f0c688530aea818 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp
@@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability.
 
 #include "isrcpp.h"
 
-#define COBC_SERCOM SERCOM0
-#define COBC_SERCOM_CLK SERCOM0_GCLK_ID_CORE
+//C: SER2 PA08 -
+#define COBC_SERCOM SERCOM2
+#define COBC_SERCOM_CLK SERCOM2_GCLK_ID_CORE
 #define COBC_COMPORT PORT->Group[0]
-#define COBC_TXPIN 8
-#define COBC_RXPIN 10
-#define COBC_TXPERIPHERAL PERIPHERAL_C
-#define COBC_RXPERIPHERAL PERIPHERAL_C
-#define COBC_LIGHT_TX_PIN 6 // TX: green
-#define COBC_LIGHT_TX_PORT PORT->Group[0]
-#define COBC_LIGHT_RX_PIN 5 // RX: yellow
-#define COBC_LIGHT_RX_PORT PORT->Group[0]
+#define COBC_TXPIN 9 // x-0
+#define COBC_RXPIN 10 // x-2
+#define COBC_TXPERIPHERAL PERIPHERAL_D
+#define COBC_RXPERIPHERAL PERIPHERAL_D
+#define COBC_LIGHT_PIN 11 // x-3
+#define COBC_LIGHT_PORT PORT->Group[0]
+#define COBC_TE_PIN 8  // x-1
+#define COBC_TE_PORT PORT->Group[0]
 
 COBSerial_C::COBSerial_C(){
   // hunk stuff,
@@ -47,21 +48,21 @@ COBSerial_C::COBSerial_C(){
   gclknum_pick = 8;
   gclkid_core = COBC_SERCOM_CLK;
   // lights
-  light_tx_pin = COBC_LIGHT_TX_PIN; // green (good to go!)
-  light_tx_port = &(COBC_LIGHT_TX_PORT);
-  light_rx_pin = COBC_LIGHT_RX_PIN; // yellow (pls catch!)
-  light_rx_port = &(COBC_LIGHT_RX_PORT);
+  light_pin = COBC_LIGHT_PIN; // green (good to go!)
+  light_port = &(COBC_LIGHT_PORT);
+  te_pin = COBC_TE_PIN; // yellow (pls catch!)
+  te_port = &(COBC_TE_PORT);
 }
 
 void COBSerial_C::register_for_interrupts(void){
-  isrcpp->register_for_ser0_rx(indice_, HUNK_HANDLER_A);
-  isrcpp->register_for_ser0_tx(indice_, HUNK_HANDLER_B);
-  NVIC_EnableIRQ(SERCOM0_2_IRQn);
-  NVIC_EnableIRQ(SERCOM0_0_IRQn);
+  isrcpp->register_for_ser2_rx(indice_, HUNK_HANDLER_A);
+  isrcpp->register_for_ser2_tx(indice_, HUNK_HANDLER_B);
+  NVIC_EnableIRQ(SERCOM2_2_IRQn);
+  NVIC_EnableIRQ(SERCOM2_0_IRQn);
 }
 
 void COBSerial_C::unmask_clocks(void){
-  MCLK->APBAMASK.bit.SERCOM0_ = 1;
+  MCLK->APBBMASK.bit.SERCOM2_ = 1;
 }
 
 #endif
@@ -90,10 +91,10 @@ COBSerial_C::COBSerial_C(){
   gclknum_pick = 9;
   gclkid_core = SERCOM0_GCLK_ID_CORE;
   // lights
-  light_tx_pin = 6; // green (good to go!)
-  light_tx_port = &(PORT->Group[0]);
-  light_rx_pin = 5; // yellow (pls catch!)
-  light_rx_port = &(PORT->Group[0]);
+  light_pin = 6; // green (good to go!)
+  light_port = &(PORT->Group[0]);
+  te_pin = 5; // yellow (pls catch!)
+  te_port = &(PORT->Group[0]);
 }
 
 void COBSerial_C::register_for_interrupts(void){
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp
index 12dbc027fd0146e94fe5c035d873dfa116afe604..48e11684c46e6fc675e6fa9935707b61edafe9ad 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp
@@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability.
 
 #include "isrcpp.h"
 
-#define COBD_SERCOM SERCOM1
-#define COBD_SERCOM_CLK SERCOM1_GCLK_ID_CORE
-#define COBD_COMPORT PORT->Group[0]
-#define COBD_TXPIN 16
-#define COBD_RXPIN 18
+//D: SER4 PB12 -
+#define COBD_SERCOM SERCOM4
+#define COBD_SERCOM_CLK SERCOM4_GCLK_ID_CORE
+#define COBD_COMPORT PORT->Group[1]
+#define COBD_TXPIN 12
+#define COBD_RXPIN 14
 #define COBD_TXPERIPHERAL PERIPHERAL_C
 #define COBD_RXPERIPHERAL PERIPHERAL_C
-#define COBD_LIGHT_TX_PIN 2 // TX: green
-#define COBD_LIGHT_TX_PORT PORT->Group[0]
-#define COBD_LIGHT_RX_PIN 3 // RX: yellow
-#define COBD_LIGHT_RX_PORT PORT->Group[0]
+#define COBD_LIGHT_PIN 4 // TX: green
+#define COBD_LIGHT_PORT PORT->Group[1]
+#define COBD_TE_PIN 9  // RX: yellow
+#define COBD_TE_PORT PORT->Group[1]
 
 COBSerial_D::COBSerial_D(){
   // hunk stuff,
@@ -47,21 +48,21 @@ COBSerial_D::COBSerial_D(){
   gclknum_pick = 8;
   gclkid_core = COBD_SERCOM_CLK;
   // lights
-  light_tx_pin = COBD_LIGHT_TX_PIN; // green (good to go!)
-  light_tx_port = &(COBD_LIGHT_TX_PORT);
-  light_rx_pin = COBD_LIGHT_RX_PIN; // yellow (pls catch!)
-  light_rx_port = &(COBD_LIGHT_RX_PORT);
+  light_pin = COBD_LIGHT_PIN; // green (good to go!)
+  light_port = &(COBD_LIGHT_PORT);
+  te_pin = COBD_TE_PIN; // yellow (pls catch!)
+  te_port = &(COBD_TE_PORT);
 }
 
 void COBSerial_D::register_for_interrupts(void){
-  isrcpp->register_for_ser1_rx(indice_, HUNK_HANDLER_A);
-  isrcpp->register_for_ser1_tx(indice_, HUNK_HANDLER_B);
-  NVIC_EnableIRQ(SERCOM1_2_IRQn);
-  NVIC_EnableIRQ(SERCOM1_0_IRQn);
+  isrcpp->register_for_ser4_rx(indice_, HUNK_HANDLER_A);
+  isrcpp->register_for_ser4_tx(indice_, HUNK_HANDLER_B);
+  NVIC_EnableIRQ(SERCOM4_2_IRQn);
+  NVIC_EnableIRQ(SERCOM4_0_IRQn);
 }
 
 void COBSerial_D::unmask_clocks(void){
-  MCLK->APBAMASK.bit.SERCOM1_ = 1;
+  MCLK->APBDMASK.bit.SERCOM4_ = 1;
 }
 
 #endif
@@ -91,10 +92,10 @@ COBSerial_D::COBSerial_D(){
   gclknum_pick = 10;
   gclkid_core = SERCOM1_GCLK_ID_CORE;
   // lights
-  light_tx_pin = 2; // green (good to go!)
-  light_tx_port = &(PORT->Group[0]);
-  light_rx_pin = 3; // yellow (pls catch!)
-  light_rx_port = &(PORT->Group[0]);
+  light_pin = 2; // green (good to go!)
+  light_port = &(PORT->Group[0]);
+  te_pin = 3; // yellow (pls catch!)
+  te_port = &(PORT->Group[0]);
 }
 
 void COBSerial_D::register_for_interrupts(void){
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp
index ce387907d652c72f67003c4515074490c5344694..a71f9492376a7e78a57bd9fb2598e678fea4e549 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp
@@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability.
 
 #include "isrcpp.h"
 
-#define COBE_SERCOM SERCOM5
-#define COBE_SERCOM_CLK SERCOM5_GCLK_ID_CORE
-#define COBE_COMPORT PORT->Group[1]
-#define COBE_TXPIN 2
-#define COBE_RXPIN 0
+//E: SER0 PA04 -
+#define COBE_SERCOM SERCOM0
+#define COBE_SERCOM_CLK SERCOM0_GCLK_ID_CORE
+#define COBE_COMPORT PORT->Group[0]
+#define COBE_TXPIN 4 // x-0
+#define COBE_RXPIN 6 // x-2
 #define COBE_TXPERIPHERAL PERIPHERAL_D
 #define COBE_RXPERIPHERAL PERIPHERAL_D
-#define COBE_LIGHT_TX_PIN 5 // TX: green
-#define COBE_LIGHT_TX_PORT PORT->Group[1]
-#define COBE_LIGHT_RX_PIN 8 // RX: yellow
-#define COBE_LIGHT_RX_PORT PORT->Group[1]
+#define COBE_LIGHT_PIN 7 // x-3
+#define COBE_LIGHT_PORT PORT->Group[0]
+#define COBE_TE_PIN 5  // x-1
+#define COBE_TE_PORT PORT->Group[0]
 
 COBSerial_E::COBSerial_E(){
   // hunk stuff,
@@ -47,21 +48,21 @@ COBSerial_E::COBSerial_E(){
   gclknum_pick = 8;
   gclkid_core = COBE_SERCOM_CLK;
   // lights
-  light_tx_pin = COBE_LIGHT_TX_PIN; // green (good to go!)
-  light_tx_port = &(COBE_LIGHT_TX_PORT);
-  light_rx_pin = COBE_LIGHT_RX_PIN; // yellow (pls catch!)
-  light_rx_port = &(COBE_LIGHT_RX_PORT);
+  light_pin = COBE_LIGHT_PIN; // green (good to go!)
+  light_port = &(COBE_LIGHT_PORT);
+  te_pin = COBE_TE_PIN; // yellow (pls catch!)
+  te_port = &(COBE_TE_PORT);
 }
 
 void COBSerial_E::register_for_interrupts(void){
-  isrcpp->register_for_ser5_rx(indice_, HUNK_HANDLER_A);
-  isrcpp->register_for_ser5_tx(indice_, HUNK_HANDLER_B);
-  NVIC_EnableIRQ(SERCOM5_2_IRQn);
-  NVIC_EnableIRQ(SERCOM5_0_IRQn);
+  isrcpp->register_for_ser0_rx(indice_, HUNK_HANDLER_A);
+  isrcpp->register_for_ser0_tx(indice_, HUNK_HANDLER_B);
+  NVIC_EnableIRQ(SERCOM0_2_IRQn);
+  NVIC_EnableIRQ(SERCOM0_0_IRQn);
 }
 
 void COBSerial_E::unmask_clocks(void){
-  MCLK->APBDMASK.bit.SERCOM5_ = 1;
+  MCLK->APBAMASK.bit.SERCOM0_ = 1;
 }
 
 #endif
@@ -91,10 +92,10 @@ COBSerial_E::COBSerial_E(){
   gclknum_pick = 11;
   gclkid_core = SERCOM5_GCLK_ID_CORE;
   // lights
-  light_tx_pin = 8; // green (good to go!)
-  light_tx_port = &(PORT->Group[1]);
-  light_rx_pin = 5; // yellow (pls catch!)
-  light_rx_port = &(PORT->Group[1]);
+  light_pin = 8; // green (good to go!)
+  light_port = &(PORT->Group[1]);
+  te_pin = 5; // yellow (pls catch!)
+  te_port = &(PORT->Group[1]);
 }
 
 void COBSerial_E::register_for_interrupts(void){
diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp
index 0fbc3cf936c88296709268bbcacee6b11649f983..08551af72d50ca249a98a6346f6282babb58136c 100644
--- a/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp
+++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp
@@ -16,18 +16,18 @@ no warranty is provided, and users accept all liability.
 
 #include "isrcpp.h"
 
-#define COBF_SERCOM SERCOM2
-#define COBF_SERCOM_CLK SERCOM2_GCLK_ID_CORE
-#define COBF_COMPORT PORT->Group[0]
-#define COBF_TXPIN 12
-#define COBF_RXPIN 13 // the router's F-port puts RX on pad-1, not pad-2 as usual,
-#define COBF_RXPO 1
-#define COBF_TXPERIPHERAL PERIPHERAL_C
-#define COBF_RXPERIPHERAL PERIPHERAL_C
-#define COBF_LIGHT_TX_PIN 9 // TX: green
-#define COBF_LIGHT_TX_PORT PORT->Group[0]
-#define COBF_LIGHT_RX_PIN 11 // RX: yellow
-#define COBF_LIGHT_RX_PORT PORT->Group[0]
+//E: SER5 PB00 -
+#define COBF_SERCOM SERCOM5
+#define COBF_SERCOM_CLK SERCOM5_GCLK_ID_CORE
+#define COBF_COMPORT PORT->Group[1]
+#define COBF_TXPIN 2 // x-0
+#define COBF_RXPIN 0 // x-2
+#define COBF_TXPERIPHERAL PERIPHERAL_D
+#define COBF_RXPERIPHERAL PERIPHERAL_D
+#define COBF_LIGHT_PIN 1 // x-3
+#define COBF_LIGHT_PORT PORT->Group[1]
+#define COBF_TE_PIN 3  // x-1
+#define COBF_TE_PORT PORT->Group[1]
 
 COBSerial_F::COBSerial_F(){
   // hunk stuff,
@@ -43,28 +43,27 @@ COBSerial_F::COBSerial_F(){
   com_tx_pin = COBF_TXPIN;
   com_tx_peripheral = COBF_TXPERIPHERAL;
   com_rx_pin = COBF_RXPIN;
-  com_rx_po = COBF_RXPO;
   com_rx_peripheral = COBF_RXPERIPHERAL;
   // and
   gclknum_pick = 9;
   gclkid_core = COBF_SERCOM_CLK;
   // lights
-  light_tx_pin = COBF_LIGHT_TX_PIN; // green (good to go!)
-  light_tx_port = &(COBF_LIGHT_TX_PORT);
-  light_rx_pin = COBF_LIGHT_RX_PIN; // yellow (pls catch!)
-  light_rx_port = &(COBF_LIGHT_RX_PORT);
+  light_pin = COBF_LIGHT_PIN; // green (good to go!)
+  light_port = &(COBF_LIGHT_PORT);
+  te_pin = COBF_TE_PIN; // yellow (pls catch!)
+  te_port = &(COBF_TE_PORT);
 }
 
 void COBSerial_F::register_for_interrupts(void){
   // are interrupts pin-registered ?
-  isrcpp->register_for_ser2_rx(indice_, HUNK_HANDLER_A); //_on_one
-  isrcpp->register_for_ser2_tx(indice_, HUNK_HANDLER_B);
-  NVIC_EnableIRQ(SERCOM2_2_IRQn);
-  NVIC_EnableIRQ(SERCOM2_0_IRQn);
+  isrcpp->register_for_ser5_rx(indice_, HUNK_HANDLER_A); //_on_one
+  isrcpp->register_for_ser5_tx(indice_, HUNK_HANDLER_B);
+  NVIC_EnableIRQ(SERCOM5_2_IRQn);
+  NVIC_EnableIRQ(SERCOM5_0_IRQn);
 }
 
 void COBSerial_F::unmask_clocks(void){
-  MCLK->APBBMASK.bit.SERCOM2_ = 1;
+  MCLK->APBDMASK.bit.SERCOM5_ = 1;
 }
 
 #endif
@@ -98,10 +97,10 @@ COBSerial_F::COBSerial_F(){
   gclknum_pick = 12;
   gclkid_core = SERCOM0_GCLK_ID_CORE;
   // lights
-  light_tx_pin = 9; // green (good to go!)
-  light_tx_port = &(PORT->Group[0]);
-  light_rx_pin = 11; // yellow (pls catch!)
-  light_rx_port = &(PORT->Group[0]);
+  light_pin = 9; // green (good to go!)
+  light_port = &(PORT->Group[0]);
+  te_pin = 11; // yellow (pls catch!)
+  te_port = &(PORT->Group[0]);
 }
 
 void COBSerial_F::register_for_interrupts(void){