more proper data validation -- we are not in python