                 guard let (system, manager) = System.systemExtract (context, cwm)
                     else { System.cleanup  ("SYS: ETH: GetTokenBalance: Missed {cwm}", cwm: cwm); return }
 
-                let ewm = cryptoWalletManagerAsETH (cwm);
-                let network  = asUTF8String (networkGetName (ewmGetNetwork (ewm)))
-                let address  = asUTF8String (address!)
-                let contract = asUTF8String (contract!)
+                guard let network = network.map (asUTF8String),
+                    let address = address.map (asUTF8String),
+                    let contract = contract.map (asUTF8String)
+                    else { System.cleanup  ("SYS: ETH: GetTokenBalance: Missed {network, address, contract}", cwm: cwm); return }
 
                 manager.query.getBalanceAsTOK (network: network, address: address, contract: contract) {
                     (res: Result<String, BlockChainDB.QueryError>) in

                guard let (system, manager) = System.systemExtract (context, cwm)
                    else { System.cleanup  ("SYS: ETH: GetNonce: Missed {cwm}", cwm: cwm); return }

                let ewm = cryptoWalletManagerAsETH (cwm);
                let network = asUTF8String (networkGetName (ewmGetNetwork (ewm)))

                guard let address = address.map (asUTF8String)
                    else { System.cleanup  ("SYS: ETH: GetNonce: Missed {address}", cwm: cwm); return }

                 manager.query.getNonceAsETH (network: network, address: address) {
                    (res: Result<String, BlockChainDB.QueryError>) in
                    defer { cryptoWalletManagerGive (cwm!) }
                    res.resolve (

                guard let (system, manager) = System.systemExtract (context, cwm)
                    else { System.cleanup  ("SYS: ETH: SubmitTransaction: Missed {cwm}", cwm: cwm); return }

                guard let network = network.map (asUTF8String)
                    else { System.cleanup  ("SYS: ETH: SubmitTransaction: Missed {network}", cwm: cwm); return }

                manager.query.submitTransactionAsETH (network: network,
                                                      transaction: asUTF8String(transaction!)) {
