diff --git a/jcommons/org.eclipse.statet.jcommons.util-tests/src/org/eclipse/statet/jcommons/string/StringUtilsTest.java b/jcommons/org.eclipse.statet.jcommons.util-tests/src/org/eclipse/statet/jcommons/util/StringUtilsTest.java
similarity index 96%
rename from jcommons/org.eclipse.statet.jcommons.util-tests/src/org/eclipse/statet/jcommons/string/StringUtilsTest.java
rename to jcommons/org.eclipse.statet.jcommons.util-tests/src/org/eclipse/statet/jcommons/util/StringUtilsTest.java
index f52352c..2f2d4ab 100644
--- a/jcommons/org.eclipse.statet.jcommons.util-tests/src/org/eclipse/statet/jcommons/string/StringUtilsTest.java
+++ b/jcommons/org.eclipse.statet.jcommons.util-tests/src/org/eclipse/statet/jcommons/util/StringUtilsTest.java
@@ -12,7 +12,7 @@
  #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
  #=============================================================================*/
 
-package org.eclipse.statet.jcommons.string;
+package org.eclipse.statet.jcommons.util;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/BasicStringFactory.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/BasicStringFactory.java
index 5cf6c97..e09285c 100644
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/BasicStringFactory.java
+++ b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/BasicStringFactory.java
@@ -14,7 +14,10 @@
 
 package org.eclipse.statet.jcommons.string;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
+
+@NonNullByDefault
 public final class BasicStringFactory implements StringFactory {
 	
 	
@@ -36,8 +39,8 @@
 	}
 	
 	@Override
-	public String get(final String s, final boolean isCompact) {
-		return (isCompact) ? s : new String(s);
+	public String get(final String s) {
+		return s;
 	}
 	
 }
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/InternStringCache.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CacheStringFactory.java
similarity index 90%
rename from jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/InternStringCache.java
rename to jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CacheStringFactory.java
index 0fbff29..4138ca3 100644
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/InternStringCache.java
+++ b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CacheStringFactory.java
@@ -18,7 +18,7 @@
 /**
  * A cache of fixed size, interning string
  */
-public class InternStringCache implements StringFactory {
+public class CacheStringFactory implements StringFactory {
 	
 	
 	private static final int HASHSET_SIZE= 0x400;
@@ -39,7 +39,7 @@
 	private final int maxCachedLength;
 	
 	
-	public InternStringCache(final int maxCachedLength) {
+	public CacheStringFactory(final int maxCachedLength) {
 		this.values= new String[HASHSET_MASK + 1];
 		this.maxCachedLength= maxCachedLength;
 	}
@@ -76,7 +76,7 @@
 	}
 	
 	@Override
-	public String get(final String s, final boolean isCompact) {
+	public String get(final String s) {
 		switch (s.length()) {
 		case 0:
 			return ""; //$NON-NLS-1$
@@ -84,7 +84,7 @@
 			return getChar(s.charAt(0), s);
 		default:
 			if (s.length() > this.maxCachedLength) {
-				return (isCompact) ? s : new String(s);
+				return s;
 			}
 			return getDefault(s);
 		}
@@ -104,7 +104,7 @@
 				return s1;
 			}
 //			this.statSet++;
-			return (this.values[i1]= String.valueOf(c).intern());
+			return (this.values[i1]= String.valueOf(c));
 		}
 	}
 	
@@ -121,7 +121,7 @@
 				return s1;
 			}
 //			this.statSet++;
-			return (this.values[i1]= s.intern());
+			return (this.values[i1]= s);
 		}
 	}
 	
@@ -144,7 +144,7 @@
 			return s1;
 		}
 //		this.statSet++;
-		return (this.values[i1]= s.toString().intern());
+		return (this.values[i1]= s.toString());
 	}
 	
 	private String getDefault(final CharSequence s) {
@@ -156,7 +156,7 @@
 			return s1;
 		}
 //		this.statSet++;
