implement update through save()