support a couple more cases when decoding values, still TODO float