@Override
    public List<Transaction> loadInBackground() {
      final Set<Transaction> transactions = wallet.getTransactions(true);
      final List<Transaction> filteredTransactions =
          new ArrayList<Transaction>(transactions.size());

      for (final Transaction tx : transactions) {
        final boolean sent = tx.getValue(wallet).signum() < 0;
        final boolean isInternal = tx.getPurpose() == Transaction.Purpose.KEY_ROTATION;

        if ((direction == Direction.RECEIVED && !sent && !isInternal)
            || direction == null
            || (direction == Direction.SENT && sent && !isInternal)) filteredTransactions.add(tx);
      }

      Collections.sort(filteredTransactions, TRANSACTION_COMPARATOR);

      return filteredTransactions;
    }