equals, hasCode, etc. Fixes #1