protected void importCustomObjects(MOB mob, List<CMObject> custom, Set<String> customBother, boolean noPrompt, boolean noDelete)
	throws IOException
	{
		if(custom.size()==0)
			return;
		if((!noPrompt)&&((mob==null)||(mob.session()==null)))
			return;
		for(int c=0;c<custom.size();c++)
		{
			if(custom.get(c) instanceof Race)
			{
				final Race R=(Race)custom.get(c);
				if(customBother.contains(R.ID()))
				   continue;

				final Race R2=CMClass.getRace(R.ID());
				if(R2==null)
				{
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Race '@x1' found, import (Y/n)?",R.ID()),"Y"))
							continue;
					CMClass.addRace(R);
					CMLib.database().DBCreateRace(R.ID(),R.racialParms());
				}
				else
				if(!R2.isGeneric())
				{
					if(noDelete)
						continue;
					else
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Race '@x1' found which would override your standard race.  Import anyway (Y/n)?",R.ID()),"Y"))
							continue;
					CMClass.addRace(R);
					CMLib.database().DBCreateRace(R.ID(),R.racialParms());
				}
			}
			else
			if(custom.get(c) instanceof CharClass)
			{
				final CharClass C=(CharClass)custom.get(c);
				if(customBother.contains(C.ID()))
				   continue;

				final CharClass C2=CMClass.getCharClass(C.ID());
				if(C2==null)
				{
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Char Class '@x1' found, import (Y/n)?",C.ID()),"Y"))
							continue;
					CMClass.addCharClass(C);
					CMLib.database().DBCreateClass(C.ID(),C.classParms());
				}
				else
				if(!C2.isGeneric())
				{
					if(noDelete)
						continue;
					else
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Char Class '@x1' found which would override your standard class.  Import anyway (Y/n)?",C.ID()),"Y"))
							continue;
					CMClass.addCharClass(C);
					CMLib.database().DBCreateClass(C.ID(),C.classParms());
				}
			}
			else
			if(custom.get(c) instanceof Ability)
			{
				final Ability A=(Ability)custom.get(c);
				if(customBother.contains(A.ID()))
				   continue;

				final Ability A2=CMClass.getAbility(A.ID());
				if(A2==null)
				{
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Ability '@x1' found, import (Y/n)?",A.ID()),"Y"))
							continue;
					CMClass.addClass(CMObjectType.ABILITY, A);
					CMLib.database().DBCreateAbility(A.ID(),CMClass.getSimpleClassName(A),A.getStat("ALLXML"));
				}
				else
				if(!A2.isGeneric())
				{
					if(noDelete)
						continue;
					else
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Ability '@x1' found which would override your standard Ability.  Import anyway (Y/n)?",A.ID()),"Y"))
							continue;
					CMClass.delClass(CMObjectType.ABILITY, A2);
					CMClass.addClass(CMObjectType.ABILITY, A);
					CMLib.database().DBCreateAbility(A.ID(),CMClass.getSimpleClassName(A),A.getStat("ALLXML"));
				}
			}
			else
			if(custom.get(c) instanceof Manufacturer)
			{
				final Manufacturer M=(Manufacturer)custom.get(c);
				if(customBother.contains(M.name()))
				   continue;

				final Manufacturer eM=CMLib.tech().getManufacturer(M.name());
				if(eM==null)
				{
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Manufacturer '@x1' found, import (Y/n)?",M.name()),"Y"))
							continue;
					CMLib.tech().addManufacturer(eM);
				}
				else
				{
					if(noDelete)
						continue;
					else
					if(!noPrompt)
						if(!mob.session().confirm(L("Custom Manufacturer '@x1' found which would override your existing one.  Import anyway (Y/n)?",M.name()),"Y"))
							continue;
					eM.setXml(M.getXml());
				}
			}
		}
	}