required params are non-empty