added DeduplicatingDestination, fixed Quad.equals() and compare()
added Quad.hashCode() to make it work