support slice and struct unmarshling