Implemented custom equals() and hashCode() function; still refactoring