allow undefined and null