i think allowEmpty could be better as name