diff --git a/circuit/mkstepper/eagle.epf b/circuit/mkstepper/eagle.epf
index 8fea37c60d10de81aa0e519538c6f50532f05d60..8e793532199848b0232e688e2402b18609c28f73 100644
--- a/circuit/mkstepper/eagle.epf
+++ b/circuit/mkstepper/eagle.epf
@@ -40,7 +40,7 @@ UsedLibrary="C:/EAGLE 8.3.2/lbr/ltspice/sym.lbr"
 Type="Schematic Editor"
 Number=1
 File="mkstepper.sch"
-View="-21.652 1.07368 203.78 218.518"
+View="134.406 87.3199 359.838 304.764"
 WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
 PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
 PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
@@ -79,14 +79,14 @@ ArcDirection=0
 AddLevel=2
 PadsSameType=0
 Layer=91
-Views=" 1: -21.652 1.07368 203.78 218.518"
+Views=" 1: 134.406 87.3199 359.838 304.764"
 Sheet="1"
 
 [Win_2]
 Type="Board Editor"
 Number=2
 File="mkstepper.brd"
-View="7.50586 28.8374 36.9537 50.7777"
+View="0.139397 10.9565 61.2024 56.4519"
 WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524"
 PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0"
 PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6"
@@ -131,7 +131,7 @@ Type="Control Panel"
 Number=0
 
 [Desktop]
-Screen="6000 2160"
+Screen="3840 1080"
 Window="Win_1"
 Window="Win_2"
 Window="Win_3"
