hard exits on errors