writing donate and donator model