refactor callbacks so we properly catch remote errors
add changes