movied outcome & reason to top level; added some defensive conditionals to response parsing