also overwritten hashCode() since equals and hashcode should always be
overwritten in pairs. Also eclipse has good generators for this.