starts event listener for the contract
        :return:

async def listen(self, address, target):
        '''
        starts event listener for the contract
        :return:
        '''

        if not address:
            return None, "listening address not provided"

        EZO.log.info(bright("hello ezo::listening to address: {}".format(blue(address))))
        interval = self._ezo.config["poll-interval"]

        event_filter = self._ezo.w3.eth.filter({"address": address, "toBlock": "latest"})
        loop = asyncio.new_event_loop()
        try:
            while True:
                for event in event_filter.get_new_entries():
                    if EZO.log:
                        EZO.log.debug(bright("event received: {}".format(event)))
                    ContractEvent.handler(event, self, target)
                await asyncio.sleep(interval)
        except Exception as e:
            return None, e
        finally:
            loop.close()