Index: libcfa/src/containers/string_res.cfa
===================================================================
--- libcfa/src/containers/string_res.cfa	(revision 4e8df745bf32da07b36eb0f151a7206260a7d2eb)
+++ libcfa/src/containers/string_res.cfa	(revision fefd77adcd0a40d9ea468278e2369a92cfd9e773)
@@ -390,5 +390,5 @@
 }
 
-static void assign_(string_res &this, const char* buffer, size_t bsize, const string_res & valSrc) {
+static string_res & assign_(string_res &this, const char* buffer, size_t bsize, const string_res & valSrc) {
 
     // traverse the incumbent share-edit set (SES) to recover the range of a base string to which `this` belongs
@@ -478,22 +478,24 @@
             &pasting.Handle, bsize);
     }
-}
-
-void assign(string_res &this, const char* buffer, size_t bsize) {
-    assign_(this, buffer, bsize, *0p);
-}
-
-void ?=?(string_res &s, char other) {
-    assign(s, &other, 1);
+
+    return this;
+}
+
+string_res & assign(string_res &this, const char* buffer, size_t bsize) {
+    return assign_(this, buffer, bsize, *0p);
+}
+
+string_res & ?=?(string_res &s, char other) {
+    return assign(s, &other, 1);
 }
 
 // Copy assignment operator
-void ?=?(string_res & this, const string_res & rhs) with( this ) {
-    assign_(this, rhs.Handle.s, rhs.Handle.lnth, rhs);
-}
-
-void ?=?(string_res & this, string_res & rhs) with( this ) {
+string_res & ?=?(string_res & this, const string_res & rhs) with( this ) {
+    return assign_(this, rhs.Handle.s, rhs.Handle.lnth, rhs);
+}
+
+string_res & ?=?(string_res & this, string_res & rhs) with( this ) {
     const string_res & rhs2 = rhs;
-    this = rhs2;
+    return this = rhs2;
 }
 
@@ -780,5 +782,5 @@
 // allocation, the garbage collection routine is called.
 
-static char * __attribute__((noinline)) VbyteAlloc( VbyteHeap & this, int size ) with(this) {
+static char * VbyteAlloc( VbyteHeap & this, int size ) with(this) {
 #ifdef VbyteDebug
     serr | "enter:VbyteAlloc, size:" | size;
Index: libcfa/src/containers/string_res.hfa
===================================================================
--- libcfa/src/containers/string_res.hfa	(revision 4e8df745bf32da07b36eb0f151a7206260a7d2eb)
+++ libcfa/src/containers/string_res.hfa	(revision fefd77adcd0a40d9ea468278e2369a92cfd9e773)
@@ -87,11 +87,11 @@
 }
 
-void assign(string_res &s, const char* buffer, size_t bsize); // copy specific length from buffer
-static inline void ?=?(string_res &s, const char* other) {  // copy from string literal (NULL-terminated)
-    assign(s, other, strlen(other));
+string_res & assign(string_res &s, const char* buffer, size_t bsize); // copy specific length from buffer
+static inline string_res & ?=?(string_res &s, const char* other) {  // copy from string literal (NULL-terminated)
+    return assign(s, other, strlen(other));
 }
-void ?=?(string_res &s, const string_res &other);
-void ?=?(string_res &s, string_res &other);
-void ?=?(string_res &s, char other);
+string_res & ?=?(string_res &s, const string_res &other);
+string_res & ?=?(string_res &s, string_res &other);
+string_res & ?=?(string_res &s, char other);
 
 void ^?{}(string_res &s);
