diff --git a/sampleData/mediawiki/mediawikitests.properties b/sampleData/mediawiki/mediawikitests.properties
index cc7fd94..4655350 100644
--- a/sampleData/mediawiki/mediawikitests.properties
+++ b/sampleData/mediawiki/mediawikitests.properties
@@ -16,9 +16,9 @@
 password=admin
 wikitype=mediawiki
 ## All pages
-#pages=/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input1.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input10.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input11.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input12.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input13.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input14.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input2.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input3.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input4.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input5.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input6.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input8.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input9.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputBasicHtml.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputBild.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputCode.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputDefList.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputEncoded%C3%A5%C3%A4%C3%B6.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputEscBrace.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputEscBrace2.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHeaderEq.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtml2Macro.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlHeader.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlInvalid.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlList.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlTable.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputImagePx.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputImageSize.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLabel.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLinkNamespaceIssue.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLinkSpace.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLinksWS.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputMailto.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputMath.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputMedia.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputSplist.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableCleanup.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableCurly.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableDollar.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableLines.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableList.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableSpan.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputUserDate.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputWikipedia.txt
+pages=/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input1.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input10.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input11.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input12.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input13.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input14.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input2.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input3.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input4.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input5.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input6.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input8.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-Input9.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputBasicHtml.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputBild.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputCode.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputDefList.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputEncoded%C3%A5%C3%A4%C3%B6.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputEscBrace.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputEscBrace2.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHeaderEq.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtml2Macro.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlHeader.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlInvalid.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlList.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputHtmlTable.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputImagePx.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputImageSize.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLabel.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLinkNamespaceIssue.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLinkSpace.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputLinksWS.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputMailto.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputMath.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputMedia.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputSplist.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableCleanup.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableCurly.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableDollar.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableLines.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableList.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputTableSpan.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputUserDate.txt::/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputWikipedia.txt
 ## Test UDMF
-pages=/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputUserDate.txt
+#pages=/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/SampleMediawiki-InputUserDate.txt
 ## Test Comments/Discussion properties
 #pages=/Users/laura/Code/Subversion/uwc-spac/devel/sampleData/mediawiki/Comments_Pages/Clacks.txt
 ## Just one page
diff --git a/src/com/atlassian/uwc/ui/ConverterEngine.java b/src/com/atlassian/uwc/ui/ConverterEngine.java
index 08519a3..8d1eefb 100644
--- a/src/com/atlassian/uwc/ui/ConverterEngine.java
+++ b/src/com/atlassian/uwc/ui/ConverterEngine.java
@@ -98,7 +98,7 @@
 	 * We want to allow users to override this so they can handle it themselves
 	 * with converters. 
 	 */
-	private boolean illegalHandlingEnabled = true; //default = true
+	private boolean illegalHandlingEnabled = false; //default = false, as of Confluence 4.2 doesn't appear to be necessary
 	private boolean autoDetectSpacekeys = false; //default = false
 	private HashSet<String> attachedFiles;
 	
@@ -492,9 +492,6 @@
 			converters = createOneConverter(illegallinksConvStr);
 			convertPages(pages, converters, "Checking for links to illegal pagenames.");
 		} 
