completed part 4, added reflection