final update exercise 3