use raise, not fail