added parameter checking