Revised with reflect.Value GetValue and PutValue