code: function cancelWallet(wallet, arrDeviceAddresses, arrOtherCosigners){
  	console.log("canceling wallet "+wallet);
  	// some of the cosigners might not be paired
  	/*
  	arrDeviceAddresses.forEach(function(device_address){
  		if (device_address !== device.getMyDeviceAddress())
  			sendCommandToCancelNewWallet(device_address, wallet);
  	});*/
  	var arrOtherDeviceAddresses = _.uniq(arrOtherCosigners.map(function(cosigner){ return cosigner.device_address; }));
  	var arrInitiatorDeviceAddresses = _.difference(arrDeviceAddresses, arrOtherDeviceAddresses);
  	if (arrInitiatorDeviceAddresses.length !== 1)
  		throw Error("not one initiator?");
  	var initiator_device_address = arrInitiatorDeviceAddresses[0];
  	sendCommandToCancelNewWallet(initiator_device_address, wallet);
  	arrOtherCosigners.forEach(function(cosigner){
  		if (cosigner.device_address === device.getMyDeviceAddress())
  			return;
  		// can't use device.sendMessageToDevice because some of the proposed cosigners might not be paired
  		device.sendMessageToHub(cosigner.hub, cosigner.pubkey, "cancel_new_wallet", {wallet: wallet});
  	});
  	db.query("DELETE FROM extended_pubkeys WHERE wallet=?", [wallet], function(){
  		db.query("DELETE FROM wallet_signing_paths WHERE wallet=?", [wallet], function(){});
  	});
  }
docs: called from UI