Increase test coverage of equality methods
Add test coverage of equals/hash when different class w/ same values
Remove structs and start to extract common abstract base class