added toString and hash code and equals for models