updated save() to make use of onSuccess onFail handlers