move transaction decode into the read