Separating the callback concern into its own class