added some hashcode generation stuff