Extract out factory methods
Implement equals for simple types
Implement equals for complex types
Fixed factories