diff --git a/embedded/mkstepper-v011-incl-all.zip b/embedded/mkstepper-v011-incl-all.zip
new file mode 100644
index 0000000000000000000000000000000000000000..f2a423103e7e4317d9ec06af23d8351cb9b8b2f9
Binary files /dev/null and b/embedded/mkstepper-v011-incl-all.zip differ
diff --git a/embedded/mkstepper-v011/mkstepper-v011/apahandler.c b/embedded/mkstepper-v011/mkstepper-v011/apahandler.c
index a0ecb21e48373a41e8b7514132cdb5f32438d8b2..34ea0356a7d8ef9f13b6bac61cfef0d072ae00cc 100644
--- a/embedded/mkstepper-v011/mkstepper-v011/apahandler.c
+++ b/embedded/mkstepper-v011/mkstepper-v011/apahandler.c
@@ -35,39 +35,24 @@ void apa_handle_packet(uint8_t *packet, uint8_t length){
 						i ++;
 						break;
 						
-					case DELIM_KEY_POSITION_STEPS:
-					// should set 0 accel 
-						if(i + 4 > length){
-							i ++; // avoid hangup
+					case DELIM_KEY_STEPS:
+					// take steps (int32_t) and speed (uint32_t) and dir (uint8_t) to step
+						if(i + 8 > length){
+							i ++; // avoid hangup, but give up on this
 						} else {
 							int32_t steps = (packet[i+1] << 24) | (packet[i+2] << 16) | (packet[i+3] << 8) | packet[i+4]; // msb
-							stepper_steps(&stepper, steps);
-							i += 5; // bring packet ptr to next key (should)
-						}
-						break;
-					
-					case DELIM_KEY_SPEED_STEPS:
-					// should set 0 accel
-						if(i + 4 > length){
-							i ++; // avoiding hangup
-						} else {
-							uint32_t speed = (packet[i+1] << 24) | (packet[i+2] << 16) | (packet[i+3] << 8) | packet[i+4]; // msb
-							stepper_speed(&stepper, speed);
-							i += 5; // bring packet ptr to next key (should)
+							uint32_t speed = (packet[i+5] << 24) | (packet[i+6] << 16) | (packet[i+7] << 8) | packet[i+8];
+							stepper_steps(&stepper, steps, speed);
+							i += 9; // bring packet ptr to next key (should)
 						}
 						break;
 					
-					case DELIM_KEY_SEGMENT:
+					case DELIM_KEY_BLOCK:
 						if(i + 12 > length){ // confirm: not i + 12 >= ?
 							i ++; // avoid hangup
 						} else {
 							// in steps / s
-							uint32_t startspeed = (packet[i+1] << 24) | (packet[i+2] << 16) | (packet[i+3] << 8) | packet[i+4];
-							// in steps / s^2
-							int32_t accel = (packet[i+5] << 24) | (packet[i+6] << 16) | (packet[i+7] << 8) | packet[i+8];
-							// in steps
-							int32_t steps = (packet[i+9] << 24) | (packet[i+10] << 16) | (packet[i+11] << 8) | packet[i+12];
-							stepper_segment(&stepper, startspeed, accel, steps);
+							//stepper_segment(&stepper, startspeed, accel, steps);
 							i += 13; // ? not 12 ?
 						}
 						break;
diff --git a/embedded/mkstepper-v011/mkstepper-v011/apahandler.h b/embedded/mkstepper-v011/mkstepper-v011/apahandler.h
index 2b3da4c5b0e3e9d329a39013c4e696996f0d56f9..32c7104a4ef2549c51740733681ddcd109d16e5b 100644
--- a/embedded/mkstepper-v011/mkstepper-v011/apahandler.h
+++ b/embedded/mkstepper-v011/mkstepper-v011/apahandler.h
@@ -14,10 +14,9 @@
 #define APA_HANDLER_OUTSIDE 0
 #define APA_HANDLER_INSIDE 1
 
-#define DELIM_KEY_TEST 128 // toggles a light, to test network
-#define DELIM_KEY_POSITION_STEPS 129 // is 32 bit int
-#define DELIM_KEY_SPEED_STEPS 130 // is 32 bit int
-#define DELIM_KEY_SEGMENT 131
+#define DELIM_KEY_TEST 127 // toggles a light, to test network
+#define DELIM_KEY_STEPS 128 // steps (steps) uint32_t, speed (steps/s) uint32_t, dir uint8_t
+#define DELIM_KEY_BLOCK 129 // is 32 bit int
 
 void apa_handle_packet(uint8_t *packet, uint8_t length);
 void apa_return_packet(uint8_t *packet, uint8_t length);
diff --git a/embedded/mkstepper-v011/mkstepper-v011/hardware.h b/embedded/mkstepper-v011/mkstepper-v011/hardware.h
index d78aa628b6968844a5e650885254de729cd6fc75..b53743569eb4c1ee6fe8f2e50a3a9f3060c68ae5 100644
--- a/embedded/mkstepper-v011/mkstepper-v011/hardware.h
+++ b/embedded/mkstepper-v011/mkstepper-v011/hardware.h
@@ -24,13 +24,9 @@ pin_t stlb;
 
 // PORTS
 
-pin_t up0_stlr;
-pin_t up0_stlb;
 pin_t up1_stlr;
 pin_t up1_stlb;
 
-ringbuffer_t up0_rbrx;
-ringbuffer_t up0_rbtx;
 ringbuffer_t up1_rbrx;
 ringbuffer_t up1_rbtx;
 
@@ -45,17 +41,6 @@ uartport_t *ups[NUM_UPS];
 apaport_t apap0;
 apaport_t apap1;
 
-// TMC26x
-
-spiport_t spi_tmc;
-
-pin_t step_pin;
-pin_t dir_pin;
-pin_t en_pin;
-pin_t sg_pin;
-
-tmc26_t tmc;
-
 // TIMERS
 
 uint32_t overflows;
@@ -68,8 +53,23 @@ uint32_t blindcounter;
 #define TICKER_SYNC (TC0->COUNT32.CTRLBSET.reg = TCC_CTRLBSET_CMD_READSYNC)
 #define TICKER (TC0->COUNT32.COUNT.reg)
 
+// TMC26x
+
+spiport_t spi_tmc;
+
+pin_t step_pin;
+pin_t dir_pin;
+pin_t en_pin;
+pin_t sg_pin;
+
+tmc26_t tmc;
+
 // STEPPER
 
 stepper_t stepper;
 
+// DEBUG
+
+pin_t tickuptx;
+
 #endif /* HARDWARE_H_ */
\ No newline at end of file
diff --git a/embedded/mkstepper-v011/mkstepper-v011/main.c b/embedded/mkstepper-v011/mkstepper-v011/main.c
index 9edbe8f66d74e6100ac867da6b64a09475ccb137..6bb6548f30aa11b88dc11e834eff91b328ca15dd 100644
--- a/embedded/mkstepper-v011/mkstepper-v011/main.c
+++ b/embedded/mkstepper-v011/mkstepper-v011/main.c
@@ -173,50 +173,26 @@ int main(void)
 	
 	// ready interrupt system
 	__enable_irq();
-	NVIC_EnableIRQ(SERCOM4_0_IRQn); //up0tx
-	NVIC_EnableIRQ(SERCOM4_2_IRQn); //up0rx
 	NVIC_EnableIRQ(SERCOM5_0_IRQn);
 	NVIC_EnableIRQ(SERCOM5_2_IRQn);
 	NVIC_EnableIRQ(TC0_IRQn);
 	NVIC_EnableIRQ(TC2_IRQn);
 	
 	// ringbuffers (for uart ports)
-	rb_init(&up0_rbrx);
-	rb_init(&up0_rbtx);
 	rb_init(&up1_rbrx);
 	rb_init(&up1_rbtx);
 	
-	/*
-	pin_t testpin = pin_new(&PORT->Group[0], 12);
-	pin_output(&testpin);
-	pin_set(&testpin);
-	
-	while(1){
-		pin_toggle(&testpin);
-	}
-	*/
-	
 	// uarts (ports)
 	// there's some chance we should really be using one gclk channel for all of the peripherals
 	// and running that at 100MHz or so 
 	
-	up0 = uart_new(SERCOM4, &PORT->Group[0], &up0_rbrx, &up0_rbtx, 12, 13, HARDWARE_IS_APBD, HARDWARE_ON_PERIPHERAL_D); 
-	MCLK->APBDMASK.reg |= MCLK_APBDMASK_SERCOM4;
-	uart_init(&up0, 7, SERCOM4_GCLK_ID_CORE, 62675); // baud: 45402 for 921600, 63018 for 115200
-	
 	up1 = uart_new(SERCOM5, &PORT->Group[1], &up1_rbrx, &up1_rbtx, 3, 2, HARDWARE_IS_APBD, HARDWARE_ON_PERIPHERAL_D);
 	MCLK->APBDMASK.reg |= MCLK_APBDMASK_SERCOM5;
 	uart_init(&up1, 7, SERCOM5_GCLK_ID_CORE, 62675);
 	
-	ups[0] = &up0;
+	ups[0] = NULL;
 	ups[1] = &up1;
 	
-	up0_stlr = pin_new(&PORT->Group[0], 19);
-	pin_output(&up0_stlr);
-	pin_set(&up0_stlr);
-	up0_stlb = pin_new(&PORT->Group[0], 17);
-	pin_output(&up0_stlb);
-	pin_set(&up0_stlb);
 	up1_stlr = pin_new(&PORT->Group[0], 21);
 	pin_output(&up1_stlr);
 	pin_set(&up1_stlr);
@@ -224,8 +200,6 @@ int main(void)
 	pin_output(&up1_stlb);
 	pin_set(&up1_stlb);
 	
-	apaport_build(&apap0, 0, &up0, &up0_stlr, &up0_stlb);
-	apaport_reset(&apap0);
 	apaport_build(&apap1, 1, &up1, &up1_stlr, &up1_stlb);
 	apaport_reset(&apap1);
 	
@@ -270,51 +244,28 @@ int main(void)
 	
 	stepper = stepper_new(&step_pin, &dir_pin);
 	stepper_reset(&stepper);
+
+	tickuptx = pin_new(&PORT->Group[0], 13);
+	pin_output(&tickuptx);
 		
-	uint8_t lpcnt = 0;
-	uint8_t stpcnt = 0;
-	
     while (1) 
     {
-		apaport_scan(&apap0, 2);
 		apaport_scan(&apap1, 2);
-		
-		/*
-		now: step timer should not accumulate error !
-		*/
-			
-		/*
-		if(stepper.position_ticks_target == stepper.position_ticks){
-			stpcnt ++;
-			//pin_clear(&stlr);
-			//stepper_targetposition_steps(&stepper, 1000 * (stpcnt %2));
-			//stepper_targetspeed_steps(&stepper, 500);
-			//stepper_goto(&stepper, 360 * (stpcnt % 2), 1200);
-		} else {
-			//pin_set(&stlr);
-		}
-		*/
     }
 }
 
 /*
 next steps (haha)
-- do steps, steps/s speed checking, and direction
-- unit test all commands on all ports using mkterminal
-
-- this quickly so that you can mods compose
-
-further reading:	
-- quadratic interpolation for position @ time w/ velocity @ endpoint step commands
+- speed and timing: what the heck
+- reduce error accumulation in stepper: track proper last time
+- segment command
+- steps @ speed command
 
-minors:
-- bring baud rate to 1M, at least! what the heck, FTDI!
 */
 
 void SysTick_Handler(void){
 	// slow ticker
 	pin_toggle(&stlb);
-	//pin_toggle(&stlr);
 	
 	//uart_sendchar_buffered(&up0, 120);
 
@@ -351,8 +302,9 @@ void TC0_Handler(void){ // fires rarely, for counting overflows of time-ticker
 	overflows ++;
 }
 
-void TC2_Handler(void){ // fires every 16us, for step checking
+void TC2_Handler(void){ // fires every 8.3us, for step checking
 	TC2->COUNT32.INTFLAG.bit.MC0 = 1;
 	TC2->COUNT32.INTFLAG.bit.MC1 = 1;
+	pin_toggle(&tickuptx);
 	stepper_update(&stepper);
 }
\ No newline at end of file
diff --git a/embedded/mkstepper-v011/mkstepper-v011/stepper.c b/embedded/mkstepper-v011/mkstepper-v011/stepper.c
index 8b2034d5d26120f54b66c38667da3d76b0605bfb..a9b8976db8cf683216153cec42fb335e1ca74b26 100644
--- a/embedded/mkstepper-v011/mkstepper-v011/stepper.c
+++ b/embedded/mkstepper-v011/mkstepper-v011/stepper.c
@@ -29,41 +29,24 @@ void stepper_reset(stepper_t *stepper){
 	stepper->dir_steps = 1;
 }
 
-void stepper_steps(stepper_t *stepper, int32_t position){
-	stepper->position_ticks_target = abs(position);
+void stepper_steps(stepper_t *stepper, int32_t steps, uint32_t speed){
+	// set new position information
+	stepper->position_ticks_target = abs(steps);
 	stepper->position_ticks = 0;
-	if(position < 0){
+	
+	// set direction
+	if(steps < 0){
 		stepper->dir_steps = 0;
 		pin_clear(stepper->dir_pin);
 	} else {
 		stepper->dir_steps = 1;
 		pin_set(stepper->dir_pin);
 	}
-}
-
-void stepper_speed(stepper_t *stepper, uint32_t speed){
-	// minimum of 1 step / s
-	// if speed is 0, we leave speed at minimum and set state to not step?
-	(speed < 1) ? speed = 1 : (0);
+	
+	// set speed period
+	(speed < 1) ? speed = 1 : (0); // avoid 0 division, 1 step / s seems like reasonable lower bound step rate
 	stepper->speed = speed;
-	// timing not accurate to real-world yet
-	// timer is 48MHz clock on a DIV16, so we have 3 000 000 ticks / s (333ns resolution, wow)
-	stepper->speed_period = 3000000 / speed;
-}
-
-void stepper_segment(stepper_t *stepper, uint32_t startspeed, int32_t accel, int32_t steps){
-	if(accel < 0){
-		stepper->dir_accel = 0;
-	} else {
-		stepper->dir_accel = 1;
-	}
-	stepper->accel_period = 3000000 / abs(accel); // should check for / by 0
-	stepper_speed(stepper, startspeed);
-	stepper_steps(stepper, steps);
-	TICKER_SYNC;
-	uint32_t now = TICKER;
-	stepper->last_accel = now;
-	stepper->last_step = now;
+	stepper->speed_period = 2683000 / speed;
 }
 
 void stepper_update(stepper_t *stepper){	
@@ -71,6 +54,7 @@ void stepper_update(stepper_t *stepper){
 		TICKER_SYNC;
 		uint32_t now = TICKER;
 		// check if it's time to accel
+		/*
 		if(now - stepper->last_accel > stepper->accel_period){
 			if(stepper->dir_accel){
 				uint32_t newspeed = stepper->speed + 1;
@@ -81,6 +65,7 @@ void stepper_update(stepper_t *stepper){
 			}
 			stepper->last_accel = now;
 		}
+		*/
 		// check if it's time to step
 		if(now - stepper->last_step > stepper->speed_period){
 			pin_toggle(stepper->step_pin);
diff --git a/embedded/mkstepper-v011/mkstepper-v011/stepper.h b/embedded/mkstepper-v011/mkstepper-v011/stepper.h
index e7811a1cd462e51f5b2a5e82dd626042434f7320..ea55413247a516f588318ca375262d30e6995b20 100644
--- a/embedded/mkstepper-v011/mkstepper-v011/stepper.h
+++ b/embedded/mkstepper-v011/mkstepper-v011/stepper.h
@@ -36,17 +36,10 @@ stepper_t stepper_new(pin_t *step_pin, pin_t *dir_pin);
 
 void stepper_reset(stepper_t *stepper);
 
-void stepper_steps(stepper_t *stepper, int32_t steps);
-void stepper_speed(stepper_t *stepper, uint32_t speed);
-
-void stepper_segment(stepper_t *stepper, uint32_t startspeed, int32_t accel, int32_t steps);
+void stepper_steps(stepper_t *stepper, int32_t steps, uint32_t speed);
 
 void stepper_update(stepper_t *stepper);
 
-void stepper_current_position(stepper_t *steppper, float *position);
-void stepper_current_speed(stepper_t *stepper, float *speed);
-void stepper_currently(stepper_t *stepper, float *position, float *speed);
-
 /*
 step to-do
  - everything is broken and untested