Are you suggesting that the decoder is pulled out to a separate object?  That might work better, actually.  Probably more idiomatic Go.