moved `on` method from provider