2.3 - Producing robust programs