diff --git a/learnlib/RFSALearnAndCompare.java b/learnlib/RFSALearnAndCompare.java
index 97e1b5b57b17f9d9e97b1a0335b2f4c6e57344db..8e5931a956ea853946346503fb937e81291f1a25 100644
--- a/learnlib/RFSALearnAndCompare.java
+++ b/learnlib/RFSALearnAndCompare.java
@@ -14,6 +14,7 @@ public class RFSALearnAndCompare<I> {
 
     CompactNFA<I> target;
     Experiment<NFA<?,I>> experiment, experiment2;
+    CounterOracle<I, Boolean> mqOracle, mqOracle2;
 
     public RFSALearnAndCompare() {
 
@@ -31,11 +32,14 @@ public class RFSALearnAndCompare<I> {
     public void learn(int maxLength, int maxTests) {
         SimulatorOracle<I, Boolean> sul = new SimulatorOracle<>(target);
         SimulatorOracle<I, Boolean> sul2 = new MySimulatorOracle<>(target);
+
+        mqOracle = new CounterOracle<>(sul, "membership queries learning");
+        mqOracle2 = new CounterOracle<>(sul2, "membership queries learning");
         NLStarLearner<I> nlstar = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet
-                        .withOracle(sul) // membership oracle
+                        .withOracle(mqOracle) // membership oracle
                         .create();
         NLStarLearner<I> nlstar2 = new NLStarLearnerBuilder<I>().withAlphabet(target.getInputAlphabet()) // input alphabet
-                        .withOracle(sul2) // reverse membership oracle
+                        .withOracle(mqOracle2) // reverse membership oracle
                         .create();
         RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle = new RandomWordsEQOracle<>(sul, 0, maxLength, maxTests);
         RandomWordsEQOracle<NFA<?, I>, I, Boolean> eqOracle2 = new RandomWordsEQOracle<>(sul2, 0, maxLength, maxTests);
diff --git a/learnlib/TimbukParser.java b/learnlib/TimbukParser.java
index d9d968569b11a05295ee1f60b2b6c90db02d93e9..a69a36e335f758f10fb57f7d18d5c1053a324f55 100644
--- a/learnlib/TimbukParser.java
+++ b/learnlib/TimbukParser.java
@@ -1,4 +1,5 @@
 import com.google.common.collect.Lists;
+import net.automatalib.automata.fsa.NFA;
 import net.automatalib.automata.fsa.impl.compact.CompactNFA;
 import net.automatalib.util.automata.builders.FSABuilder;
 import net.automatalib.visualization.Visualization;
@@ -66,4 +67,25 @@ public class TimbukParser {
 
         return builder.create();
     }
+
+    public static void main(String[] args) throws IOException {
+        TimbukParser parser = new TimbukParser(Paths.get(args[0]));
+
+        CompactNFA<String> nfa = parser.createNFA();
+
+        RFSALearnAndCompare<String> learnAndCompare = new RFSALearnAndCompare<>();
+        learnAndCompare.setTarget(nfa);
+
+        int maxTests = (int) Math.pow(learnAndCompare.target.getStates().size()*learnAndCompare.target.getInputAlphabet().size(), 2)*10*3*2+250000; // FIXME or beter equivalence oracle
+        System.out.println(maxTests);
+        learnAndCompare.learn(3*learnAndCompare.target.getStates().size(), maxTests);
+
+        NFA<?, String> result = learnAndCompare.experiment.getFinalHypothesis();
+        NFA<?, String> result2 = learnAndCompare.experiment2.getFinalHypothesis();
+
+        Visualization.visualize(result, learnAndCompare.target.getInputAlphabet());
+        Visualization.visualize(result2, learnAndCompare.target.getInputAlphabet());
+
+        System.out.println(args[0] + "," + nfa.getStates().size() + "," + result.size() + "," + learnAndCompare.experiment.getRounds().getCount() + "," + learnAndCompare.mqOracle.getCounter().getCount() + "," + result2.size() + "," + learnAndCompare.experiment2.getRounds().getCount() + "," + learnAndCompare.mqOracle2.getCounter().getCount());
+    }
 }