Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/ConnectorHandler.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/ConnectorHandler.java	(revision 3496)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/ConnectorHandler.java	(revision 3497)
@@ -57,5 +57,5 @@
 			} catch (Throwable e) {
 				logger.error("Connector implementation {} could not be instantiated", className);
-				// TODO should be throw a RuntimeException here
+				throw new RuntimeException("Connector implementation " + className + " could not be instantiated", e); //$NON-NLS-1$
 			}
 		}
Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/LocalizedMessages.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/LocalizedMessages.java	(revision 3496)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/LocalizedMessages.java	(revision 3497)
@@ -58,5 +58,4 @@
 public class LocalizedMessages {
 
-	// TODO do we need to synchronize this map?
 	private static final Map<Locale, LocalizedMessages> prototypes = new HashMap<Locale, LocalizedMessages>();
 	private static final String DEFAULT_FILENAME = "default_messages.properties"; //$NON-NLS-1$
@@ -68,4 +67,5 @@
 	private static final Logger logger = LoggerFactory
 			.getLogger(LocalizedMessages.class);
+	private static final Object LOCK = new Object();
 
 	static {
@@ -94,5 +94,5 @@
 
 	/**
-	 * Creates a new instance of <code>LocalizedMessages</code> for a given
+	 * Returns an instance of <code>LocalizedMessages</code> for a given
 	 * request. This method automatically determines the locale of this request
 	 * and loads the appropriate bundle. If either one if null or not available,
@@ -103,6 +103,5 @@
 	 * @return instance with localized messages
 	 */
-	// TODO maybe align name to getInstance?
-	public static LocalizedMessages getMessages(HttpServletRequest request) {
+	public static LocalizedMessages getInstance(HttpServletRequest request) {
 
 		Locale locale;
@@ -116,11 +115,11 @@
 			locale = NEUTRAL;
 
-		// TODO synchronize from here
 		LocalizedMessages lp = prototypes.get(locale);
 		if (lp == null) {
-			lp = new LocalizedMessages(locale);
-			prototypes.put(locale, lp);
-		}
-		// to here
+			synchronized (LOCK) {
+				lp = new LocalizedMessages(locale);
+				prototypes.put(locale, lp);
+			}
+		}
 
 		// for now we don't need any cloning since the values are accessed
@@ -136,5 +135,4 @@
 	 * @return the locale resolver instance
 	 */
-	// TODO synchronize this method
 	private synchronized static LocaleResolver getLocaleResolverInstance() {
 
@@ -151,5 +149,5 @@
 				} catch (Throwable e) {
 					logger.error("LocaleResolver implementation {} could not be instantiated", className); //$NON-NLS-1$
-					// TODO should be throw a RuntimeException here
+					throw new RuntimeException("LocaleResolver implementation " + className + " could not be instantiated", e); //$NON-NLS-1$
 				}
 		}
Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/RequestCycleHandler.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/RequestCycleHandler.java	(revision 3496)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/handlers/RequestCycleHandler.java	(revision 3497)
@@ -60,5 +60,5 @@
 			} catch (Throwable e) {
 				logger.error("UserAction implementation {} could not be instantiated", className);
-				// TODO should be throw a RuntimeException here
+				throw new RuntimeException("UserAction implementation " + className + " could not be instantiated", e); //$NON-NLS-1$
 			}
 		}
@@ -75,5 +75,5 @@
 			} catch (Throwable e) {
 				logger.error("UserPathBuilder implementation {} could not be instantiated", className);
-				// TODO should be throw a RuntimeException here
+				throw new RuntimeException("UserPathBuilder implementation " + className + " could not be instantiated", e); //$NON-NLS-1$
 			}
 		}
Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/response/GetResponse.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/response/GetResponse.java	(revision 3496)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/response/GetResponse.java	(revision 3497)
@@ -276,5 +276,5 @@
 	/** Creates an <code>INVALID COMMAND</code> error. */
 	public static GetResponse getInvalidCommandError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_CUSTOM_ERROR, lm.getInvalidCommandSpecified());
@@ -283,5 +283,5 @@
 	/** Creates an <code>INVALID RESOURCE TYPE</code> error. */
 	public static GetResponse getInvalidResourceTypeError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_CUSTOM_ERROR, lm
