work around using throw/catch to return from env blocks