support optional fields