@@ -291,5 +291,5 @@
 	/** Creates an <code>INVALID CURRENT FOLDER</code> error. */
 	public static GetResponse getInvalidCurrentFolderError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_CUSTOM_ERROR, lm
@@ -297,24 +297,21 @@
 	}
 
-	// TODO which EN to respond?
 	/** Creates a <code>GET RESOURCES DISABLED</code> error. */
 	public static GetResponse getGetResourcesDisabledError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_CUSTOM_ERROR, lm.getGetResourcesDisabled());
 	}
 
-	// TODO which EN to respond?
 	/** Creates a <code>GET RESOURCES READ</code> error. */
 	public static GetResponse getGetResourcesReadError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_CUSTOM_ERROR, lm.getGetResourcesReadError());
 	}
 
-	// TODO which EN to respond?
 	/** Creates a <code>CREATE FOLDER DISABLED</code> error. */
 	public static GetResponse getCreateFolderDisabledError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_CUSTOM_ERROR, lm.getCreateFolderDisabled());
@@ -323,5 +320,5 @@
 	/** Creates an <code>INVALID NEW FOLDER NAME</code> error. */
 	public static GetResponse getInvalidNewFolderNameError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_INVALID_NEW_FOLDER_NAME_ERROR, lm
@@ -331,5 +328,5 @@
 	/** Creates a <code>FOLDER ALREADY EXISTS</code> error. */
 	public static GetResponse getFolderAlreadyExistsError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_FOLDER_ALREADY_EXISTS_ERROR, lm
@@ -337,8 +334,7 @@
 	}
 
-	// TODO which EN to respond?
 	/** Creates a <code>CREATE FOLDER WRITE</code> error. */
 	public static GetResponse getCreateFolderWriteError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new GetResponse(EN_UKNOWN_CREATE_FOLDER_ERROR, lm
Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/response/UploadResponse.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/response/UploadResponse.java	(revision 3496)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/response/UploadResponse.java	(revision 3497)
@@ -134,5 +134,5 @@
 	public static UploadResponse getFileRenamedWarning(String fileUrl,
 			String newFileName) {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_FILE_RENAMED_WARNING, fileUrl,
@@ -142,5 +142,5 @@
 	/** Creates a <code>INVALID FILE TYPE</code> error. */
 	public static UploadResponse getInvalidFileTypeError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_INVALID_FILE_TYPE_ERROR, lm
@@ -150,5 +150,5 @@
 	/** Creates a <code>INVALID COMMAND</code> error. */
 	public static UploadResponse getInvalidCommandError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_CUSTOM_ERROR, null, null, lm
@@ -158,5 +158,5 @@
 	/** Creates a <code>INVALID RESOURCE TYPE</code> error. */
 	public static UploadResponse getInvalidResourceTypeError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_CUSTOM_ERROR, null, null, lm
@@ -166,5 +166,5 @@
 	/** Creates a <code>INVALID CURRENT FOLDER</code> error. */
 	public static UploadResponse getInvalidCurrentFolderError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_CUSTOM_ERROR, null, null, lm
@@ -174,5 +174,5 @@
 	/** Creates a <code>FILE UPLOAD DISABLED</code> error. */
 	public static UploadResponse getFileUploadDisabledError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_SECURITY_ERROR, null, null, lm
@@ -180,8 +180,7 @@
 	}
 
-	// TODO which EN to respond?
 	/** Creates a <code>FILE UPLOAD WRITE</code> error. */
 	public static UploadResponse getFileUploadWriteError() {
-		LocalizedMessages lm = LocalizedMessages.getMessages(ThreadLocalData
+		LocalizedMessages lm = LocalizedMessages.getInstance(ThreadLocalData
 				.getRequest());
 		return new UploadResponse(EN_CUSTOM_ERROR, null, null, lm
Index: /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/tags/CheckTag.java
===================================================================
--- /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/tags/CheckTag.java	(revision 3496)
+++ /FCKeditor.Java/trunk/java-core/src/main/java/net/fckeditor/tags/CheckTag.java	(revision 3497)
@@ -102,5 +102,5 @@
 		HttpServletRequest request = (HttpServletRequest) pageContext
 				.getRequest();
-		LocalizedMessages lm = LocalizedMessages.getMessages(request);
+		LocalizedMessages lm = LocalizedMessages.getInstance(request);
 		String response = null;
 
