@Override
	public boolean execute(MOB mob, List<String> commands, int metaFlags)
		throws java.io.IOException
	{
		Vector<String> origCmds=new XVector<String>(commands);
		if(commands.size()<2)
		{
			CMLib.commands().doCommandFail(mob,origCmds,L("Hold what?"));
			return false;
		}
		commands.remove(0);
		final List<Item> items=CMLib.english().fetchItemList(mob,mob,null,commands,Wearable.FILTER_UNWORNONLY,false);
		if(items.size()==0)
			CMLib.commands().doCommandFail(mob,origCmds,L("You don't seem to be carrying that."));
		else
		for(int i=0;i<items.size();i++)
			if((items.size()==1)||(items.get(i).canWear(mob,Wearable.WORN_HELD)))
			{
				final Item item=items.get(i);
				int msgType=CMMsg.MSG_HOLD;
				String str=L("<S-NAME> hold(s) <T-NAME>.");
				if((mob.freeWearPositions(Wearable.WORN_WIELD,(short)0,(short)0)>0)
				&&((item.rawProperLocationBitmap()==Wearable.WORN_WIELD)
				||(item.rawProperLocationBitmap()==(Wearable.WORN_HELD|Wearable.WORN_WIELD))))
				{
					str=L("<S-NAME> wield(s) <T-NAME>.");
					msgType=CMMsg.MSG_WIELD;
				}
				final CMMsg newMsg=CMClass.getMsg(mob,item,null,msgType,str);
				if(mob.location().okMessage(mob,newMsg))
					mob.location().send(mob,newMsg);
			}
		return false;
	}