Cleaned up visitor and reducer interfaces.
Refactor compare methods