Use extensible exceptions at the lowest level