improved parameter checking