still moving the template logic into the decoders