Allow composition, expose onSuccess & onError