class Transfer extends ManagedTransaction {

    public static RemoteCall<TransactionReceipt> sendFunds(
            final Web3j web3j, final Credentials credentials,
            final String toAddress, final BigDecimal value, final Convert.Unit unit)
            throws InterruptedException,
            IOException, TransactionException {

        final TransactionManager transactionManager = new RawTransactionManager(web3j, credentials);

        return new RemoteCall<TransactionReceipt>(new Callable<TransactionReceipt>() {
            @Override
            public TransactionReceipt call() throws Exception {
                return new Transfer(web3j, transactionManager).send(toAddress, value, unit);
            }
        });
    }

    public  Transfer(Web3j web3j, TransactionManager transactionManager);

}