protected boolean handleModeSwitch(Tag tag)
	{
		//first there's no point in looking for a mode switch if the tag name isn't "key" or "plist"
		if (!tag.getName().equals(TagType.KEY) && !tag.getName().equals(TagType.PLIST))
		{
			return false;
		}
		
		switch (currentMode)
		{
			case MODE_PARSING_LIBRARY:	
				if (tag.getInnerText().equals(LibraryProperty.TRACKS))
				{
					logger.statusUpdate(ParserStatusMessage.PARSE_TIME_MESSAGE, "Parse time for Library Properties: " + performanceTimer.getTimeElapsedSinceLastReset());
					performanceTimer.reset();
					logger.statusUpdate(ParserStatusMessage.PARSING_TRACKS, "0");
					
					currentMode = MODE_PARSING_TRACKS;
					return true;
				}
				break;
			case MODE_PARSING_TRACKS:
				if (tag.getInnerText().equals(LibraryProperty.PLAYLISTS))
				{
					logger.statusUpdate(ParserStatusMessage.PARSE_TIME_MESSAGE, "Parse time for tracks: " + performanceTimer.getTimeElapsedSinceLastReset());
					performanceTimer.reset();
					logger.statusUpdate(ParserStatusMessage.PARSING_PLAYLISTS, "0");
					
					currentMode = MODE_PARSING_PLAYLISTS;
					return true;
				}
				break;
			case MODE_PARSING_PLAYLISTS:
				//there aren't any more mode switches, don't do anything..
				break;
			default:
				RuntimeException e = new RuntimeException("ItunesTagHandler Unknown Mode:" + currentMode);
				logger.error(e.getMessage(), e, false);
				throw e;					
		}
		
		return false;
	}