Task 10 (Must be refactored and understood)