public static async Task <Bundle> PublishWithAreaCodeAsync(this IIotaRepository repository, TryteString message, IotaAreaCode areaCode, Address address = null)
        {
            if (address == null)
            {
                address = new Address(Seed.Random().Value);
            }

            var bundle = new Bundle();

            bundle.AddTransfer(new Transfer
            {
                Address   = address,
                Message   = message,
                Tag       = new Tag(areaCode.Value),
                Timestamp = Timestamp.UnixSecondsTimestamp
            });

            bundle.Finalize();
            bundle.Sign();

            var transactionTrytes = await repository.SendTrytesAsync(bundle.Transactions, 2);

            return(Bundle.FromTransactionTrytes(transactionTrytes, bundle.Hash));
        }