better parameter check