2.2 - Producing robust programs