whoops, forgot to implement hashCode() and equals()