void SampleEscrowManager::OnInitializeEscrow(BtcGuiTest* btcGuiTest)
{
    // create a new client
    if(client == NULL)
        this->client = SampleEscrowClientPtr(new SampleEscrowClient(BitcoinServerPtr(new BitcoinServer("admin1", "123", "http://127.0.0.1", 19001))));

    // connect events to update GUI
    QObject::connect(client.get(), SIGNAL(SetMultiSigAddress(const std::string&)), btcGuiTest, SLOT(SetMultiSigAddress(const std::string&)));
    QObject::connect(client.get(), SIGNAL(SetTxIdDeposit(const std::string&)), btcGuiTest, SLOT(SetTxIdDeposit(const std::string&)));
    QObject::connect(client.get(), SIGNAL(SetConfirmationsDeposit(int)), btcGuiTest, SLOT(OnSetConfirmationsDeposit(int)));
    QObject::connect(client.get(), SIGNAL(SetStatusDeposit(SampleEscrowTransaction::SUCCESS)), btcGuiTest, SLOT(SetStatusDeposit(SampleEscrowTransaction::SUCCESS)));
    QObject::connect(client.get(), SIGNAL(SetWithdrawalAddress(const std::string&)), btcGuiTest, SLOT(SetWithdrawalAddress(const std::string&)));
    QObject::connect(client.get(), SIGNAL(SetTxIdWithdrawal(const std::string&)), btcGuiTest, SLOT(SetTxIdWithdrawal(const std::string&)));
    QObject::connect(client.get(), SIGNAL(SetConfirmationsWithdrawal(int)), btcGuiTest, SLOT(OnSetConfirmationsWithdrawal(int)));
    QObject::connect(client.get(), SIGNAL(SetStatusWithdrawal(SampleEscrowTransaction::SUCCESS)), btcGuiTest, SLOT(SetStatusWithdrawal(SampleEscrowTransaction::SUCCESS)));

    double amountToSend = btcGuiTest->GetAmountToSend();
    int64_t amountSatoshis = BtcHelper::CoinsToSatoshis(amountToSend);

    // instruct client to start sending bitcoin to pool
    client->StartDeposit(amountSatoshis, this->escrowPool); 
}