Decoupling application errors from domain models