Agreed, feels like this would simplify `decoders.py`. I'll take a look at this today if you haven't already @hunse?