Using reflect.Value to trim down the boilerplate