sake now passes exit code back to caller