switch to using Control.Exception.catch