better to string for errors
introduce fuzzing
simplify hashcode calculation