improved hashCode method
improved equals method
add comments
add javadoc