diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e239a18f7c0d5db117b90e7527f04d7a306ab97c..3a335cafd120224211c6647012e46668ac618993 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -123,12 +123,6 @@ build:doc:
   script:
     - cd release
     - make CTEST_OUTPUT_ON_FAILURE=1 test
-      # temporary until make tests manages all tests
-    - mkdir bin
-    - cd bin
-    - find .. -type f \( -perm -u=x -o -perm -g=x -o -perm -o=x \) -exec test -x {} \; -print | grep -v 'CMakeFiles' | while read line; do ln -s $line $(basename $line); done
-    - cd ../..
-    - for test in $(ls tests.*.sh); do ./${test} release/bin $(grep -c processor /proc/cpuinfo) || exit 1; touch release/bin/log_tests.txt; cat release/bin/log_tests.txt; done
 
 .test:push: &test-push
   <<: *test
diff --git a/all-cmake-template.sh b/all-cmake-template.sh
index afb2754d476fad617a8fe1e9ffbfc884a6edc020..b9ffa3011133b7f4e0350607e4260e18d3fd4861 100755
--- a/all-cmake-template.sh
+++ b/all-cmake-template.sh
@@ -34,22 +34,4 @@ function build () {
 
 	make -j${THREADS} || exit 1
 	make test || exit 1
-
-	# todo: everything below should be handled by cmake's make test and make install
-	if [ ! -d bin ]; then
-		mkdir bin
-	fi
-
-	rm bin/*
-	cd bin
-	find .. -executable -type f | grep -v 'CMakeFiles' | while read line; do ln -s $line $(basename $line); done
-
-	cp ${DIRECTORY}/translateAddresses .
-	cp ${DIRECTORY}/xmlFormat .
-
-	cd ${DIRECTORY}
-
-	for test in $(ls tests.*.sh); do \
-		./${test} ${BUILD_DIR}/bin ${THREADS}; \
-	done
 }
diff --git a/bash_multithread.sh b/bash_multithread.sh
deleted file mode 100755
index 6006b95b1c0f885b83d1d00cb10ddf6ae4673927..0000000000000000000000000000000000000000
--- a/bash_multithread.sh
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/bash
-
-# slightly modified implementation of sub-process limiter
-# by paxdiablo. See http://stackoverflow.com/a/1685440
-
-# bgxupdate - update active processes in a group.
-#   Works by transferring each process to new group
-#   if it is still active.
-# in:  bgxgrp - current group of processes.
-# out: bgxgrp - new group of processes.
-# out: bgxcount - number of processes in new group.
-
-bgxupdate() {
-    bgxoldgrp=${bgxgrp}
-    bgxgrp=""
-    ((bgxcount = 0))
-    bgxjobs=" $(jobs -pr | tr '\n' ' ')"
-    for bgxpid in ${bgxoldgrp} ; do
-        echo "${bgxjobs}" | grep " ${bgxpid} " >/dev/null 2>&1
-        if [[ $? -eq 0 ]] ; then
-            bgxgrp="${bgxgrp} ${bgxpid}"
-            ((bgxcount = bgxcount + 1))
-        fi
-    done
-}
-
-# bgxlimit - start a sub-process with a limit.
-#   Loops, calling bgxupdate until there is a free
-#   slot to run another sub-process. Then runs it
-#   an updates the process group.
-# in:  $1     - the limit on processes.
-# in:  $2+    - the command to run for new process.
-# in:  bgxgrp - the current group of processes.
-# out: bgxgrp - new group of processes
-
-bgxlimit() {
-    bgxmax=$1 ; shift
-    bgxupdate
-    while [[ ${bgxcount} -ge ${bgxmax} ]] ; do
-        sleep 0.1
-        bgxupdate
-    done
-    if [[ "$1" != "-" ]] ; then
-        "$@" &
-        bgxgrp="${bgxgrp} $!"
-    fi
-    # echo '[' ${bgxgrp} ']'
-}
-
-# bgxwait - wait for sub-processes to finish
-#   Loops calling bgxupdate until there is something
-#   in a process group
-
-bgxwait() {
-    bgxupdate
-    while [[ ${bgxcount} -ne 0 ]] ; do
-        oldcount=${bgxcount}
-        while [[ ${oldcount} -eq ${bgxcount} ]] ; do
-            sleep 0.1
-            bgxupdate
-        done
-        # echo '[' ${bgxgrp} ']'
-    done
-}
-
-bgxtest() {
-    callback() {
-        id=$1 ; shift
-        echo start $id $(date | awk '{print $4}') "$BASHPID"
-        sleep ${id}0
-        echo end $id $(date | awk '{print $4}') "$BASHPID"
-    }
-
-    # Test program, create group and run 6 sleeps with
-    #   limit of 3.
-
-    bgxgrp=""
-    for i in 1 2 3 4 5 6 ; do
-        bgxlimit 3 callback ${i}
-    done
-
-    # Wait until all others are finished.
-    bgxwait;
-}
diff --git a/examples2/rte/gen_rte1.py b/examples2/rte/gen_rte1.py
deleted file mode 100755
index 6bad1a75cfbf59ce6fa26a896001ab8a300085cc..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte1.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-def SCont(depth):
-    if depth > MAXD or random.randint(0,1) == 0:
-        return
-
-
-    p('d 1 ')
-    p('a 2 ')
-    SCont(depth + 1)
-    if depth > MAXD or random.randint(0,1) == 0:
-        p('b 0 ')
-    else:
-        p('c 0 ')
-
-
-def S(depth):
-    SCont(depth + 1)
-
-    if depth > MAXD or random.randint(0,1) == 0:
-        p('b 0 ')
-    else:
-        p('c 0 ')
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/examples2/rte/gen_rte2.py b/examples2/rte/gen_rte2.py
deleted file mode 100755
index ed239867b9a19ecb3c9c90b5a1ccaf1b4faedb16..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte2.py
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-
-    p('a 2 ')
-    p('b 0 ')
-    p('b 0 ')
diff --git a/examples2/rte/gen_rte3.py b/examples2/rte/gen_rte3.py
deleted file mode 100755
index 66687753a477341e3873ba4fb3745ac673288f7c..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte3.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-def S(depth):
-    if depth > MAXD or random.randint(0,1) == 0:
-        p('b 0 ')
-        return
-
-    p('a 2 ')
-    S(depth + 1)
-    S(depth + 1)
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/examples2/rte/gen_rte4.py b/examples2/rte/gen_rte4.py
deleted file mode 100755
index 7b0140bb6a11bbc1cd874b77bf423e08711a18bb..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte4.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-def S(depth):
-    if depth > MAXD or random.randint(0,1) == 0:
-        p('a 2 ')
-        p('b 0 ')
-        p('b 0 ')
-        return
-
-    p('a 2 ')
-    S(depth + 1)
-    S(depth + 1)
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/examples2/rte/gen_rte5.py b/examples2/rte/gen_rte5.py
deleted file mode 100755
index 9e4ed0aba6da3126c54acd91e733f0f349690297..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte5.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-
-    p('a 0 ')
diff --git a/examples2/rte/gen_rte6.py b/examples2/rte/gen_rte6.py
deleted file mode 100755
index 61027b1d50373e2eecfb07720ad90b195cab47db..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte6.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-def SL(depth):
-    rand = random.randint(0,1)
-    if depth > MAXD or rand == 0:
-        p('b 0 ')
-    elif rand == 1:
-        S(depth + 1)
-
-
-def SR(depth):
-    rand = random.randint(0,1)
-    if depth > MAXD or rand == 0:
-        p('c 0 ')
-    elif rand == 1:
-        S(depth + 1)
-
-
-def S(depth):
-    p('a 2 ')
-    SL(depth + 1)
-    SR(depth + 1)
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/examples2/rte/gen_rte7.py b/examples2/rte/gen_rte7.py
deleted file mode 100755
index 4561cafb3a2d054efa524a99835ff1ba5b641020..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte7.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-def SCont(depth):
-    if depth > MAXD or random.randint(0,2) == 0:
-        return
-
-    p('d 1 ')
-    SCont(depth + 1)
-
-
-def S(depth):
-    SCont(depth + 1)
-    p('a 2 ')
-    p('c 0 ')
-    p('b 0 ')
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/examples2/rte/gen_rte8.py b/examples2/rte/gen_rte8.py
deleted file mode 100755
index 7dc7ae2a233c7aea79569b6907efcf5a4cd996bc..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte8.py
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-def S(depth):
-    if depth > MAXD or random.randint(0,1) == 0:
-        rand = random.randint(0,3)
-
-        if rand == 0: p('b 0 ')
-        elif rand == 1: p('c 0 ')
-        elif rand == 2: p('d 0 ')
-        elif rand == 3: p('e 0 ')
-        return
-
-    p('a 2 ')
-    S(depth + 1)
-    S(depth + 1)
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/examples2/rte/gen_rte9.py b/examples2/rte/gen_rte9.py
deleted file mode 100755
index d198c2eac0612675f96b097f63c70a926d98c5d5..0000000000000000000000000000000000000000
--- a/examples2/rte/gen_rte9.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env python3
-import random
-import sys
-
-MAXD = 200
-MAXL = 1000
-L = 0
-
-def p(c):
-    print(c, end='')
-    global L
-    L = L + 1
-
-    if L > MAXL:
-        L = 0
-        print ("\n", end='')
-
-
-def S(depth):
-    if depth > MAXD or random.randint(0,1) == 0:
-        p('b 0 ')
-    else:
-        p('a 2 ')
-        S(depth + 1)
-        S(depth + 1)
-
-if __name__ == '__main__':
-    p('RANKED_TREE ')
-    S(1)
diff --git a/tests.aarbology.sh b/tests.aarbology.sh
deleted file mode 100755
index 1a6387563c74d3dd245f725740d8762c02a7be68..0000000000000000000000000000000000000000
--- a/tests.aarbology.sh
+++ /dev/null
@@ -1,463 +0,0 @@
-#!/usr/bin/env bash
-
-source bash_multithread.sh
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_ITERATIONS=100
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-RAND_SIZE_SUBJECT=1000
-RAND_SIZE_PATTERN=4
-RAND_HEIGHT_SUBJECT=25
-RAND_HEIGHT_PATTERN=2
-RAND_ALPHABET=2
-
-EXECUTABLES="arand2 atrim2 adeterminize2 anormalize2 "
-TESTS_DIR="`pwd`/examples2/tree"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-MATCHES=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "subject:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "pattern:" >> $LOGFILE
-	cat  "$4" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$5" >> $LOGFILE
-}
-
-function generateNonlinearPatternSingle {
-	./arand2 -t RNP --nodes $RAND_SIZE_PATTERN --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) --height $RAND_HEIGHT_PATTERN --single_nonlinear_variable 2>/dev/null
-}
-
-function generateNonlinearPattern {
-	./arand2 -t RNP --nodes $RAND_SIZE_PATTERN --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) --height $RAND_HEIGHT_PATTERN 2>/dev/null
-}
-
-function generatePattern {
-	./arand2 -t RP --nodes $RAND_SIZE_PATTERN --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) --height $RAND_HEIGHT_PATTERN 2>/dev/null
-}
-
-function generateSubtree {
-	./arand2 -t RT --nodes $RAND_SIZE_PATTERN --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) --height $RAND_HEIGHT_PATTERN 2>/dev/null
-}
-
-function generateSubject {
-	./arand2 -t RT --nodes $RAND_SIZE_SUBJECT --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) --height $RAND_HEIGHT_SUBJECT --rank 2 2>/dev/null
-}
-
-# $1 = command to compute expected number of occurrences
-# $2 = command to test
-# $3 = subject
-# $4 = pattern
-function runTest2 {
-	OUT1=`bash -c "SUBJECT_FILE=\"$3\"; PATTERN_FILE=\"$4\"; $1"`
-	OUT2=`timeout $TESTCASE_TIMEOUT bash -c "SUBJECT_FILE=\"$3\"; PATTERN_FILE=\"$4\"; $2"`
-	RET=$?
-	if [ $RET == 0 ]; then # ok
-		OUT=`test $OUT1 -eq $OUT2`
-	fi
-	RET2=$?
-
-	if [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
-		log "$2" $RET "$3" "$4" "$OUT1:$OUT2:$OUT"
-	fi
-
-	rm $3
-	rm $4
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		echo -n "+$OUT2" >> $MATCHES
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-	MATCHES=$(mktemp)
-	echo -n "0" > $MATCHES
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-	rm $MATCHES
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-	echo "" >> $MATCHES
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN), "MATCHES:" $(bc < $MATCHES)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTestSubtree {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	Occs="./aarbology2 -a exactSubtreeMatch -s \"\$SUBJECT_FILE\" -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-
-	# predefined tests first
-	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
-		PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.subtree.xml
-		if [ -f $PATTERN_FILE ]; then
-			SUBJECT_FILE_COPY=$(mktemp)
-			PATTERN_FILE_COPY=$(mktemp)
-
-			cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
-			cat $PATTERN_FILE > $PATTERN_FILE_COPY
-
-			bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
-		fi
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generateSubtree) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-# $1 - aconversions2 sequence
-function runTestPattern {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	Occs="./aarbology2 -a exactPatternMatch -s \"\$SUBJECT_FILE\" -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-
-	# predefined tests first
-	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
-		PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml
-		if [ -f $PATTERN_FILE ]; then
-			SUBJECT_FILE_COPY=$(mktemp)
-			PATTERN_FILE_COPY=$(mktemp)
-
-			cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
-			cat $PATTERN_FILE > $PATTERN_FILE_COPY
-
-			bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
-		fi
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generatePattern) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-# $1 - aconversions2 sequence
-function runTestNonlinearPattern {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	Occs="./aarbology2 -a exactPatternMatch -s \"\$SUBJECT_FILE\" -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-
-	# predefined tests first
-	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
-		PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.nonlinear.pattern.xml
-		if [ -f $PATTERN_FILE ]; then
-			SUBJECT_FILE_COPY=$(mktemp)
-			PATTERN_FILE_COPY=$(mktemp)
-
-			cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
-			cat $PATTERN_FILE > $PATTERN_FILE_COPY
-
-			bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
-		fi
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generateNonlinearPattern) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-# $1 - aconversions2 sequence
-function runTestPatternEnds {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	Occs="./aarbology2 -e -a exactPatternMatch -s <(./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <(./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-	# predefined tests first
-	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
-		PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml
-		if [ -f $PATTERN_FILE ]; then
-			SUBJECT_FILE_COPY=$(mktemp)
-			PATTERN_FILE_COPY=$(mktemp)
-
-			cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
-			cat $PATTERN_FILE > $PATTERN_FILE_COPY
-
-			bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
-		fi
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generatePattern) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-# $1 - aconversions2 sequence
-function runTestNonlinearPatternEnds {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	Occs="./aarbology2 -e -a exactPatternMatch -s <(./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <(./acast2 -t PrefixRankedNonlinearPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-	# predefined tests first
-	for SUBJECT_FILE in `ls $TESTS_DIR/aarbology.test*.subject.xml`; do
-		PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.nonlinear.pattern.xml
-		if [ -f $PATTERN_FILE ]; then
-			SUBJECT_FILE_COPY=$(mktemp)
-			PATTERN_FILE_COPY=$(mktemp)
-
-			cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
-			cat $PATTERN_FILE > $PATTERN_FILE_COPY
-
-			bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
-		fi
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generateNonlinearPatternSingle) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-runTestNonlinearPattern "Exact Nonlinear Pattern Matching Using Compressed Bit Vectors (PrefixRankedBar)" "./aarbology2 -a nonlinearCompressedBitParallelIndex -s <(./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q nonlinearCompressedBitParallelismPatterns -i - -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestNonlinearPattern "Exact Nonlinear Pattern Matching Using Full And Linear Index (PrefixRanked)" "./aarbology2 -a nonlinearFullAndLinearIndex -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q nonlinearFullAndLinearIndexPatterns -i - -p <( ./acast2 -t PrefixRankedNonlinearPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestNonlinearPattern "Exact Nonlinear Pattern Matching Using Full And Linear Index (PrefixRankedBar)" "./aarbology2 -a nonlinearFullAndLinearIndex -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q nonlinearFullAndLinearIndexPatterns -i - -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestPattern "Exact Pattern Matching Using Full And Linear Index (PrefixRankedBar)" "./aarbology2 -a fullAndLinearIndex -s <(./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q fullAndLinearIndexPatterns -i - -p <( ./acast2 -t PrefixRankedBarPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestPattern "Exact Pattern Matching Using Full And Linear Index (PrefixRanked)" "./aarbology2 -a fullAndLinearIndex -s <(./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q fullAndLinearIndexPatterns -i - -p <( ./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestPattern "Exact Pattern Matching Using Compressed Bit Vectors (PrefixRankedBar)" "./aarbology2 -a compressedBitParallelIndex -s <(./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q compressedBitParallelismPatterns -i - -p <( ./acast2 -t PrefixRankedBarPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestPatternEnds "Exact Pattern Matching Using Compressed Bit Vectors (PrefixRanked)" "./aarbology2 -a compressedBitParallelIndex -s <(./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) | ./aquery2 -q compressedBitParallelismPatterns -i - -p <( ./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-
-runTestPatternEnds "Exact Pattern Matching Automaton (PrefixRanked)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <( ./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
-
-RAND_SIZE_SUBJECT=120
-runTestPatternEnds "Exact Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -o get -i \"\$PATTERN_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
-
-RAND_SIZE_SUBJECT=80
-runTestNonlinearPatternEnds "Exact Nonlinear Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactNonlinearTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -o get -i \"\$PATTERN_FILE\" ) -n <( ./aaccess2 --tree nonlinear_variables -o get -i \"\$PATTERN_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedNonlinearPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) -f <(echo '<Set />') | ./aql2 -q 'execute < :pair_set #stdin | dataAccess::PairSetFirst - >#stdout' | ./astat2 -p size"
-
-runTestNonlinearPattern "Exact Nonlinear Tree Pattern Automaton (PrefixRankedBar)" "./aarbology2 -a exactNonlinearTreePatternAutomaton -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -o get -i \"\$PATTERN_FILE\" ) -n <( ./aaccess2 --tree nonlinear_variables -o get -i \"\$PATTERN_FILE\" ) -b <( ./aaccess2 --tree variables_bar -o get -i <(./acast2 -t PrefixRankedBarNonlinearPattern -i \"\$PATTERN_FILE\" ) ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedBarNonlinearPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) -f <(echo '<Set />') | ./aql2 -q 'execute < :pair_set #stdin | dataAccess::PairSetFirst - >#stdout' | ./astat2 -p size"
-
-RAND_SIZE_SUBJECT=1000
-runTestSubtree "Exact Boyer Moore Horspool (Subtree PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarTree -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestSubtree "Exact Subtree Automaton (Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactSubtreeMatchingAutomaton -p \"\$PATTERN_FILE\" | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTestSubtree "Exact Minimized Subtree Automaton (Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactSubtreeMatchingAutomaton -p \"\$PATTERN_FILE\" | ./adeterminize2 | ./atrim2 -r -u | ./aminimize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
-
-runTestPattern "Exact Boyer Moore Horspool (Pattern PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Pattern Match (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a exactPatternMatch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Boyer Moore Horspool (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a boyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Reversed Boyer Moore Horspool (Pattern PrefixRankedBar)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Reversed Boyer Moore Horspool (Pattern PrefixRanked)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Reversed Boyer Moore Horspool (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Reversed Boyer Moore Horspool (NonlinearPattern PrefixRanked)" "./aarbology2 -a reversedBoyerMooreHorspool -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Quick Search (Pattern PrefixRankedBar)" "./aarbology2 -a quickSearch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Quick Search (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a quickSearch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Reversed Quick Search (Pattern PrefixRankedBar)" "./aarbology2 -a reversedQuickSearch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Reversed Quick Search (NonlinearPattern PrefixRankedBar)" "./aarbology2 -a reversedQuickSearch -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Reversed Quick Search (Pattern PrefixRanked)" "./aarbology2 -a reversedQuickSearch -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestNonlinearPattern "Exact Reversed Quick Search (NonlinearPattern PrefixRanked)" "./aarbology2 -a reversedQuickSearch -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedNonlinearPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Knuth Morris Pratt (Pattern PrefixRankedBar)" "./aarbology2 -a knuthMorrisPratt -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-runTestPattern "Exact Knuth Morris Pratt (Pattern PrefixRanked)" "./aarbology2 -a knuthMorrisPratt -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" ) | ./astat2 -p size"
-runTestPattern "Exact Dead Zone Using Bad Character Shift And Border Array (Pattern PrefixRanked)" "./aarbology2 -a deadZoneUsingBadCharacterShiftAndBorderArray -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-runTestPattern "Exact Dead Zone Using Bad Character Shift And Border Array (Pattern PrefixRankedBar)" "./aarbology2 -a deadZoneUsingBadCharacterShiftAndBorderArray -s <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" ) -p <( ./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"
-
-runTestPattern "Exact Pattern Matching Automaton (Pattern Tree)" "./arun2 -t occurrences -a <(./aarbology2 -a exactPatternMatchingAutomaton -p <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\")) | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTestPattern "Exact Pattern Matching Automaton (PrefixRankedBar)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedBarPattern -i <(./aaccess2 --tree alphabet -o add -i \"\$PATTERN_FILE\" -c <( ./aaccess2 --tree alphabet -o get -i \"\$SUBJECT_FILE\" ) ) ) | ./adeterminize2 | ./arun2 -t occurrences -a - -i <( ./acast2 -t PrefixRankedBarTree -i \"\$SUBJECT_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
-
-
diff --git a/tests.aconversion.sh b/tests.aconversion.sh
deleted file mode 100755
index 29a722962f90d96ba206a066199e998caaf822ff..0000000000000000000000000000000000000000
--- a/tests.aconversion.sh
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/env bash
-
-source bash_multithread.sh
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_ITERATIONS=100
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-RAND_STATES=18
-RAND_DENSITY="2.5"
-RAND_ALPHABET=4
-
-EXECUTABLES="arand2 aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aconversions2"
-TESTS_DIR="`pwd`/examples2/automaton"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "input automaton:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$4" >> $LOGFILE
-}
-
-function generateNFA {
-	./arand2 -t FSM --density $RAND_DENSITY --states $(( $RANDOM % $RAND_STATES + 1 )) --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) 2>/dev/null
-}
-
-# $1 = command for conversion. Output of such command must be (eps-)NFA !!
-# $2 = automaton
-function runTest2 {
-	MDFA="./aql2 -q 'execute automaton::simplify::efficient::EpsilonRemoverIncoming <#stdin | automaton::determinize::Determinize - | automaton::simplify::Trim - | automaton::simplify::Minimize - | automaton::simplify::Normalize - >#stdout'"
-
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "./acompare2 <(cat $2 | $1 | $MDFA ) <(cat $2 | $MDFA)"`
-	RET=$?
-
-	if [ $RET != 0 ]; then # fail
-		log "$1" $RET "$2" "$OUT"
-	fi
-
-	rm $2
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTest {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	# predefined tests first
-	for FILE in `ls $TESTS_DIR/aconversion.test*`; do
-		FILE_COPY=$(mktemp)
-
-		cat $FILE > $FILE_COPY
-
-		bgxlimit ${JOBS} runTest2 "$1" "$FILE_COPY"
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		NFA_FILE=$(mktemp)
-
-		cat <(generateNFA) > $NFA_FILE
-
-		bgxlimit ${JOBS} runTest2 "$1" "$NFA_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-# FA -> RG -> FA
-# covers: FA -> LRG, FA -> RRG, RRG <-> LRG, RRG -> FA, LRG -> FA
-runTest "./aconversions2 -t rg -a outgoing  | ./anormalize2 --form leftRG  | ./aconversions2 -t fa"
-runTest "./aconversions2 -t rg -a incoming | ./anormalize2 --form rightRG | ./aconversions2 -t fa"
-
-# FA -> RE -> FA
-# covers: FA -> RE (Brzozowski algebraic, elimination), RE -> FA (Brzozowski derivation, Thompson, Glushkov)
-runTest "./aconversions2 -t re -a algebraic   | ./aconversions2 -t fa -a brzozowski"
-runTest "./aconversions2 -t re -a algebraic   | ./aconversions2 -t fa -a thompson"
-runTest "./aconversions2 -t re -a algebraic   | ./aconversions2 -t fa -a glushkov"
-runTest "./aconversions2 -t re -a elimination | ./aconversions2 -t fa -a brzozowski"
-runTest "./aconversions2 -t re -a elimination | ./aconversions2 -t fa -a thompson"
-runTest "./aconversions2 -t re -a elimination | ./aconversions2 -t fa -a glushkov"
-
-# FA -> RE -> RRG -> LRG -> FA
-# covers: FA -> RE (Brz. algebraic, elimination), RE -> RRG ( Brz. derivation, Glushkov), RRG -> LRG, LRG -> FA
-runTest "./aconversions2 -t re -a algebraic   | ./aconversions2 -t rg -a brzozowski | ./anormalize2 --form leftRG | ./aconversions2 -t fa"
-runTest "./aconversions2 -t re -a algebraic   | ./aconversions2 -t rg -a glushkov   | ./anormalize2 --form leftRG | ./aconversions2 -t fa"
-runTest "./aconversions2 -t re -a elimination | ./aconversions2 -t rg -a brzozowski | ./anormalize2 --form leftRG | ./aconversions2 -t fa"
-runTest "./aconversions2 -t re -a elimination | ./aconversions2 -t rg -a glushkov   | ./anormalize2 --form leftRG | ./aconversions2 -t fa"
-
-# FA -> RRG -> RE -> FA
-# covers: FA -> RRG, FA -> LRG, RRG -> RE, LRG -> RE, RE -> FA (Brz. derivation, Thompson, Glushkov)
-runTest "./aconversions2 -t rg -a outgoing  | ./aconversions2 -t re | ./aconversions2 -t fa -a brzozowski"
-runTest "./aconversions2 -t rg -a incoming | ./aconversions2 -t re | ./aconversions2 -t fa -a brzozowski"
-runTest "./aconversions2 -t rg -a outgoing  | ./aconversions2 -t re | ./aconversions2 -t fa -a thompson"
-runTest "./aconversions2 -t rg -a incoming | ./aconversions2 -t re | ./aconversions2 -t fa -a thompson"
-runTest "./aconversions2 -t rg -a outgoing  | ./aconversions2 -t re | ./aconversions2 -t fa -a glushkov"
-runTest "./aconversions2 -t rg -a incoming | ./aconversions2 -t re | ./aconversions2 -t fa -a glushkov"
diff --git a/tests.aconvert.sh b/tests.aconvert.sh
deleted file mode 100755
index 704b4ae99a6593a1ce0ae0b0b275dc0d29c5de78..0000000000000000000000000000000000000000
--- a/tests.aconvert.sh
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-EXECUTABLES="aconvert2"
-TESTS_DIR="`pwd`/examples2"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "input automaton:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$4" >> $LOGFILE
-}
-
-# $1 = command for conversion. Output of such command must be (eps-)NFA !!
-# $2 = automaton
-function runTest2 {
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "cat $2 | ./aconvert2 --$1_from_string "`
-	RET=$?
-
-	if [ $RET == 0 ]; then # ok
-		return 0
-	fi
-
-	log "$1" $RET "$2" "$OUT"
-
-	if [ $RET == 124 ]; then # timeout
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		return 3
-	else
-		return 1
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTest {
-	echo $1 \(./aconvert2 --$1_from_string\)
-	echo -ne "\t"
-
-	initResults
-
-	# predefined tests first
-	for FILE in `ls $TESTS_DIR/$1/*.txt`; do
-		runTest2 "$1" "$FILE"
-		registerResult $?
-	done
-
-	outputResults
-	clearResults
-}
-
-runTest "automaton"
-runTest "grammar"
diff --git a/tests.aderivation.aintegral.sh b/tests.aderivation.aintegral.sh
deleted file mode 100755
index 190e4b8c55c8f476a185168a4c855c130a92c4d9..0000000000000000000000000000000000000000
--- a/tests.aderivation.aintegral.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-set -o pipefail
-
-EXECUTABLES="aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aderivation2 aintegral2 aconversions2"
-TESTS_DIR="`pwd`/examples2/regexp"
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-
-# ----------------------------
-
-function regexpToMDFA {
-	echo "$1" | ./aconversions2 -t fa | ./aepsilon2 | ./atrim2 | ./adeterminize2 | ./aminimize2 | ./anormalize2 --labels automaton
-}
-
-function compareRegexp {
-	# relies on ret code by adiff.automaton
-	./acompare2 <(regexpToMDFA "$1") <(regexpToMDFA "$2") > /dev/null
-	return $?
-}
-
-
-# $1 - input regexp
-# $2 - output regexp
-function runTest {
-	compareRegexp "$1" "$2"
-
-	TEST_EXITVALUE=$?
-
-	if [ $TEST_EXITVALUE == 0 ]; then
-		echo -n "."
-	elif [ $TEST_EXITVALUE == 1 ]; then
-		echo -n "x"
-	elif [ $TEST_EXITVALUE == 2 ]; then
-		echo -n "T"
-	elif [ $TEST_EXITVALUE == 3 ]; then
-		echo -n "F"
-	else
-		echo -n "?"
-	fi
-
-}
-
-function runTestD {
-	 FILE_REGEXP_ORIG="$1"
-	 FILE_REGEXP_RESULT="$2"
-	 shift 2
-
-	 REGEXP_DERIVATIVE=$(./aconvert2 --string_from_string <<< "$1" | ./aderivation2 -r $TESTS_DIR/$FILE_REGEXP_ORIG -s - )
-	 REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT)
-	 runTest "$REGEXP_DERIVATIVE" "$REGEXP_RESULT"
-}
-
-function runTestI {
-	 FILE_REGEXP_ORIG="$1"
-	 FILE_REGEXP_RESULT="$2"
-	 shift 2
-
-	 REGEXP_INTEGRAL=$(./aconvert2 --string_from_string <<< "$1" | ./aintegral2 -r $TESTS_DIR/$FILE_REGEXP_ORIG -s - )
-	 REGEXP_RESULT=$(cat $TESTS_DIR/$FILE_REGEXP_RESULT)
-
-	 runTest "$REGEXP_INTEGRAL" "$REGEXP_RESULT"
-}
-
-
-# derivatives
-echo "Derivatives"
-runTestD "unbounded.oppa.4.13.xml" "unbounded.oppa.4.13.d0.xml" "\"0\""
-runTestD "unbounded.oppa.4.13.xml" "unbounded.oppa.4.13.d00.xml" "\"0 0\""
-runTestD "unbounded.oppa.4.14.xml" "unbounded.oppa.4.14.d1.xml" "\"1\""
-runTestD "unbounded.oppa.4.14.xml" "unbounded.oppa.4.14.d10.xml" "\"1 0\""
-runTestD "unbounded.oppa.4.15.xml" "unbounded.oppa.4.15.d100.xml" "\"1 0 0\""
-
-# integrals 
-echo ""
-echo "Integrals"
-runTestI "unbounded.oppa.4.16.xml" "unbounded.oppa.4.16.i1.xml" "\"1\""
-runTestI "Melichar2-94.xml" "Melichar2-94.i0.xml" "\"0\""
-runTestI "Melichar2-94.xml" "Melichar2-94.i1.xml" "\"1\""
-
-echo ""
diff --git a/tests.adeterminize.sh b/tests.adeterminize.sh
deleted file mode 100755
index 24542df3aa8eb23a047b67b4b7bdbdc4d3487578..0000000000000000000000000000000000000000
--- a/tests.adeterminize.sh
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-EXECUTABLES="aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2"
-TESTS_DIR="`pwd`/examples2/automaton"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "input automaton:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$4" >> $LOGFILE
-}
-
-# $1 = what is beeing done (name)
-# $2 = command for conversion. Output of such command must be (eps-)NFA !!
-# $3 = automaton
-# $4 = automaton to compare with
-function runTest2 {
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "./acompare2 <(cat $3 | $2 ) $4"`
-	RET=$?
-
-	if [ $RET == 0 ]; then # ok
-		return 0
-	fi
-
-	log "$1" $RET "$3" "$OUT"
-
-	if [ $RET == 124 ]; then # timeout
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		return 3
-	else
-		return 1
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTest {
-	echo $1 \($2\)
-	echo -ne "\t"
-
-	initResults
-
-	# predefined tests first
-	for FILE in `ls $TESTS_DIR/$1*.xml | grep -v DET`; do
-		DET_FILE=${FILE%.xml}.DET.xml
-		if [ -f ${DET_FILE} ]; then
-			runTest2 $1 "$2" "$FILE" "$DET_FILE"
-			registerResult $?
-		fi
-	done
-
-	outputResults
-	clearResults
-}
-
-runTest "NFSM" "./adeterminize2 | ./atrim2"
-runTest "ENFSM" "./aepsilon2 | ./adeterminize2"
-runTest "NIDPDA" "./adeterminize2"
-runTest "NPDA" "./adeterminize2 | ./anormalize2 --labels automaton"
-runTest "NVPA" "./adeterminize2"
-runTest "RHDPDA" "./adeterminize2"
-runTest "NFTA" "./adeterminize2"
diff --git a/tests.anormalize.sh b/tests.anormalize.sh
deleted file mode 100755
index 47e327f742ed845168c783fc4bf89efe51e77cb6..0000000000000000000000000000000000000000
--- a/tests.anormalize.sh
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/usr/bin/env bash
-
-source bash_multithread.sh
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_ITERATIONS=100
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-RAND_NONTERMINALS=2
-RAND_DENSITY="50"
-RAND_TERMINALS=4
-STRING_LENGHTS=6
-
-EXECUTABLES="arand2 atrim2 anormalize2 agenerate2 aepsilon2"
-TESTS_DIR="`pwd`/examples2/grammar"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "input automaton:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$4" >> $LOGFILE
-}
-
-function generateCFG {
-	./arand2 -t CFG --density $RAND_DENSITY --nonterminals $(( $RANDOM % $RAND_NONTERMINALS + 1 )) --terminals $(( $RANDOM % $RAND_TERMINALS + 1 )) 2>/dev/null | ./aepsilon2 | ./aql2 -q "execute grammar::simplify::SimpleRulesRemover < #stdin > #stdout"
-}
-
-# $1 = command for conversion. Output of such command must be a grammar !!
-# $2 = original grammar
-function runTest2 {
-	GENERATED_STRINGS="./agenerate2 -t upTo --upto $STRING_LENGHTS | ./aecho2 -n"
-
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff <(cat $2 | $1 | $GENERATED_STRINGS ) <(cat $2 | $GENERATED_STRINGS)"`
-	RET=$?
-
-	if [ $RET != 0 ]; then # fail
-		log "$1" $RET "$2" "$OUT"
-	fi
-
-	rm $2
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTest {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	# predefined tests first
-	for FILE in `ls $TESTS_DIR/anormalization.test*`; do
-		FILE_COPY=$(mktemp)
-
-		cat $FILE > $FILE_COPY
-
-		bgxlimit ${JOBS} runTest2 "$1" "$FILE_COPY"
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		CFG_FILE=$(mktemp)
-
-		cat <(generateCFG) > $CFG_FILE
-
-		bgxlimit ${JOBS} runTest2 "$1" "$CFG_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-# Chomsky normal form and Greibach normal form
-runTest "./anormalize2 -f GNF"
-runTest "./anormalize2 -f CNF"
diff --git a/tests.astringology.sh b/tests.astringology.sh
deleted file mode 100755
index 741826059a558704de67223eb02e475a2383d802..0000000000000000000000000000000000000000
--- a/tests.astringology.sh
+++ /dev/null
@@ -1,269 +0,0 @@
-#!/usr/bin/env bash
-
-source bash_multithread.sh
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_ITERATIONS=100
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-RAND_SIZE_SUBJECT=100
-RAND_SIZE_PATTERN=4
-RAND_ALPHABET=4
-
-EXECUTABLES="arand2 atrim2 adeterminize2 anormalize2 "
-TESTS_DIR="`pwd`/examples2/string"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-MATCHES=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "subject:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "pattern:" >> $LOGFILE
-	cat  "$4" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$5" >> $LOGFILE
-}
-
-function generatePattern {
-	./arand2 -t ST --length $RAND_SIZE_PATTERN --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) 2>/dev/null | ./anormalize2 -a string
-}
-
-function generateSubject {
-	./arand2 -t ST --length $RAND_SIZE_SUBJECT --terminals $(( $RANDOM % $RAND_ALPHABET + 1 )) 2>/dev/null | ./anormalize2 -a string
-}
-
-# $1 = command to compute expected number of occurrences
-# $2 = command to test
-# $3 = subject
-# $4 = pattern
-function runTest2 {
-	OUT1=`bash -c "SUBJECT_FILE=\"$3\"; PATTERN_FILE=\"$4\"; $1"`
-	OUT2=`timeout $TESTCASE_TIMEOUT bash -c "SUBJECT_FILE=\"$3\"; PATTERN_FILE=\"$4\"; $2"`
-	RET=$?
-	if [ $RET == 0 ]; then # ok
-		OUT=`test $OUT1 -eq $OUT2`
-	fi
-	RET2=$?
-
-	if [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
-		log "$2" $RET "$3" "$4" "$OUT1:$OUT2:$OUT"
-	fi
-
-	rm $3
-	rm $4
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ] || [ $RET2 != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		echo -n "+$OUT2" >> $MATCHES
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-	MATCHES=$(mktemp)
-	echo -n "0" > $MATCHES
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-	rm $MATCHES
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-	echo "" >> $MATCHES
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN), "MATCHES:" $(bc < $MATCHES)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTest {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	Occs="./astringology2 -a exactFactorMatch -s \"\$SUBJECT_FILE\" -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-
-	# predefined tests first
-	for SUBJECT_FILE in `ls $TESTS_DIR/astringology.test*.subject.xml`; do
-		PATTERN_FILE=${SUBJECT_FILE%.subject.xml}.pattern.xml
-		if [ -f $PATTERN_FILE ]; then
-			SUBJECT_FILE_COPY=$(mktemp)
-			PATTERN_FILE_COPY=$(mktemp)
-
-			cat $SUBJECT_FILE > $SUBJECT_FILE_COPY
-			cat $PATTERN_FILE > $PATTERN_FILE_COPY
-
-			bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE_COPY" "$PATTERN_FILE_COPY"
-		fi
-	done
-
-	bgxwait
-
-	echo -n " | "
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generatePattern) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$Occs" "$2" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-
-# $1 - aconversions2 sequence
-# $2 - first tested entity
-# $3 - second tested entity
-function runTestAgainst {
-	echo $1
-	echo -ne "\t"
-
-	initResults
-	bgxgrp=""
-
-	# random tests
-	for i in $(seq 1 $TESTCASE_ITERATIONS );
-	do
-		SUBJECT_FILE=$(mktemp)
-		PATTERN_FILE=$(mktemp)
-
-		cat <(generateSubject) > $SUBJECT_FILE
-		cat <(generatePattern) > $PATTERN_FILE
-
-		bgxlimit ${JOBS} runTest2 "$2" "$3" "$SUBJECT_FILE" "$PATTERN_FILE"
-	done
-
-	bgxwait
-
-	outputResults
-	clearResults
-}
-
-
-runTest "DAWG Factors" "./astringology2 -a suffixAutomaton -s \"\$SUBJECT_FILE\" | ./aquery2 -q suffixAutomatonFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "BNDM Matcher" "./astringology2 -a bndmMatcher -p \"\$PATTERN_FILE\" | ./astringology2 -a bndmOccurrences -p - -s \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTest "Exact Boyer Moore" "./astringology2 -a boyerMoore -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-runTest "Compressed Bit Parallelism Factors" "./astringology2 -a compressedBitParallelIndex -s \"\$SUBJECT_FILE\" | ./aquery2 -q compressedBitParallelismFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "Bit Parallelism Factors" "./astringology2 -a bitParallelIndex -s \"\$SUBJECT_FILE\" | ./aquery2 -q bitParallelismFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "Position Heap Factors" "./astringology2 -a positionHeap -s \"\$SUBJECT_FILE\" | ./aquery2 -q positionHeapFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "Suffix Array Factors" "./astringology2 -a suffixArray -s \"\$SUBJECT_FILE\" | ./aquery2 -q suffixArrayFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "Suffix Trie Factors" "./astringology2 -a suffixTrie -s \"\$SUBJECT_FILE\" | ./aquery2 -q suffixTrieFactors -p \"\$PATTERN_FILE\" | ./astat2 -p size"
-runTest "Exact Boyer Moore Horspool" "./astringology2 -a boyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-runTest "Exact Reversed Boyer Moore Horspool" "./astringology2 -a reversedBoyerMooreHorspool -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-runTest "Quick Search" "./astringology2 -a quickSearch -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-runTest "Exact Matching Automaton" "./arun2 -t occurrences -a <(./astringology2 -a exactMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./adeterminize2) -i \"\$SUBJECT_FILE\" | ./astat2 -p size"
-runTest "Exact Dead Zone Using Bad Character Shift" "./astringology2 -a deadZoneUsingBadCharacterShift -s \"\$SUBJECT_FILE\" -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) | ./astat2 -p size"
-
-runTestAgainst "Hamming automaton vs. dynamic programing" "./arun2 -t occurrences -i \"\$SUBJECT_FILE\" -a <(./astringology2 -a hammingMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) -d 3 | ./adeterminize2) | ./astat2 -p size" "./astringology2 -a hammingMatchDynamicProgramming -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-runTestAgainst "Hamming automaton vs. bit paralelism" "./arun2 -t occurrences -i \"\$SUBJECT_FILE\" -a <(./astringology2 -a hammingMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) -d 3 | ./adeterminize2) | ./astat2 -p size" "./astringology2 -a hammingMatchBitParalelism -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-runTestAgainst "Hamming dynamic programming vs. bit paralelism" "./astringology2 -a hammingMatchDynamicProgramming -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size" "./astringology2 -a hammingMatchBitParalelism -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-
-runTestAgainst "Levenshtein automaton vs. dynamic programing" "./arun2 -t occurrences -i \"\$SUBJECT_FILE\" -a <(./astringology2 -a levenshteinMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) -d 3 | ./aepsilon2 | ./adeterminize2) | ./astat2 -p size" "./astringology2 -a levenshteinMatchDynamicProgramming -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-runTestAgainst "Levenshtein automaton vs. bit paralelism" "./arun2 -t occurrences -i \"\$SUBJECT_FILE\" -a <(./astringology2 -a levenshteinMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) -d 3 | ./aepsilon2 | ./adeterminize2) | ./astat2 -p size" "./astringology2 -a levenshteinMatchBitParalelism -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-runTestAgainst "Levenshtein dynamic programming vs. bit paralelism" "./astringology2 -a levenshteinMatchDynamicProgramming -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size" "./astringology2 -a levenshteinMatchBitParalelism -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-
-runTestAgainst "Generalized Levenshtein automaton vs. dynamic programing" "./arun2 -t occurrences -i \"\$SUBJECT_FILE\" -a <(./astringology2 -a generalizedLevenshteinMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) -d 3 | ./aepsilon2 | ./adeterminize2) | ./astat2 -p size" "./astringology2 -a generalizedLevenshteinMatchDynamicProgramming -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-runTestAgainst "Generalized Levenshtein automaton vs. bit paralelism" "./arun2 -t occurrences -i \"\$SUBJECT_FILE\" -a <(./astringology2 -a generalizedLevenshteinMatchingAutomaton -p <(./aaccess2 --string alphabet -o add -i \"\$PATTERN_FILE\" -c <(./aaccess2 --string alphabet -o get -i \"\$SUBJECT_FILE\")) -d 3 | ./aepsilon2 | ./adeterminize2) | ./astat2 -p size" "./astringology2 -a generalizedLevenshteinMatchBitParalelism -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
-runTestAgainst "Generalized Levenshtein dynamic programming vs. bit paralelism" "./astringology2 -a generalizedLevenshteinMatchDynamicProgramming -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size" "./astringology2 -a generalizedLevenshteinMatchBitParalelism -p \"\$PATTERN_FILE\" -s \"\$SUBJECT_FILE\" -d 3 | ./astat2 -p size"
diff --git a/tests.examples.sh b/tests.examples.sh
deleted file mode 100755
index f2cd6629008be3aa3556f9b6f8a7759da5008f4a..0000000000000000000000000000000000000000
--- a/tests.examples.sh
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-EXECUTABLES="aecho2"
-TESTS_DIR="`pwd`/examples2"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-# ----------------------------
-
-# $1 = conv command
-# $2 = return code
-# $3 = input automaton
-# $4 = output of conversion
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "conv: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "input automaton:" >> $LOGFILE
-	cat  "$3" >> $LOGFILE
-	echo "command out:" >> $LOGFILE
-	echo "$4" >> $LOGFILE
-}
-
-# $1 = command for conversion. Output of such command must be (eps-)NFA !!
-# $2 = automaton
-function runTest2 {
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "cat $2 | ./aecho2 "`
-	RET=$?
-
-	if [ $RET == 0 ]; then # ok
-		return 0
-	fi
-
-	log "$1" $RET "$2" "$OUT"
-
-	if [ $RET == 124 ]; then # timeout
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		return 3
-	else
-		return 1
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-# $1 - aconversions2 sequence
-function runTest {
-	echo $1 \(./aecho2\)
-	echo -ne "\t"
-
-	initResults
-
-	# predefined tests first
-	for FILE in `ls $TESTS_DIR/$1/*.xml`; do
-		runTest2 "$1" "$FILE"
-		registerResult $?
-	done
-
-	outputResults
-	clearResults
-}
-
-runTest "automaton"
-runTest "grammar"
-runTest "regexp"
-runTest "string"
-runTest "tree"
-runTest "rte"
-
diff --git a/tests.glushkovrte.sh b/tests.glushkovrte.sh
deleted file mode 100755
index 933cabdb769a1d98a97412d7c32995abb27cf742..0000000000000000000000000000000000000000
--- a/tests.glushkovrte.sh
+++ /dev/null
@@ -1,183 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_ITERATIONS=30
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-EXECUTABLES="arun2 adeterminize2 aconversions2"
-TESTS_DIR="`pwd`/examples2/rte"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = str
-# $2 = automaton
-# $3 = rte
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "str: " >> $LOGFILE
-	cat $1 >> $LOGFILE
-	echo "aut: " >> $LOGFILE
-	cat $2 >> $LOGFILE
-	echo "rte: " >> $LOGFILE
-	cat $3 >> $LOGFILE
-	echo "out: " >> $LOGFILE
-	echo $4 >> $LOGFILE
-}
-
-# $1 = genfile
-# $2 = automaton
-# $3 = rte
-function runAcceptTest {
-	PATTERN=$(mktemp)
-	FILE=$(mktemp)
-	echo '"#$"' > $FILE
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "./arun2 -i <($1 | tee $PATTERN | ./aconvert2 --tree_from_string | ./aql2 -q 'execute string::StringConcatenate ( PostfixRankedTree ) <#stdin < [string] :string::String $FILE >#stdout ') -a $2"`
-	RET=$?
-	if [ $RET == 0 ]; then # ok
-		echo $OUT | grep -q "<Bool>true</Bool>"
-		if [ $? != 0 ]; then
-			RET=1
-		fi
-	fi
-
-	if [ $RET != 0 ]; then # fail
-		log "$PATTERN" "$2" "$3" "$OUT"
-		echo -n ""
-	fi
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-function run {
-	initResults
-
-	# predefined tests first
-	TESTS="rte1 rte2 rte3 rte4 rte5 rte6 rte7 rte8 rte9"
-	for RTE in $TESTS; do
-		echo -n "$RTE: "
-
-		RTE_FILE="$TESTS_DIR/$RTE.xml"
-		GEN_FILE="$TESTS_DIR/gen_$RTE.py"
-		AUTOMATON_FILE=$(mktemp)
-
-		#echo $RTE_FILE
-		#echo $GEN_FILE
-		#echo $AUTOMATON_FILE
-
-		./aconversions2 -t pda -a glushkovrte -i $RTE_FILE 2>/dev/null | ./adeterminize2 > $AUTOMATON_FILE
-
-		for i in `seq 1 $TESTCASE_ITERATIONS`; do
-			runAcceptTest $GEN_FILE $AUTOMATON_FILE $RTE_FILE
-		done
-
-		echo ""
-	done
-
-	# random tests
-	# TODO
-
-	wait
-
-	outputResults
-	clearResults
-}
-
-run
diff --git a/tests.glushkovrte_naive.sh b/tests.glushkovrte_naive.sh
deleted file mode 100755
index 7d7f358d865d9eb93ae95f0255e12e48e5d66866..0000000000000000000000000000000000000000
--- a/tests.glushkovrte_naive.sh
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-# SETTINGS
-TESTCASE_ITERATIONS=30
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-EXECUTABLES="arun2 adeterminize2 aconversions2"
-TESTS_DIR="`pwd`/examples2/rte"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = str
-# $2 = automaton
-# $3 = rte
-function log {
-	echo "----------------------------------------------------------" >> $LOGFILE
-	echo "str: " >> $LOGFILE
-	cat $1 >> $LOGFILE
-	echo "aut: " >> $LOGFILE
-	cat $2 >> $LOGFILE
-	echo "rte: " >> $LOGFILE
-	cat $3 >> $LOGFILE
-}
-
-# $1 = genfile
-# $2 = automaton
-# $3 = rte
-function runAcceptTest {
-	PATTERN=$(mktemp)
-	FILE=$(mktemp)
-	echo '"#$"' > $FILE
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "./arun2 -i <($1 | tee $PATTERN | ./aconvert2 --tree_from_string | ./aql2 -q 'execute string::StringConcatenate ( PostfixRankedTree ) <#stdin < [string] :string::String $FILE >#stdout ') -a $2"`
-	RET=$?
-	if [ $RET == 0 ]; then # ok
-		echo $OUT | grep -q "<Bool>true</Bool>"
-		if [ $? != 0 ]; then
-			RET=1
-		fi
-	fi
-
-	if [ $RET != 0 ]; then # fail
-		log "$PATTERN" "$2" "$3"
-		echo -n ""
-	fi
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-function run {
-	initResults
-
-	# predefined tests first
-	TESTS="rte1 rte2 rte3 rte4 rte5 rte6 rte7 rte8 rte9"
-	for RTE in $TESTS; do
-		echo -n "$RTE: "
-
-		RTE_FILE="$TESTS_DIR/$RTE.xml"
-		GEN_FILE="$TESTS_DIR/gen_$RTE.py"
-		AUTOMATON_FILE=$(mktemp)
-
-		#echo $RTE_FILE
-		#echo $GEN_FILE
-		#echo $AUTOMATON_FILE
-
-		./aconversions2 -t pda -a glushkovrtenaive -i $RTE_FILE 2>/dev/null | ./adeterminize2 > $AUTOMATON_FILE
-
-		for i in `seq 1 $TESTCASE_ITERATIONS`; do
-			runAcceptTest $GEN_FILE $AUTOMATON_FILE $RTE_FILE
-		done
-
-		echo ""
-	done
-
-	# random tests
-	# TODO
-
-	wait
-
-	outputResults
-	clearResults
-}
-
-run
diff --git a/tests.repeats.sh b/tests.repeats.sh
deleted file mode 100755
index 2702a42a56dd2ed52ebe64f6c0f7c2617354bffb..0000000000000000000000000000000000000000
--- a/tests.repeats.sh
+++ /dev/null
@@ -1,367 +0,0 @@
-#!/usr/bin/env bash
-
-# $1 test dir suffix (debug / release)
-
-source bash_multithread.sh
-
-# ALGORITHM SETTINGS
-TESTCASE_ITERATIONS=30
-TESTCASE_TIMEOUT=10
-LOGFILE="log_tests.txt"
-
-# RANDOM TREE SETTINGS (./arand2 parameters)
-# BEWARE, NOT ALL VALUES MAY WORK TOGETHER
-NODES=100
-HEIGHT=15
-ALPHABET_SIZE=10
-
-EXECUTABLES="aarbology2 acast2 tniceprint arand2 "
-TESTS_DIR="`pwd`/examples2/tree"
-
-RES_GOOD=
-RES_FAIL=
-RES_TIME=
-RES_SEGV=
-RES_UNKN=
-
-
-# ----------------------------
-
-for FILE in $EXECUTABLES; do
-	if [ ! -f $1/$FILE ]; then
-		echo "Executable $FILE is required for testing. Make sure it is in $1 folder."
-		exit 1
-	fi
-done
-
-cd $1/
-rm -f $LOGFILE
-
-JOBS=$2
-if [ -z "$JOBS" ]; then
-	JOBS=1
-fi
-
-# ----------------------------
-
-# $1 = file path
-# $2 = return code
-# $3 = diff out
-# $4 = RankedTree xml
-# $5 = Naive output
-# $6 = Advanced output
-function log {
-	echo "==========================================================" >> $LOGFILE
-	echo "file: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	echo "problematic tree:" >> $LOGFILE
-	cat $4 >> $LOGFILE
-	ONE=$(mktemp)
-	TWO=$(mktemp)
-	echo "Naive : " >> $ONE
-	echo "Yours : " >> $TWO
-	cat $5 | ./tniceprint >> $ONE
-	cat $6 | ./tniceprint >> $TWO
-	paste $ONE $TWO | pr -t -e$(awk 'n<length {n=length} END {print n+1}' $ONE) >> $LOGFILE
-	rm $ONE $TWO
-}
-
-# $1 = file path
-# $2 = return code
-# $3 = diff out
-# $4 = RankedTree
-# $5 = RankedTree -> Postfix -> RankedTree
-function log2 {
-	echo "==========================================================" >> $LOGFILE
-	echo "file: " $1 >> $LOGFILE
-	echo "ret: " $2 >> $LOGFILE
-	ONE=$(mktemp)
-	TWO=$(mktemp)
-	echo "Simple : " >> $ONE
-	echo "After conversions : " >> $TWO
-	cat $4 >> $ONE
-	cat $5 >> $TWO
-	paste $ONE $TWO | pr -t -e$(awk 'n<length {n=length} END {print n+1}' $ONE) >> $LOGFILE
-	rm $ONE $TWO
-}
-
-# $1 = TREE_FILE
-function runPostfix2RankedAlgorithmTest {
-	#compares RankedTree to RankedTree -> PostfixRankedTree -> RankedTree
-
-	RANKED2POSTFIX2RANKED=$(mktemp)
-	RANKED=$(mktemp)
-
-	./acast2 -t RankedTree -i $1 | ./tniceprint > $RANKED
-	./acast2 -t RankedTree -i $1 | ./acast2 -t PostfixRankedTree | ./acast2 -t RankedTree | ./tniceprint > $RANKED2POSTFIX2RANKED
-
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff $RANKED $RANKED2POSTFIX2RANKED"`
-	RET=$?
-
-	if [ $RET != 0 ]; then # fail
-		log2 "$1" $RET "$OUT" "$RANKED" "$RANKED2POSTFIX2RANKED"
-	fi
-
-	rm $1 $RANKED2POSTFIX2RANKED $RANKED
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-
-function runNaivePostfixRepeatsTest {
-
-	NAIVE_OUTPUT=$(mktemp)
-	ADVANCED_OUTPUT=$(mktemp)
-
-	./aarbology2 -s $1 -a exactSubtreeRepeatsNaive | ./aarbology2 -a normalizeTreeLabels > $NAIVE_OUTPUT
-	./acast2 -t PostfixRankedTree -i  $1 | ./aarbology2 -a exactSubtreeRepeatsNaive | ./acast2 -t RankedTree | ./aarbology2 -a normalizeTreeLabels > $ADVANCED_OUTPUT
-
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff $NAIVE_OUTPUT $ADVANCED_OUTPUT"`
-	RET=$?
-
-	if [ $RET != 0 ]; then # fail
-		log "$1" $RET "$OUT" "$1" "$NAIVE_OUTPUT" "$ADVANCED_OUTPUT"
-	fi
-
-	rm $1 $NAIVE_OUTPUT $ADVANCED_OUTPUT
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-# $1 = TREE_FILE
-function runRepeatsAlgorithmTest {
-
-	NAIVE_OUTPUT=$(mktemp)
-	ADVANCED_OUTPUT=$(mktemp)
-	ARBOLOGY_OUTPUT=$(mktemp)
-
-	./aarbology2 -s $1 -a exactSubtreeRepeatsNaive | ./aarbology2 -a normalizeTreeLabels > $NAIVE_OUTPUT
-	./acast2 -t PostfixRankedTree -i $1 | ./aarbology2 -a exactSubtreeRepeats | ./acast2 -t RankedTree | ./aarbology2 -a normalizeTreeLabels > $ADVANCED_OUTPUT
-	./acast2 -t PrefixRankedTree -i $1 | ./aarbology2 -a exactSubtreeRepeatsFromSubtreeAutomaton | ./acast2 -t RankedTree | ./aarbology2 -a normalizeTreeLabels > $ARBOLOGY_OUTPUT
-
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff $NAIVE_OUTPUT $ADVANCED_OUTPUT"`
-	RET=$?
-
-	if [ $RET != 0 ]; then # fail
-		log "$1" $RET "$OUT" "$1" "$NAIVE_OUTPUT" "$ADVANCED_OUTPUT"
-	fi
-
-	OUT=`timeout $TESTCASE_TIMEOUT bash -c "diff $NAIVE_OUTPUT $ARBOLOGY_OUTPUT"`
-	RET=$?
-
-	if [ $RET != 0 ]; then # fail
-		log "$1" $RET "$OUT" "$1" "$NAIVE_OUTPUT" "$ARBOLOGY_OUTPUT"
-	fi
-
-	rm $1 $NAIVE_OUTPUT $ADVANCED_OUTPUT $ARBOLOGY_OUTPUT
-
-	if [ $RET == 124 ]; then # timeout
-		registerResult 2
-		return 2
-	elif [ $RET -ge 124 ]; then #segv
-		registerResult 3
-		return 3
-	elif [ $RET != 0 ]; then # fail
-		registerResult 1
-		return 1
-	else
-		registerResult 0
-		return 0
-	fi
-}
-
-function registerResult {
-	case $1 in
-		0)
-			echo -n "."
-			echo -n "+1" >> $RES_GOOD
-			;;
-		1)
-			echo -n "x"
-			echo -n "+1" >> $RES_FAIL
-			;;
-		2)
-			echo -n "T"
-			echo -n "+1" >> $RES_TIME
-			;;
-		3)
-			echo -n "E"
-			echo -n "+1" >> $RES_SEGV
-			;;
-		*)
-			echo -n "?"
-			echo -n "+1" >> $RES_UNKN
-			;;
-	esac
-}
-
-function initResults {
-	RES_GOOD=$(mktemp)
-	echo -n "0" > $RES_GOOD
-	RES_FAIL=$(mktemp)
-	echo -n "0" > $RES_FAIL
-	RES_TIME=$(mktemp)
-	echo -n "0" > $RES_TIME
-	RES_SEGV=$(mktemp)
-	echo -n "0" > $RES_SEGV
-	RES_UNKN=$(mktemp)
-	echo -n "0" > $RES_UNKN
-}
-
-function clearResults {
-	rm $RES_GOOD
-	rm $RES_FAIL
-	rm $RES_TIME
-	rm $RES_SEGV
-	rm $RES_UNKN
-}
-
-function outputResults {
-	echo "" >> $RES_GOOD
-	echo "" >> $RES_FAIL
-	echo "" >> $RES_TIME
-	echo "" >> $RES_SEGV
-	echo "" >> $RES_UNKN
-
-	# summary
-	echo -ne "\n\t"
-	echo "RES: GOOD:" $(bc < $RES_GOOD) ", FAIL:" $(bc < $RES_FAIL) ", TIME:" $(bc < $RES_TIME) ", SEGV:" $(bc < $RES_SEGV), "UNKN:" $(bc < $RES_UNKN)
-	echo ""
-}
-
-function subtreeRepeatsTest {
-	initResults
-
-	echo "subtreeRepeatsTest"
-
-	echo "Testing on predefined trees"
-	echo -ne "\t"
-
-	for TREE_FILE in `ls $TESTS_DIR/repeats.test*.xml`; do
-	  # echo "Testing tree $(basename $TREE_FILE) "
-		TREE_COPY=$(mktemp)
-		cat $TREE_FILE > $TREE_COPY
-		bgxlimit ${JOBS} runRepeatsAlgorithmTest "$TREE_COPY"
-	done
-	wait
-
-	outputResults
-	clearResults
-
-	initResults
-
-	echo "Testing on randomly generated trees"
-	echo -ne "\t"
-
-	for i in $(seq 1 $TESTCASE_ITERATIONS); do
-		# echo "Testing tree $(basename $TREE_FILE) "
-		TREE_FILE=$(mktemp)
-		./arand2 -t RT --nodes $NODES --terminals $(( $RANDOM % $ALPHABET_SIZE + 1 )) --height $HEIGHT > $TREE_FILE
-		bgxlimit ${JOBS} runRepeatsAlgorithmTest "$TREE_FILE"
-	done
-	wait
-
-	outputResults
-	clearResults
-}
-
-function postfixToRankedTest {
-	initResults
-
-	echo "PostfixToRankedTest"
-
-	echo "Testing on predefined trees"
-	echo -ne "\t"
-
-	for TREE_FILE in `ls $TESTS_DIR/repeats.test*.xml`; do
-	  # echo "Testing tree $(basename $TREE_FILE) "
-		TREE_COPY=$(mktemp)
-		cat $TREE_FILE > $TREE_COPY
-		bgxlimit ${JOBS} runPostfix2RankedAlgorithmTest "$TREE_COPY"
-	done
-	wait
-
-	outputResults
-	clearResults
-
-	initResults
-
-	echo "Testing on randomly generated trees"
-	echo -ne "\t"
-
-	for i in $(seq 1 $TESTCASE_ITERATIONS); do
-		# echo "Testing tree $(basename $TREE_FILE) "
-		TREE_FILE=$(mktemp)
-		./arand2 -t RT --nodes $NODES --terminals $(( $RANDOM % $ALPHABET_SIZE + 1 )) --height $HEIGHT > $TREE_FILE
-		bgxlimit ${JOBS} runPostfix2RankedAlgorithmTest "$TREE_FILE"
-	done
-	wait
-
-	outputResults
-	clearResults
-}
-
-function naivePostfixRepeatsTest {
-	initResults
-
-	echo "NaivePostfixRepeatsTest"
-
-	echo "Testing on predefined trees"
-	echo -ne "\t"
-
-	for TREE_FILE in `ls $TESTS_DIR/repeats.test*.xml`; do
-	  # echo "Testing tree $(basename $TREE_FILE) "
-		TREE_COPY=$(mktemp)
-		cat $TREE_FILE > $TREE_COPY
-		bgxlimit ${JOBS} runNaivePostfixRepeatsTest "$TREE_COPY"
-	done
-	wait
-
-	outputResults
-	clearResults
-
-	initResults
-
-	echo "Testing on randomly generated trees"
-	echo -ne "\t"
-
-	for i in $(seq 1 $TESTCASE_ITERATIONS); do
-		# echo "Testing tree $(basename $TREE_FILE) "
-		TREE_FILE=$(mktemp)
-		./arand2 -t RT --nodes $NODES --terminals $(( $RANDOM % $ALPHABET_SIZE + 1 )) --height $HEIGHT > $TREE_FILE
-		bgxlimit ${JOBS} runNaivePostfixRepeatsTest "$TREE_FILE"
-	done
-	wait
-
-	outputResults
-	clearResults
-}
-
-
-subtreeRepeatsTest
-postfixToRankedTest
-naivePostfixRepeatsTest