Add .Equals overrides, update caching