model templates that handle equals/hashcode and parcelable