Added overrides for equals(Object), hashCode(), toString()
Added some comments