docs: def name_transfer(self, key, new_address, value=None):
          """ Check if this name exists and if it does, find the value field
              note that update command needs an arg of <new value>.
              in case we're simply transferring, need to obtain old value first
          """
  
          key_details = self.name_show(key)
  
          if 'code' in key_details and key_details.get('code') == -4:
              return error_reply("Key does not exist")
  
          # get new 'value' if given, otherwise use the old 'value'
          if value is None:
              value = json.dumps(key_details['value'])
  
          if not self.unlock_wallet(self.passphrase):
              error_reply("Error unlocking wallet", 403)
  
          # transfer the name (underlying call is still name_update)
          try:
              # update the 'value'
              reply = self.obj.name_update(key, value, new_address)
          except JSONRPCException as e:
              return e.error
  
          return reply