def extract(cls, tx: Transaction):
        handlers = {
            "suicide": cls.extract_suicide,
            "create": cls.extract_create,
            "call": cls.extract_call
        }

        cl = inject.instance(ParityEthJsonRpc)

        tx._traces = cl.trace_transaction(tx.hash)

        for trace_entry in tx._traces:
            try:
                transfer = handlers[trace_entry['type']](trace_entry)

                if transfer.value > 0:
                    transfer.transaction_hash = tx.hash
                    transfer.block_number = tx.block_number

                    yield transfer
            except KeyError:
                print(tx.hash)