* @param client
	 */
	private void cmd_auction(final String arg, final Client client) {
		// TODO should auctioning something remove it from your inventory?
		// TODO if I don't remove the item I need to mark it so it can't be auctioned more than once
		// ideas:
		// auction <item> <time> <price> <buyout>
		// ex. auction longsword 2d 50gp 100gp
		// ex. auction longsword for 2d at 50gp
		final Player player = getPlayer(client);

		String[] args = arg.split(" ");

		if (args.length >= 2) {
			if( args[0].charAt(0) == '#' ) {
				final String param = args[0].substring(1);
				
				if ( param.equalsIgnoreCase("search") || param.equalsIgnoreCase("s") ) {
					
				}
				else if (param.equalsIgnoreCase("cancel") || param.equalsIgnoreCase("c")) {
					final Auction auction = getAuction(player, args[1]);

					if (auction != null) {
						if ( auction.hasBids() ) {
							send("You cannot cancel an auction once someone has bid on it.", client);
						}
						else {
							final Item item = auction.getItem();

							synchronized(auctions) {
								auctions.remove(auction);
							}

							send("You canceled your auction of " + item.getName(), client);

							player.getInventory().add(item);
						}
					}
					else send("No such auction!", client);
				}
			}
			else {
				final Item item = getItem(args[0], player);

				if ( item != null ) {
					if ( item.isAuctionable() ) {
						Coins price = Coins.copper(Utils.toInt(args[1], -1));

						// create auction and add it to the list
						Auction auction = createAuction(player, item, price);

						auctions.add(auction);

						// create and store a timer for the auction
						addAuctionTimer(new AuctionTimer(auction, 21600), player);

						send(item.getName() + " put up for auction at " + price.toString(true));
					}
					else {
						send("You cannot auction that item.", client);
					}
				}
				else {
					send("What do you want to auction?", client);
				}
			}
		}
	}