diff --git a/mobile/bind.go b/mobile/bind.go
index 48e9921b4456f7c19d1a6230bab6b510df801f3e..dc3f32b1524536c87516e188d1d93bca15ef0506 100644
--- a/mobile/bind.go
+++ b/mobile/bind.go
@@ -19,7 +19,6 @@
 package geth
 
 import (
-	"errors"
 	"math/big"
 	"strings"
 
@@ -28,7 +27,6 @@ import (
 	"github.com/ethereum/go-ethereum/accounts/keystore"
 	"github.com/ethereum/go-ethereum/common"
 	"github.com/ethereum/go-ethereum/core/types"
-	"github.com/ethereum/go-ethereum/crypto"
 )
 
 // Signer is an interface defining the callback when a contract requires a
@@ -82,28 +80,14 @@ func NewTransactOpts() *TransactOpts {
 	return new(TransactOpts)
 }
 
-// NewKeyedTransactor is a utility method to easily create a transaction signer
+// NewKeyedTransactOpts is a utility method to easily create a transaction signer
 // from a single private key.
 func NewKeyedTransactOpts(keyJson []byte, passphrase string) (*TransactOpts, error) {
 	key, err := keystore.DecryptKey(keyJson, passphrase)
 	if err != nil {
 		return nil, err
 	}
-	keyAddr := crypto.PubkeyToAddress(key.PrivateKey.PublicKey)
-	opts := bind.TransactOpts{
-		From: keyAddr,
-		Signer: func(signer types.Signer, address common.Address, tx *types.Transaction) (*types.Transaction, error) {
-			if address != keyAddr {
-				return nil, errors.New("not authorized to sign this account")
-			}
-			signature, err := crypto.Sign(signer.Hash(tx).Bytes(), key.PrivateKey)
-			if err != nil {
-				return nil, err
-			}
-			return tx.WithSignature(signer, signature)
-		},
-	}
-	return &TransactOpts{opts}, nil
+	return &TransactOpts{*bind.NewKeyedTransactor(key.PrivateKey)}, nil
 }
 
 func (opts *TransactOpts) GetFrom() *Address    { return &Address{opts.opts.From} }