raise exceptions instead of returning error info