slightly different conditional for has()