add 'required' logic