support pointers and map[string]interface{} fields