implemented up to ch. 3 ex 20