Removed old references
Cleanup
CompareWith instead of manual recursion