added perform routine
added instant onError, onSuccess callbacks