-		return (this.values[i1]= s.toString().intern());
+		return (this.values[i1]= s.toString());
 	}
 	
 	private String getDefault(final String s) {
@@ -168,7 +168,7 @@
 			return s1;
 		}
 //		this.statSet++;
-		return (this.values[i1]= s.intern());
+		return (this.values[i1]= s);
 	}
 	
 	
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CharArrayString.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CharArrayString.java
index 826104d..250ed65 100644
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CharArrayString.java
+++ b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/CharArrayString.java
@@ -14,6 +14,9 @@
 
 package org.eclipse.statet.jcommons.string;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+import org.eclipse.statet.jcommons.lang.Nullable;
+
 
 /**
  * Open string class based on char array.
@@ -22,6 +25,7 @@
  * 
  * The class is not prepared for concurrent access.
  */
+@NonNullByDefault
 public final class CharArrayString implements CharSequence {
 	
 	
@@ -39,10 +43,12 @@
 		this.array= EMPTY_ARRAY;
 	}
 	
+	@SuppressWarnings("null")
 	public CharArrayString(final char[] array, final int offset, final int length) {
 		set(array, offset, length);
 	}
 	
+	@SuppressWarnings("null")
 	public CharArrayString(final String s) {
 		set(s);
 	}
@@ -122,7 +128,7 @@
 	}
 	
 	@Override
-	public boolean equals(final Object obj) {
+	public boolean equals(final @Nullable Object obj) {
 		if (!(obj instanceof CharArrayString)) {
 			return false;
 		}
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/InternStringFactory.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/InternStringFactory.java
deleted file mode 100644
index a07e64e..0000000
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/InternStringFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*=============================================================================#
- # Copyright (c) 2012, 2021 Stephan Wahlbrink and others.
- # 
- # This program and the accompanying materials are made available under the
- # terms of the Eclipse Public License 2.0 which is available at
- # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
- # which is available at https://www.apache.org/licenses/LICENSE-2.0.
- # 
- # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
- # 
- # Contributors:
- #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
- #=============================================================================*/
-
-package org.eclipse.statet.jcommons.string;
-
-
-public final class InternStringFactory implements StringFactory {
-	
-	
-	public static final StringFactory INSTANCE= new InternStringFactory();
-	
-	
-	public InternStringFactory() {
-	}
-	
-	
-	@Override
-	public String get(final CharArrayString s) {
-		return s.toString().intern();
-	}
-	
-	@Override
-	public String get(final CharSequence s) {
-		return s.toString().intern();
-	}
-	
-	@Override
-	public String get(final String s, final boolean isCompact) {
-		return s.intern();
-	}
-	
-}
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringFactory.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringFactory.java
index 78463d1..4c72615 100644
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringFactory.java
+++ b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringFactory.java
@@ -14,10 +14,13 @@
 
 package org.eclipse.statet.jcommons.string;
 
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
 
 /**
- * Implement to provide a strategy to create (intern, compact) or share string instances.
+ * Implement to provide a strategy to create or share string instances.
  */
+@NonNullByDefault
 public interface StringFactory {
 	
 	
@@ -25,7 +28,6 @@
 	
 	String get(CharSequence s);
 	
-	String get(String s, boolean isCompact);
-	
+	String get(String s);
 	
 }
diff --git a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringUtils.java b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/util/StringUtils.java
similarity index 96%
rename from jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringUtils.java
rename to jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/util/StringUtils.java
index b4273c5..7986a9f 100644
--- a/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/string/StringUtils.java
+++ b/jcommons/org.eclipse.statet.jcommons.util/src/org/eclipse/statet/jcommons/util/StringUtils.java
@@ -12,7 +12,7 @@
  #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
  #=============================================================================*/
 
-package org.eclipse.statet.jcommons.string;
+package org.eclipse.statet.jcommons.util;
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 
