diff --git a/aconversions/src/conversions/re2fa/BrzozowskiDerivative.cpp b/aconversions/src/conversions/re2fa/BrzozowskiDerivative.cpp
index d2c9f896b6545931d4191ff1cb15129ced916608..1ae3d80fd6143f36a2130456d2fd4fe8d788c036 100644
--- a/aconversions/src/conversions/re2fa/BrzozowskiDerivative.cpp
+++ b/aconversions/src/conversions/re2fa/BrzozowskiDerivative.cpp
@@ -92,7 +92,7 @@ RegExpElement * BrzozowskiDerivative::derivativeConcatenation( Concatenation * e
             l.push_back( e->clone() );
     }
 
-    if( containsEpsilon( * element->getElements( ).begin( ) ) )
+    if( RegExpUtils::containsEpsilon( * element->getElements( ).begin( ) ) )
     {
         Alternation* alt = new Alternation( );
         list<RegExpElement*> & al = alt->getElements( );
@@ -133,32 +133,4 @@ RegExpElement * BrzozowskiDerivative::derivativeSymbol( RegExpSymbol * element,
     return dSymbol == element->getSymbol( ) ? new RegExpSymbol( "" ) : NULL;
 }
 
-bool BrzozowskiDerivative::containsEpsilon( RegExpElement * element ) const
-{
-    Alternation* alternation = dynamic_cast<Alternation*>( element );
-    Concatenation* concatenation = dynamic_cast<Concatenation*>( element );
-    Iteration* iteration = dynamic_cast<Iteration*>( element );
-    RegExpSymbol* symbol = dynamic_cast<RegExpSymbol*>( element );
-
-    if( alternation )
-    {
-        for( auto e : alternation->getElements( ) )
-            if( containsEpsilon( e ) )
-                return true;
-
-        return false;
-    }
-
-    if( concatenation )
-    {
-        for( auto e : concatenation->getElements( ) )
-            if( ! containsEpsilon( e ) )
-                return false;
-
-        return true;
-    }
-
-    return iteration || ( symbol && *symbol == RegExpSymbol( "" ) );
-}
-
 } /* namespace conversions */
diff --git a/aconversions/src/conversions/re2fa/BrzozowskiDerivative.h b/aconversions/src/conversions/re2fa/BrzozowskiDerivative.h
index aaf55c4d133501cf7d4fb2d97d1866985fd49077..dfb6df5965939753b90b40bed094ef31a0d83a40 100644
--- a/aconversions/src/conversions/re2fa/BrzozowskiDerivative.h
+++ b/aconversions/src/conversions/re2fa/BrzozowskiDerivative.h
@@ -19,6 +19,7 @@
 
 #include "BrzozowskiDerivativeNormalize.h"
 #include "../../utils/ConversionException.h"
