completed up to exercise 17 with unresolved bugs