Why do I need reactive programming in Swift?