public void addCurrency(Player player, int amount)
    throws PlayerNotFoundExeption
  {
    String formatAmount = Matcher.quoteReplacement(plugin.economyHandler.format(Math.abs(amount)));

    if (!plugin.economyHandler.has(player.getName(), amount)) {
      languageHandler.sendMessage(player, "trade.currency.no-balance", new LanguageHandler.MessageArgument("%amount%", formatAmount));
      return;
    }

    CurrencyTradeInventory currencyTradeInventory = getTradingInventory(player);

    if ((amount < 0) && (currencyTradeInventory.getCurrency() < Math.abs(amount))) {
      languageHandler.sendMessage(player, "trade.currency.remove.cant", new LanguageHandler.MessageArgument("%amount%", formatAmount));
      return;
    }

    EconomyResponse response = plugin.economyHandler.withdrawPlayer(player.getName(), amount);

    int newCurrency = currencyTradeInventory.getCurrency() + amount;

    currencyTradeInventory.setCurrency(newCurrency);

    getTradingInventory(getOtherPlayer(player)).setOthersCurrency(newCurrency);

    if (amount > 0) {
      languageHandler.sendMessage(player, "trade.currency.add.self", 
        new LanguageHandler.MessageArgument[] { 
        new LanguageHandler.MessageArgument("%amount%", formatAmount), 
        new LanguageHandler.MessageArgument("%balance%", Matcher.quoteReplacement(plugin.economyHandler.format(response.balance))) });

      languageHandler.sendMessage(getOtherPlayer(player), "trade.currency.add.other", 
        new LanguageHandler.MessageArgument[] { 
        new LanguageHandler.MessageArgument("%playername%", player.getName()), 
        new LanguageHandler.MessageArgument("%amount%", formatAmount) });
    }
    else {
      languageHandler.sendMessage(player, "trade.currency.remove.self", 
        new LanguageHandler.MessageArgument[] { 
        new LanguageHandler.MessageArgument("%amount%", formatAmount), 
        new LanguageHandler.MessageArgument("%balance%", Matcher.quoteReplacement(plugin.economyHandler.format(response.balance))) });

      languageHandler.sendMessage(getOtherPlayer(player), "trade.currency.remove.other", 
        new LanguageHandler.MessageArgument[] { 
        new LanguageHandler.MessageArgument("%playername%", player.getName()), 
        new LanguageHandler.MessageArgument("%amount%", formatAmount) });
    }

    super.cancelAccept(getOtherPlayer(player));
  }