Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision 11f65b3369fa32d43b280f81c50724661e3d2e56)
+++ libcfa/src/collections/string.cfa	(revision 7abc3de999f40164616d9d6530aca0aba093a66e)
@@ -45,4 +45,10 @@
 }
 
+void ?{}( string & s, const string & s2, size_t maxlen) {
+    (s.inner) { malloc() };
+    ?{}( *s.inner, *s2.inner, COPY_VALUE, maxlen );
+}
+
+
 void ?{}( string & s, string & c ) {
     ?{}( s, (const string &) c );
@@ -51,6 +57,5 @@
 void ?{}( string & s, const char c ) {
     (s.inner) { malloc() };
-	char cs[2] = { c, '\0' };
-    ?{}( *s.inner, cs );
+    ?{}( *s.inner, c );
 }
 
Index: libcfa/src/collections/string.hfa
===================================================================
--- libcfa/src/collections/string.hfa	(revision 11f65b3369fa32d43b280f81c50724661e3d2e56)
+++ libcfa/src/collections/string.hfa	(revision 7abc3de999f40164616d9d6530aca0aba093a66e)
@@ -34,4 +34,5 @@
 void ?{}(string & s); // empty string
 void ?{}(string & s, const string & s2);
+void ?{}(string & s, const string & s2, size_t maxlen);
 void ?{}(string & s, string & s2);
 
Index: libcfa/src/collections/string_res.hfa
===================================================================
--- libcfa/src/collections/string_res.hfa	(revision 11f65b3369fa32d43b280f81c50724661e3d2e56)
+++ libcfa/src/collections/string_res.hfa	(revision 7abc3de999f40164616d9d6530aca0aba093a66e)
@@ -78,5 +78,9 @@
     (s){ rhs, strlen(rhs) };
 }
-
+static inline void ?{}(string_res & s, char c ) {
+    ?{}( s, &c, 1);
+}
+
+// Deleting the copy constructors makes the compiler reject an attempt to call/return by value
 void ?{}(string_res & s, const string_res & s2) = void;
 void ?{}(string_res & s, string_res & s2) = void;
@@ -86,4 +90,7 @@
 static inline void ?{}(string_res & s, const string_res & src, StrResInitMode mode ) {
     ?{}( s, src, mode, 0, size(src));
+}
+static inline void ?{}(string_res & s, const string_res & src, StrResInitMode mode, size_t maxlen ) {
+    ?{}( s, src, mode, 0, (size(src) > maxlen)?maxlen:size(src) );
 }
 
Index: tests/collections/.expect/string-api-coverage.txt
===================================================================
--- tests/collections/.expect/string-api-coverage.txt	(revision 11f65b3369fa32d43b280f81c50724661e3d2e56)
+++ tests/collections/.expect/string-api-coverage.txt	(revision 7abc3de999f40164616d9d6530aca0aba093a66e)
@@ -14,10 +14,13 @@
 true false
 true false
+1234567
 123
 hello
+hell
 hello
 world
 hello
 world
+Q
 1234567
 hello
Index: tests/collections/string-api-coverage.cfa
===================================================================
--- tests/collections/string-api-coverage.cfa	(revision 11f65b3369fa32d43b280f81c50724661e3d2e56)
+++ tests/collections/string-api-coverage.cfa	(revision 7abc3de999f40164616d9d6530aca0aba093a66e)
@@ -66,9 +66,15 @@
     //
     {
-        string b1 = { "1234567", 3 };
-        sout | b1; // 123
+        string b1 = "1234567";
+        sout | b1; // 1234567
+
+        string b1x = { "1234567", 3 };
+        sout | b1x; // 123
 
         string b2 = s;
         sout | b2; // hello
+
+        string b2x = { s, 4 };
+        sout | b2x; // hell
 
         // todo: a plain string &
@@ -88,4 +94,9 @@
         b4 = s_constref;
         sout | b4;  // world
+
+        string b5 = 'Q';
+        sout | b5; // Q
+
+
     }
                                             assertWellFormedHandleList( 10 );
