parameter checking now use a dict of options instead of a list