add some datatype checking