add generic callback
handle step exception