diff --git a/README.md b/README.md
index e6a2736322c8124cc58b549ae8eb2e28f1dfa46a..fdc9865aa75e3091f7f2798a54fc4cf7013404cc 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,18 @@ These are stepper drivers! They run:
 - 1x AS5147 if you want to get closed-loop-fancy  
 - RS485 input and 40W 24V into one 10-pin IDC  
 
+To build one w/ a motor, for closed loop stepping, I do:
+
+- N17 Motor 17HS19-2004S1
+- IDC, Plug, 2x15 609-5106-ND 
+- IDC, Plug, 2x5 609-1746-ND
+- Magnet 469-1076-ND
+- Spacer 6mm Tall 94669A101
+- M3 SHCS 50mm 91292A026
+- DIP Switch 219-8LPSTRF
+- 2x5 Latching 732-2679-ND
+- Two Part Epoxy
+
 The hardware is set up to run on the 'UCBus', a synchronous embedded protocol that establishes a bus clock *and* data lines on one RS485/UART Phy. Details are not documented anywhere ATM, but it w o r k s. 
 
 ## Closed Loop
diff --git a/firmware/cl-step-controller/src/osape b/firmware/cl-step-controller/src/osape
index 763c64b623c30fa245ddecc45ac03d1c1c8f5b17..41c6b76ffb321c0e596fac7034c5c45353a6514a 160000
--- a/firmware/cl-step-controller/src/osape
+++ b/firmware/cl-step-controller/src/osape
@@ -1 +1 @@
-Subproject commit 763c64b623c30fa245ddecc45ac03d1c1c8f5b17
+Subproject commit 41c6b76ffb321c0e596fac7034c5c45353a6514a
diff --git a/firmware/osape-smoothieroll-drop-stepper/src/osape b/firmware/osape-smoothieroll-drop-stepper/src/osape
index 7bbcbf8d8364d9beaf501d1acf6b34a77e4086f3..c940ac7425b5d544590caeeca4b49ce95b16ec76 160000
--- a/firmware/osape-smoothieroll-drop-stepper/src/osape
+++ b/firmware/osape-smoothieroll-drop-stepper/src/osape
@@ -1 +1 @@
-Subproject commit 7bbcbf8d8364d9beaf501d1acf6b34a77e4086f3
+Subproject commit c940ac7425b5d544590caeeca4b49ce95b16ec76
diff --git a/log/cl-step-control-log.md b/log/cl-step-control-log.md
index 4e282641a8913b19d9e04405e8dc4a4fc8d856b6..f955865f8136c56076468a6fe9bd246d1003dcb3 100644
--- a/log/cl-step-control-log.md
+++ b/log/cl-step-control-log.md
@@ -14,8 +14,28 @@ With 2x A4950s on the DAC, AS5047P on the encoder, etc.
 ## Likely Improvements
 
 - encoder value filtering is a PITA, see note from 2021-02-17 about filtering and time constant. change loop structure so that we (1) sample the encoder as fast as possible, always, maybe 50kHz, and then (2) filter that with a heavier first exponential filter (keeping some small time constant as a target), and (3) run the actual control loop with this filtered value 
+- use a rejection term instead of this filter... if delX > 200 encoder ticks, just use last... 
+- bring phase advance back 
 - even better, run an [alpha beta filter](https://en.wikipedia.org/wiki/Alpha_beta_filter) underneath the control loop, as fast as possible, always. 
 
+## Writing the Paper 
+
+- holding torque open loop vs closed loop: given disturbance, the open loop motor probably shows more real measured error than a well tuned closed loop controller 
+- total integral of motor output along the torque curve from 0->10kRPM,
+    - probably finding resonant dips in open loop, 
+    - maybe extending operating range in the closed loop (more RPM) 
+
+Paper List
+  - microsteps are not real, and we can measure this i.e. with zach's setup:
+    - closed loop would eliminate microsteps
+  - wider torque band: potentially higher RPM 
+  - low end torque / torque density: should robotics industry be using BLDCs 3-phase or BLDCs bipolar stepper?
+  - saturation: we can drive higher peak torque into i.e. N17 when we do closed loop control, offering potentially higher performance overall than open loop fixed-current control 
+  - efficiency: open loop wastes energy, always dissipating 
+  - just gathering motor data:
+    - torque curve, that includes efficiency - for both approaches 
+  - closed loop can actually hold position better: open loop will only apply best torque when the rotor has deviated from stator's static field by 90degs phase, cl can react 
+
 ## Evaluation
 
 - static holding, watch encoder wobble when torque applied (can see ticks moving around even w/o motor torque being overcome), measure again with closed loop: can we hold *better* than static pointing?