added serializable and parcelable