add parameter checking