change value type to struct