optional vs required fields