Homework: lessons 3 and 4. Slight issues were fixed, new unit tests were added.