code: def simple_transaction(self, from_address, to, op_return=None, min_confirmations=6):
          
          to = [to] if not isinstance(to, list) else to
          amount = sum([amount for addr, amount in to])
          n_outputs = len(to) + 1     # change
          if op_return:
              n_outputs += 1
  
          # select inputs
          inputs, change = self._select_inputs(from_address, amount, n_outputs, min_confirmations=min_confirmations)
          outputs = [{'address': to_address, 'value': amount} for to_address, amount in to]
          outputs += [{'address': from_address, 'value': change}]
  
          #add op_return
          if op_return:
              outputs += [{'script': self._op_return_hex(op_return), 'value': 0}]
          tx = self.build_transaction(inputs, outputs)
          return tx
docs: Args:
              from_address (str): bitcoin address originating the transaction
              to: tuple of ``(to_address, amount)`` or list of tuples ``[(to_addr1, amount1), (to_addr2, amount2)]``. Amounts are in *satoshi*
              op_return (str): ability to set custom ``op_return``
              min_confirmations (int): minimal number of required confirmations
  
          Returns:
              transaction