diff --git a/aconversions/src/re2fa/Brzozowski.cpp b/aconversions/src/re2fa/Brzozowski.cpp
index 1ba137b7ff542b05b630cc17790e4a6589947bb5..ef5d6e34ccb034898271cd02537d18aca5c00e66 100644
--- a/aconversions/src/re2fa/Brzozowski.cpp
+++ b/aconversions/src/re2fa/Brzozowski.cpp
@@ -36,7 +36,7 @@ FSM Brzozowski::convert( void )
 
             for( const auto & symbol : alphabet )
             {
-                list<RegExpElement*> dString( 1, new RegExpSymbol( symbol.getSymbol( ) ) );
+                list<RegExpElement*> dString( 1, new RegExpSymbol( symbol.getSymbol( ). getSymbol( ) ) );
                 RegExp derived = deriv.derivation( dString );
                 derived.setRegExp ( opt.optimize( derived.getRegExp( ) ) );
 
diff --git a/alib/src/regexp/RegExpPrinter.cpp b/alib/src/regexp/RegExpPrinter.cpp
index 223ab546911f2e457c2a9f3558d7cc2da972c8b3..bd8371e3c70528854ab28b381dbf2318151077d6 100644
--- a/alib/src/regexp/RegExpPrinter.cpp
+++ b/alib/src/regexp/RegExpPrinter.cpp
@@ -83,7 +83,7 @@ void RegExpPrinter::printIteration(Iteration* iteration, ostream& out, string pr
 
 void RegExpPrinter::printSymbol(RegExpSymbol* symbol, ostream& out, string prefix) {
 	out << prefix << "<symbol>";
-	out << symbol->getSymbol();
+	out << symbol->getSymbol().getSymbol();
 	out << "</symbol>\n";
 }
 
diff --git a/alib/src/regexp/RegExpSymbol.cpp b/alib/src/regexp/RegExpSymbol.cpp
index 1ecb2bcf901c5a45582414d6af11b56003c92833..6c017bba1bc404c7afce72227478abf72b5d023a 100644
--- a/alib/src/regexp/RegExpSymbol.cpp
+++ b/alib/src/regexp/RegExpSymbol.cpp
@@ -10,15 +10,15 @@
 namespace regexp {
 
 RegExpSymbol::RegExpSymbol() :
-		Symbol("") {
+		symbol("") {
 }
 
 RegExpSymbol::RegExpSymbol(const string& symbol) :
-		Symbol(symbol) {
+		symbol(symbol) {
 }
 
 RegExpElement* RegExpSymbol::clone() const {
-	return new RegExpSymbol(this->symbol);
+	return new RegExpSymbol(this->symbol.getSymbol());
 }
 
 bool RegExpSymbol::operator<(const RegExpElement& other) const {
@@ -70,5 +70,9 @@ bool RegExpSymbol::containsEmptyString() const {
 	return false;
 }
 
+const Symbol& RegExpSymbol::getSymbol() const {
+	return this->symbol;
+}
+
 } /* namespace regexp */
 
diff --git a/alib/src/regexp/RegExpSymbol.h b/alib/src/regexp/RegExpSymbol.h
index 1b7b4982b145d8c4ee89870ee2f0210e91074157..6ea3028565bb4f5806f4a66007d441dfbd04d07d 100644
--- a/alib/src/regexp/RegExpSymbol.h
+++ b/alib/src/regexp/RegExpSymbol.h
@@ -20,7 +20,8 @@ using namespace alphabet;
 /**
  * Represents symbol in the regular expression. Contains name of the symbol.
  */
-class RegExpSymbol: public RegExpElement, public Symbol {
+class RegExpSymbol: public RegExpElement {
+	Symbol symbol;
 public:
 	RegExpSymbol();
 	RegExpSymbol(const string& symbol);
@@ -48,6 +49,8 @@ public:
 	 * @copydoc RegExpElement::containsEmptyString() const
 	 */
 	bool containsEmptyString() const;
+	
+	const Symbol& getSymbol() const;
 };
 
 } /* namespace regexp */
diff --git a/libaderivation/src/RegExpDerivation.cpp b/libaderivation/src/RegExpDerivation.cpp
index d78f6f7101a5efe898a4d464c2828596915d6fcd..5c0c8314f455fa85e25be563d8e2df53a5098805 100644
--- a/libaderivation/src/RegExpDerivation.cpp
+++ b/libaderivation/src/RegExpDerivation.cpp
@@ -106,7 +106,7 @@ RegExpElement * RegExpDerivation::derivation( Iteration * element, const RegExpS
 
 RegExpElement * RegExpDerivation::derivation( RegExpSymbol * element, const RegExpSymbol & dSymbol ) const
 {
-    if( dSymbol == element->getSymbol( ) )
+    if( dSymbol == element->getSymbol( ).getSymbol( ) )
         return new RegExpEpsilon( );
     else
         return new RegExpEmpty( );
diff --git a/libaregexptree/src/RegExpAlphabet.cpp b/libaregexptree/src/RegExpAlphabet.cpp
index d39a7183fa6682d5c21a19f82b1acff33c21b5ce..e2e7c44dc54750a2dc828628ec95093869ffeb46 100644
--- a/libaregexptree/src/RegExpAlphabet.cpp
+++ b/libaregexptree/src/RegExpAlphabet.cpp
@@ -10,7 +10,7 @@ set<RegExpSymbol> RegExpAlphabet::getSymbols( const RegExp & re )
     set<RegExpSymbol> alphabet;
 
     for( const auto & symbol : getSymbolsListInOrder( re ) )
-        alphabet.insert( RegExpSymbol( symbol->getSymbol( ) ) );
+        alphabet.insert( RegExpSymbol( symbol->getSymbol( ).getSymbol( ) ) );
 
     return alphabet;
 }