public async Task UT_PoolFactory_SetupAsync()
        {
            // make sure we have 2 test token
            var genResult = await client.GetTokenGenesisBlockAsync(testPublicKey, testTokenA, await SignAPIAsync());

            if (genResult.ResultCode == APIResultCodes.TokenGenesisBlockNotFound)
            {
                var w1 = Restore(testPrivateKey);
                await w1.SyncAsync(client);

                var secs   = testTokenA.Split('/');
                var result = await w1.CreateTokenAsync(secs[1], secs[0], "", 8, 50000000000, true, "", "", "", Lyra.Core.Blocks.ContractTypes.Cryptocurrency, null);

                Assert.IsTrue(result.Successful(), "Failed to create token: " + result.ResultCode);
            }

            var pool = await client.GetPoolAsync(LyraGlobal.OFFICIALTICKERCODE, testTokenA);

            if (pool.PoolAccountId == null)
            {
                var w1 = Restore(testPrivateKey);
                await w1.SyncAsync(client);

                var token0 = LyraGlobal.OFFICIALTICKERCODE;
                var token1 = testTokenA;

                var poolCreateResult = await w1.CreateLiquidatePoolAsync(token0, token1);

                Assert.IsTrue(poolCreateResult.ResultCode == APIResultCodes.Success, $"Can't create pool for {token1} {poolCreateResult.ResultCode}");
            }
        }