-		else {
-			log.warn("Illegal Name and Link Handling has been disabled. Skipping required converters.");
-		}
     }
     
     /**
@@ -1848,6 +1845,8 @@
     protected String sendPage(Page page, String parentId, ConfluenceServerSettings confSettings) {
     	//create wiki broker
     	RemoteWikiBroker broker = RemoteWikiBroker.getInstance();
+    	//update page content to be xhtml
+    	page = pageContentToXhtml(broker, confSettings, page);
     	//create page that broker can use
     	Hashtable pageTable = createPageTable(page, parentId);
      	//check for problems with settings 
@@ -1877,6 +1876,20 @@
     }
 
 
+	private Page pageContentToXhtml(RemoteWikiBroker broker,
+			ConfluenceServerSettings confSettings, Page page) {
+		try {
+			String xhtml = getContentAsXhtmlFormat(broker, confSettings, page.getConvertedText());
+			page.setConvertedText(xhtml);
+		} catch (Exception e) {
+			String errorMessage = "Could not transform wiki content in page: '"+page.getName()+
+					"' from markup to xhtml.";
+    		log.error(Feedback.REMOTE_API_ERROR + ": " + errorMessage);
+    		this.errors.addError(Feedback.REMOTE_API_ERROR, errorMessage, true);
+		}
+		return page;
+	}
+
 	/**
      * creates a parameter table with the given page and parentId.
      * @param page
@@ -2242,7 +2255,7 @@
     }
     
     protected void handleIllegalHandling(String key, String value) {
-    	boolean enabled = true; //default
+    	boolean enabled = false; //default, confluence 4 doesn't appear to need this
     	value = value.trim();
     	if ("false".equals(value))
     		enabled = false;
diff --git a/src/com/atlassian/uwc/ui/ConverterEngineTest.java b/src/com/atlassian/uwc/ui/ConverterEngineTest.java
index 429460c..0c65c15 100644
--- a/src/com/atlassian/uwc/ui/ConverterEngineTest.java
+++ b/src/com/atlassian/uwc/ui/ConverterEngineTest.java
@@ -265,7 +265,7 @@
 		//test with uploading
 		//pages = 3, converters = 34, uploading = true
 		boolean sendToConfuence = true;
-		int expected = 36 + 3 + (36 * 3) + 2 + (2*3) + 3 + 3 ;
+		int expected = 34 + 3 + (34 * 3) + 2 + (2*3) + 3 + 3 ;
 		int actual = tester.getNumberOfSteps(files, converters, sendToConfuence);
 		assertEquals(expected, actual);
 
@@ -275,15 +275,7 @@
 		expected -= 3;
 		actual = tester.getNumberOfSteps(files, converters, sendToConfuence);
 		assertEquals(expected, actual);
-		
-		//test with illegal handling disabled
-		//pages = 3, converters = 35, uploading = false, illegal handling = false
-		tester.handleNonConverterProperty(NONCONVERTER_ILLEGAL);
-		assertFalse(tester.isIllegalHandlingEnabled());
-		expected -= 8; //2 + (2*3) = conv + (conv * pages)
-		actual = tester.getNumberOfSteps(files, converters, sendToConfuence);
-		assertEquals(expected, actual);
-		
+				
 	}
 	
 	public void testSendPage_basic() {
@@ -343,7 +335,7 @@
 			assertNotNull(comment.getTitle());
 			assertEquals("Re: Home", comment.getTitle());
 			assertNotNull(comment.getContent());
-			assertEquals(input, comment.getContent());
+			assertEquals("<p>"+input+"</p>", comment.getContent());
 			assertNotNull(comment.getCreator());
 			assertEquals(settings.login, comment.getCreator());
 			String commentid = comment.getId();
@@ -407,7 +399,7 @@
 			assertNotNull(comment.getTitle());
 			assertEquals("Re: Home", comment.getTitle());
 			assertNotNull(comment.getContent());
-			assertEquals(input, comment.getContent());
+			assertEquals("<p>"+input+"</p>", comment.getContent());
 			assertNotNull(comment.getCreator());
 			assertEquals(creator, comment.getCreator());
 			assertNotNull(comment.getCreated());
@@ -613,54 +605,54 @@
 		String testpropslocation = "test.basic.properties";
 		loadSettingsFromFile(settings, testpropslocation);
 		
+		List<Page> pages = new Vector<Page>();
+		Page badpage = new Page(null);
+		badpage.setName("$BAD NAME"); //This should cause an exception. 
+		badpage.setConvertedText("testing");
+		
+		Page goodpage = new Page(null);
+		goodpage.setName("Good page");
+		goodpage.setConvertedText("testing");
+		
+		pages.add(badpage);
+		pages.add(goodpage); 
+		tester.writePages(pages , settings.spaceKey);
+		//firstly - if we do this wrong, the above throws an exception.
+		ConverterErrors errors = tester.getErrors();
 		//FIXME Illegal Page names appears to no longer be a thing?!
-//		List<Page> pages = new Vector<Page>();
-//		Page badpage = new Page(null);
-//		badpage.setName("$BAD NAME"); //This should cause an exception. 
-//		badpage.setConvertedText("testing");
-//		
-//		Page goodpage = new Page(null);
-//		goodpage.setName("Good page");
-//		goodpage.setConvertedText("testing");
-//		
-//		pages.add(badpage);
-//		pages.add(goodpage); 
-//		tester.writePages(pages , settings.spaceKey);
-//		//firstly - if we do this wrong, the above throws an exception.
-//		ConverterErrors errors = tester.getErrors();
-//		assertFalse(errors.getErrors().isEmpty());
-//		ConverterError error = (ConverterError) errors.getErrors().get(0);
-//		assertEquals(Feedback.REMOTE_API_ERROR, error.type);
-//		assertEquals("REMOTE_API_ERROR The Remote API threw an exception when it tried to upload page: \"$BAD NAME\".\n", error.getFeedbackWindowMessage());
-//		
-//		tester.getErrors().clear();
-//		pages.clear();
-//		badpage.setName("$BAD NAME 2");
-//		goodpage.setName("Good page 2");
-//		pages.add(badpage);
-//		pages.add(goodpage);
-//		
-//		FilepathHierarchy hierarchy = new FilepathHierarchy();
-//		HierarchyNode root = hierarchy.buildHierarchy(pages);
-//		tester.writeHierarchy(root, 0, settings.spaceKey);
-//		error = (ConverterError) errors.getErrors().get(0);
-//		assertEquals(Feedback.REMOTE_API_ERROR, error.type);
-//		assertEquals("REMOTE_API_ERROR The Remote API threw an exception when it tried to upload page: \"$BAD NAME 2\".\n", error.getFeedbackWindowMessage());
-//		
-//		//what happens if confluence fails in a way that does not throw an exception. See UWC-404
-//		tester.getErrors().clear();
-//		pages.clear();
-//		Page badcontent = new Page(null);
-//		badcontent.setName("OK Pagename");
-//		String badtext = "\u001F";
-//		badcontent.setConvertedText(badtext);
-//		pages.add(badcontent);
-//		tester.writePages(pages, settings.spaceKey);
-//		assertFalse(errors.getErrors().isEmpty());
-//		error = (ConverterError) errors.getErrors().get(0);
-//		assertEquals(Feedback.REMOTE_API_ERROR, error.type);
-//		assertEquals("REMOTE_API_ERROR Unknown problem occured while sending page \'OK Pagename\'. See atlassian-confluence.log for more details.\n", error.getFeedbackWindowMessage());
-//		
+		assertFalse(errors.getErrors().isEmpty());
+		ConverterError error = (ConverterError) errors.getErrors().get(0);
+		assertEquals(Feedback.REMOTE_API_ERROR, error.type);
+		assertEquals("REMOTE_API_ERROR The Remote API threw an exception when it tried to upload page: \"$BAD NAME\".\n", error.getFeedbackWindowMessage());
+		
+		tester.getErrors().clear();
+		pages.clear();
+		badpage.setName("$BAD NAME 2");
+		goodpage.setName("Good page 2");
+		pages.add(badpage);
+		pages.add(goodpage);
+		
+		FilepathHierarchy hierarchy = new FilepathHierarchy();
+		HierarchyNode root = hierarchy.buildHierarchy(pages);
+		tester.writeHierarchy(root, 0, settings.spaceKey);
+		error = (ConverterError) errors.getErrors().get(0);
+		assertEquals(Feedback.REMOTE_API_ERROR, error.type);
+		assertEquals("REMOTE_API_ERROR The Remote API threw an exception when it tried to upload page: \"$BAD NAME 2\".\n", error.getFeedbackWindowMessage());
+		
+		//what happens if confluence fails in a way that does not throw an exception. See UWC-404
+		tester.getErrors().clear();
+		pages.clear();
+		Page badcontent = new Page(null);
+		badcontent.setName("OK Pagename");
+		String badtext = "\u001F";
+		badcontent.setConvertedText(badtext);
+		pages.add(badcontent);
+		tester.writePages(pages, settings.spaceKey);
+		assertFalse(errors.getErrors().isEmpty());
+		error = (ConverterError) errors.getErrors().get(0);
+		assertEquals(Feedback.REMOTE_API_ERROR, error.type);
+		assertEquals("REMOTE_API_ERROR Unknown problem occured while sending page \'OK Pagename\'. See atlassian-confluence.log for more details.\n", error.getFeedbackWindowMessage());
+		
 	}
 	
 	public void testSendPage_MovePage() throws XmlRpcException, IOException {
@@ -1300,7 +1292,7 @@
 			BlogForXmlRpc blog = broker.getBlog(confsettings, confsettings.spaceKey, title);
 			assertNotNull(blog);
 			assertEquals(title, blog.getTitle());
-			assertEquals(testcontent, blog.getContent());
+			assertEquals("<p>"+testcontent+"</p>", blog.getContent());
 			id = blog.getId();
 			
 			//test updating the blog
@@ -1309,7 +1301,7 @@
 			tester.sendPage(page, parentid, settings);
 			blog = broker.getBlog(confsettings, confsettings.spaceKey, title);
 			assertNotNull(blog);
-			assertEquals(testcontent2, blog.getContent());
+			assertEquals("<p>"+testcontent2+"</p>", blog.getContent());
 			String newid = blog.getId();
 			assertEquals(id, newid);
 		} catch (Exception e) {
@@ -2971,18 +2963,6 @@
 			fail("Not a BaseHierarchy!");
 	}
 	
-	public void testHandleNonConverterDisableIllegalHandling() {
-//		test use switch
-		String input = "Mywiki.0001.switch.illegal-handling=false";
-		//haven't set handler yet, so should be default
-		ConverterEngine.HierarchyHandler handler = tester.getHierarchyHandler();
-		assertEquals(ConverterEngine.HierarchyHandler.DEFAULT, handler);
-		//setting the handler
-		assertTrue(tester.isIllegalHandlingEnabled());
-		tester.handleNonConverterProperty(input);
-		assertFalse(tester.isIllegalHandlingEnabled());
-	}
-	
 	public void testUsingPagenameHierarchy() {
 		ConverterEngine.HierarchyHandler handler = tester.getHierarchyHandler();
 		assertEquals(ConverterEngine.HierarchyHandler.DEFAULT, handler);
@@ -3057,6 +3037,7 @@
 		inputPages.add(page2);
 
 		//XXX Why twice?
+		tester.handleIllegalHandling("enable", "true");
 		tester.convertWithRequiredConverters(inputPages);
 		tester.convertWithRequiredConverters(inputPages);
 		
@@ -3183,6 +3164,7 @@
 		tester.handleNonConverterProperty("abc.0000.illegalnames-urldecode.property=true");
 		
 		//do the tests
+		tester.handleIllegalHandling("enable", "true");
 		tester.convertWithRequiredConverters(pages);
 
 		assertNotNull(pages);
