diff --git a/aarbology2/src/aarbology.cpp b/aarbology2/src/aarbology.cpp
index 6752b0a903f51c5c0878965d45b4382ec0e658e3..73c7468386b4b3cda290fda5406637b2356b7762 100644
--- a/aarbology2/src/aarbology.cpp
+++ b/aarbology2/src/aarbology.cpp
@@ -60,6 +60,12 @@ int main ( int argc, char * argv[] ) {
 		TCLAP::MultiArg < std::string > patternInput ( "p", "pattern", "Pattern tree from file", false, "file" );
 		cmd.add ( patternInput );
 
+		TCLAP::ValueArg < std::string > subtreeWildcardInput ( "w", "subtree_wildcard", "Wildcard to be used in algorithms needing it", false, "-", "file" );
+		cmd.add ( subtreeWildcardInput );
+
+		TCLAP::ValueArg < std::string > nonlinearVariablesInput ( "n", "nonlinear_variables", "Set of nonlinear variables to be used in algorithms needing it", false, "-", "file" );
+		cmd.add ( nonlinearVariablesInput );
+
 		TCLAP::SwitchArg ends ( "e", "ends", "Return occurrences as end indexes when applicable", false );
 		cmd.add ( ends );
 
@@ -207,11 +213,12 @@ int main ( int argc, char * argv[] ) {
 			alib::XmlDataFactory::toStdout ( res );
 		} else if ( algorithm.getValue ( ) == "exactTreePatternAutomaton" ) {
 			tree::Tree subject = alib::XmlDataFactory::fromTokens < tree::Tree > ( std::move ( sax::FromXMLParserHelper::parseInput(true, subjectInput).front ( ) ) );
+			alphabet::Symbol subtreeWildcard = alib::XmlDataFactory::fromTokens < alphabet::Symbol > ( sax::FromXMLParserHelper::parseInput(subtreeWildcardInput) );
 
 			measurements::end ( );
 			measurements::start ( "Algorithm", measurements::Type::MAIN );
 
-			automaton::Automaton res = arbology::exact::ExactTreePatternAutomaton::construct ( subject );
+			automaton::Automaton res = arbology::exact::ExactTreePatternAutomaton::construct ( subject, subtreeWildcard );
 
 			measurements::end ( );
 			measurements::start ( "Output write", measurements::Type::AUXILIARY );
diff --git a/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp b/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp
index 5878f8eb4f6067bc94f0bcf95a6b1063b0101fad..d163279f6bcfd4cb910440f02f2a42f204b4ecb9 100644
--- a/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp
+++ b/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.cpp
@@ -18,18 +18,10 @@ namespace arbology {
 
 namespace exact {
 
-automaton::Automaton ExactTreePatternAutomaton::construct ( const tree::Tree & tree ) {
-	return construct ( tree, alphabet::Symbol ( alphabet::RankedSymbol ( alphabet::Symbol ( alphabet::SubtreeWildcardSymbol::SUBTREE_WILDCARD ), 0 ) ) );
-}
-
 automaton::Automaton ExactTreePatternAutomaton::construct ( const tree::Tree & tree, const alphabet::Symbol & subtreeWildcard ) {
 	return dispatch ( tree.getData ( ), subtreeWildcard );
 }
 
-automaton::InputDrivenNPDA ExactTreePatternAutomaton::construct ( const tree::PrefixRankedTree & tree ) {
-	return construct ( tree, alphabet::Symbol ( alphabet::RankedSymbol ( alphabet::Symbol ( alphabet::SubtreeWildcardSymbol::SUBTREE_WILDCARD ), 0 ) ) );
-}
-
 automaton::InputDrivenNPDA ExactTreePatternAutomaton::construct ( const tree::PrefixRankedTree & tree, const alphabet::Symbol & subtreeWildcard ) {
 	alphabet::Symbol S = alphabet::symbolFrom ( 'S' );
 	automaton::InputDrivenNPDA res ( automaton::State ( 0 ), S );
diff --git a/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.h b/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.h
index ee75320844b34d4e1b4cc51a2f5ba76dbed83446..0e08a9bc7a04f0b429e2729f548a099462b16201 100644
--- a/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.h
+++ b/alib2algo/src/arbology/exact/ExactTreePatternAutomaton.h
@@ -23,10 +23,8 @@ public:
 	 * Performs conversion.
 	 * @return left regular grammar equivalent to source automaton.
 	 */
-	static automaton::Automaton construct ( const tree::Tree & tree );
 	static automaton::Automaton construct ( const tree::Tree & tree, const alphabet::Symbol & subtreeWildcard );
 
-	static automaton::InputDrivenNPDA construct ( const tree::PrefixRankedTree & tree );
 	static automaton::InputDrivenNPDA construct ( const tree::PrefixRankedTree & tree, const alphabet::Symbol & subtreeWildcard );
 
 };
diff --git a/tests.aarbology.sh b/tests.aarbology.sh
index f2434b5a62656ff7af21f124b3037945fb65b105..3c6e031d2a86720eed26e7a44e651da6e9e26b0b 100755
--- a/tests.aarbology.sh
+++ b/tests.aarbology.sh
@@ -356,7 +356,7 @@ function runTestPatternEnds {
 runTestPatternEnds "Exact Pattern Matching Automaton (PrefixRanked)" "./aarbology2 -a exactPatternMatchingAutomaton -p <(./acast2 -t PrefixRankedPattern -i <(./alphabetManip2 -o add -i \"\$PATTERN_FILE\" -a <( ./alphabetManip2 -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=100
-runTestPatternEnds "Exact Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) | ./astat2 -p size"
+runTestPatternEnds "Exact Tree Pattern Automaton (PrefixRanked)" "./aarbology2 -a exactTreePatternAutomaton -s <( ./acast2 -t PrefixRankedTree -i \"\$SUBJECT_FILE\" ) -w <( ./aaccess2 --tree subtree_wildcard -i \"\$PATTERN_FILE\" ) | ./adeterminize2 | ./arun2 -t result -i <(./acast2 -t PrefixRankedPattern -i \"\$PATTERN_FILE\" | ./acast2 -t LinearString ) | ./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 <(./alphabetManip2 -o add -i \"\$PATTERN_FILE\" -a <(./alphabetManip2 -o get -i \"\$SUBJECT_FILE\"))) | ./astat2 -p size"