+#include "../../utils/RegExpUtils.h"
 
 namespace conversions
 {
diff --git a/aconversions/src/conversions/re2fa/Makefile b/aconversions/src/conversions/re2fa/Makefile
index d1943d04daf3c06f55fdb60ef58025b7cd7706a0..56235e2da2ea2f04ea25ae47b9ac3d748e1793a5 100644
--- a/aconversions/src/conversions/re2fa/Makefile
+++ b/aconversions/src/conversions/re2fa/Makefile
@@ -1,19 +1,19 @@
 all: are2fa.glushkov are2fa.brzozowski are2fa.thompson
 	mv are2fa.glushkov $(BIN_DIR)
-	#mv are2fa.brzozowski $(BIN_DIR)
+	mv are2fa.brzozowski $(BIN_DIR)
 	mv are2fa.thompson $(BIN_DIR)
 
 are2fa.glushkov: are2fa.glushkov.o Glushkov.o AbstractREtoFAConverter.o RegExpUtils.o ConversionException.o
 	$(LD) $(LDFLAGS) $^ -o $@
 
-are2fa.brzozowski: are2fa.brzozowski.o Brzozowski.o AbstractREtoFAConverter.o
-	#$(LD) $(LDFLAGS) $^ -o $@
+are2fa.brzozowski: are2fa.brzozowski.o Brzozowski.o AbstractREtoFAConverter.o BrzozowskiDerivative.o ConversionException.o BrzozowskiDerivativeNormalize.o RegExpUtils.o
+	$(LD) $(LDFLAGS) $^ -o $@
 
 are2fa.thompson: are2fa.thompson.o Thompson.o AbstractREtoFAConverter.o AutomatonUtils.o ConversionException.o
 	$(LD) $(LDFLAGS) $^ -o $@
 
 
-are2fa.brzozowski.o: are2fa.brzozowski.cpp Brzozowski.h AbstractREtoFAConverter.h
+are2fa.brzozowski.o: are2fa.brzozowski.cpp Brzozowski.h BrzozowskiDerivative.h BrzozowskiDerivativeNormalize.h AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
 are2fa.glushkov.o: are2fa.glushkov.cpp Glushkov.h AbstractREtoFAConverter.h
@@ -22,12 +22,19 @@ are2fa.glushkov.o: are2fa.glushkov.cpp Glushkov.h AbstractREtoFAConverter.h
 are2fa.thompson.o: are2fa.thompson.cpp Thompson.h AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
+
 AbstractREtoFAConverter.o: AbstractREtoFAConverter.cpp AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
 Brzozowski.o: Brzozowski.cpp Brzozowski.h AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
+BrzozowskiDerivative.o: BrzozowskiDerivative.cpp BrzozowskiDerivative.h BrzozowskiDerivativeNormalize.h ../../utils/ConversionException.h ../../utils/RegExpUtils.h
+	$(CXX) $(CXXFLAGS) $< -o $@
+
+BrzozowskiDerivativeNormalize.o: BrzozowskiDerivativeNormalize.cpp BrzozowskiDerivativeNormalize.h ../../utils/ConversionException.h
+	$(CXX) $(CXXFLAGS) $< -o $@
+
 Glushkov.o: Glushkov.cpp Glushkov.h AbstractREtoFAConverter.h
 	$(CXX) $(CXXFLAGS) $< -o $@
 
diff --git a/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp b/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp
index e23912e8993bd74263e2fc89c3d2f97e036d4677..63efce4a2e25c420f7aef76dc2a6d70a80a3c0cb 100644
--- a/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp
+++ b/aconversions/src/conversions/re2fa/are2fa.brzozowski.cpp
@@ -25,7 +25,7 @@ int main(int argc, char** argv)
         RegExp re = RegExpParser::parse(tokens);
 
         Brzozowski conv( re );
-        conv.convert( ).toXML( cout );
+        conv.convert( );//.toXML( cout );
     }
     catch( AlibException & e )
     {
diff --git a/aconversions/src/utils/RegExpUtils.cpp b/aconversions/src/utils/RegExpUtils.cpp
index 6d7feab78c133c05d5b1fe5a3bb251c762f99d98..827a856c0528efc5199da2f0095b0d73c4be88f9 100644
--- a/aconversions/src/utils/RegExpUtils.cpp
+++ b/aconversions/src/utils/RegExpUtils.cpp
@@ -45,4 +45,32 @@ void RegExpUtils::traverseSymbols( RegExpElement * element, list<RegExpSymbol> &
     throw ConversionException( "Captain's log. Stardate 3413.6. Approaching TraverseUtils, class RegExpUtils planet. Encountered invalid RegExpElement. Sending away team to explore." );
 }
 
+bool RegExpUtils::containsEpsilon( RegExpElement * element )
+{
+    Alternation* alternation = dynamic_cast<Alternation*>( element );
+    Concatenation* concatenation = dynamic_cast<Concatenation*>( element );
+    Iteration* iteration = dynamic_cast<Iteration*>( element );
+    RegExpSymbol* symbol = dynamic_cast<RegExpSymbol*>( element );
+
+    if( alternation )
+    {
+        for( auto e : alternation->getElements( ) )
+            if( containsEpsilon( e ) )
+                return true;
+
+        return false;
+    }
+
+    if( concatenation )
+    {
+        for( auto e : concatenation->getElements( ) )
+            if( ! containsEpsilon( e ) )
+                return false;
+
+        return true;
+    }
+
+    return iteration || ( symbol && *symbol == RegExpSymbol( "" ) );
+}
+
 } /* namespace conversions */
diff --git a/aconversions/src/utils/RegExpUtils.h b/aconversions/src/utils/RegExpUtils.h
index e67b227bf32ea510aef76d6c66ad0757e86ed509..876af27945d6b399c8ac27cee4298a6db4c06eb1 100644
--- a/aconversions/src/utils/RegExpUtils.h
+++ b/aconversions/src/utils/RegExpUtils.h
@@ -18,6 +18,7 @@ class RegExpUtils
 {
 public:
     static std::list<regexp::RegExpSymbol> getRegExpSymbols( const regexp::RegExp & re );
+    static bool containsEpsilon( regexp::RegExpElement * element );
 
 private:
     static void traverseSymbols( regexp::RegExpElement * element, std::list<regexp::RegExpSymbol> & alphabet );