decode return a vector instead of a map