diff --git a/alib2data/src/regexp/RegExpAlphabetGetter.cpp b/alib2data/src/regexp/RegExpAlphabetGetter.cpp
index c34882045187d1c11e8b01bb0a441c8dcb15ea7d..02a719fffbe266c17eb9ae495e374c7e71bb96cc 100644
--- a/alib2data/src/regexp/RegExpAlphabetGetter.cpp
+++ b/alib2data/src/regexp/RegExpAlphabetGetter.cpp
@@ -10,19 +10,19 @@
 namespace regexp {
 
 void RegExpAlphabetGetter::Visit(void* userData, const UnboundedRegExp& regexp) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = regexp.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &regexp.getAlphabet();
 }
 
 void RegExpAlphabetGetter::Visit(void* userData, const FormalRegExp& regexp) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = regexp.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &regexp.getAlphabet();
 }
 
-std::set<alphabet::Symbol> RegExpAlphabetGetter::getAlphabet(const RegExp& regexp) const {
-	std::set<alphabet::Symbol> res;
+const std::set<alphabet::Symbol>& RegExpAlphabetGetter::getAlphabet(const RegExp& regexp) const {
+	const std::set<alphabet::Symbol>* res;
 	regexp.getData().Accept((void*) &res, *this);
-	return std::move(res);
+	return *res;
 }
 
 const RegExpAlphabetGetter RegExpAlphabetGetter::REG_EXP_ALPHABET_GETTER;
diff --git a/alib2data/src/regexp/RegExpAlphabetGetter.h b/alib2data/src/regexp/RegExpAlphabetGetter.h
index d278c1153f30724d736d658a002ffb4f3aacc72a..88cea5e1c10a5e93c58439c0dce6caa9a2b19095 100644
--- a/alib2data/src/regexp/RegExpAlphabetGetter.h
+++ b/alib2data/src/regexp/RegExpAlphabetGetter.h
@@ -26,7 +26,7 @@ public:
 	 * @param regexp RegExp to print
 	 * @returns string representation of regexp
 	 */
-	std::set<alphabet::Symbol> getAlphabet(const RegExp& regexp) const;
+	const std::set<alphabet::Symbol>& getAlphabet(const RegExp& regexp) const;
 
 	static const RegExpAlphabetGetter REG_EXP_ALPHABET_GETTER;
 };
diff --git a/alib2data/src/string/StringAlphabetGetter.cpp b/alib2data/src/string/StringAlphabetGetter.cpp
index 68a0b72cd2b97b419bdb1cf22562acfd36d57c2a..f85d76385e89a977d84896434576e89df3f9a720 100644
--- a/alib2data/src/string/StringAlphabetGetter.cpp
+++ b/alib2data/src/string/StringAlphabetGetter.cpp
@@ -10,24 +10,24 @@
 namespace string {
 
 void StringAlphabetGetter::Visit(void* userData, const CyclicString& string) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = string.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &string.getAlphabet();
 }
 
 void StringAlphabetGetter::Visit(void* userData, const Epsilon& string) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = string.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &string.getAlphabet();
 }
 
 void StringAlphabetGetter::Visit(void* userData, const LinearString& string) const {
-	std::set<alphabet::Symbol> &res = *((std::set<alphabet::Symbol>*) userData);
-	res = string.getAlphabet();
+	const std::set<alphabet::Symbol>* &res = *((const std::set<alphabet::Symbol>**) userData);
+	res = &string.getAlphabet();
 }
 
-std::set<alphabet::Symbol> StringAlphabetGetter::getAlphabet(const String& string) const {
-	std::set<alphabet::Symbol> res;
+const std::set<alphabet::Symbol>& StringAlphabetGetter::getAlphabet(const String& string) const {
+	const std::set<alphabet::Symbol>* res;
 	string.getData().Accept((void*) &res, *this);
-	return std::move(res);
+	return *res;
 }
 
 const StringAlphabetGetter StringAlphabetGetter::STRING_ALPHABET_GETTER;
diff --git a/alib2data/src/string/StringAlphabetGetter.h b/alib2data/src/string/StringAlphabetGetter.h
index c3f84c738a4d4e89967d6e81e3f87bf13a903a2d..ec391dba5e7825998597abfecefb76325368de39 100644
--- a/alib2data/src/string/StringAlphabetGetter.h
+++ b/alib2data/src/string/StringAlphabetGetter.h
@@ -28,7 +28,7 @@ public:
 	 * @param string String to print
 	 * @returns string representation of string
 	 */
-	std::set<alphabet::Symbol> getAlphabet(const String& string) const;
+	const std::set<alphabet::Symbol>& getAlphabet(const String& string) const;
 
 	static const StringAlphabetGetter STRING_ALPHABET_GETTER;
 };
diff --git a/alib2data/src/string/common/StringAlphabet.h b/alib2data/src/string/common/StringAlphabet.h
index 5838ed4608606773531ec5c0834aadd7e2e876fb..6bb3fffe39d37ffbdcb9150900acd3b493bc5618 100644
--- a/alib2data/src/string/common/StringAlphabet.h
+++ b/alib2data/src/string/common/StringAlphabet.h
@@ -26,8 +26,8 @@ public:
 	 * @param symbol Symbol to add
 	 */
 	bool addSymbolToAlphabet(const alphabet::Symbol& symbol);
-	
-    /**
+
+	/**
 	 * Adds input symbols to input alphabet.
 	 * @param symbols Symbol to add
 	 */