merge dynobud plotter changes
generalize to multiple channels in a nice monadic interface