had to change types (with 'a decoder and 'src,'a inner_decoder) so that Decode.record could take an association list