settled on using TVar DecoderState everywhere for now.  Found a ton of bugs related to failing to read from queues, etc.  Kind of working now.  Going to investigate progressive slowdown with more data.