model toString(), equals(...), hashCode() implemented, constrains added