diff --git a/acat/makefile b/acat/makefile
index 6ade75d926fa10a667af7fac7d256f6cd41bf1a0..f13b556433a09b81f94629407979d4ef1697ff0a 100644
--- a/acat/makefile
+++ b/acat/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=acat
-CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
+EXECUTABLE=acat
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I/usr/include/libxml2/ 
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aconvert.automaton/makefile b/aconvert.automaton/makefile
index eca1f70d08b0d7b23156b2b070ebfd81cebe43f0..3d6547a08e07af1c0cc1754cb8022addc08d5fd9 100644
--- a/aconvert.automaton/makefile
+++ b/aconvert.automaton/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aconvert.automaton
+EXECUTABLE=aconvert.automaton
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aconvert.dot/makefile b/aconvert.dot/makefile
index 7fc4f89013930107265b62edcdda4cb4522b8291..2ab9d6f54a0a5425ec71bc1e3e51c6c7be7720f1 100644
--- a/aconvert.dot/makefile
+++ b/aconvert.dot/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aconvert.dot
-CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
+EXECUTABLE=aconvert.dot
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I/usr/include/libxml2
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aconvert.gastex/makefile b/aconvert.gastex/makefile
index e9e21a20b597805f2c4cad282c84fcb0cd883d18..f35aee441e90af15ef0fae7c0ee3820defac857e 100644
--- a/aconvert.gastex/makefile
+++ b/aconvert.gastex/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aconvert.gastex
-CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
+EXECUTABLE=aconvert.gastex
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I/usr/include/libxml2
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aconvert.grammar/makefile b/aconvert.grammar/makefile
index 80d67da8a03815c12a7af84179978087cd75977f..3608e01384af0ee4114839f2d5a2f023c68f9aea 100644
--- a/aconvert.grammar/makefile
+++ b/aconvert.grammar/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aconvert.grammar
+EXECUTABLE=aconvert.grammar
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I/usr/include/libxml2
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aconvert.regexp/makefile b/aconvert.regexp/makefile
index 39f1798c2c53ab7a3312b861d6a3ef6ca4b72738..f876f3dcc146d6c1ff1998dfea385a03d22c2bc5 100644
--- a/aconvert.regexp/makefile
+++ b/aconvert.regexp/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aconvert.regexp
+EXECUTABLE=aconvert.regexp
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aconvert/makefile b/aconvert/makefile
index 3a231680338f07e0ece42aa1e6120bb91510c8d2..38682c7255a72dd50a020b0af8de37e4223a4a5f 100644
--- a/aconvert/makefile
+++ b/aconvert/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aconvert
+EXECUTABLE=aconvert
 CCFLAGS= -std=c++11 -O2 -c -Wall
 LDFLAGS=
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/adeterminize.fsm/makefile b/adeterminize.fsm/makefile
index 45679895658c79ea38f16e89dfa2d8d5821ef67b..8ef09d34cd5e101d3ae5c8f138c8cf523baa2953 100644
--- a/adeterminize.fsm/makefile
+++ b/adeterminize.fsm/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=adeterminize.fsm
+EXECUTABLE=adeterminize.fsm
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I../adeterminize/src
 LDFLAGS= -L../alib/lib -L../adeterminize/lib -lxml2 -lalib -ladeterminize -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/adeterminize.fsm/src/FSMDeterminizer.cpp b/adeterminize.fsm/src/FSMDeterminizer.cpp
index 9f9167484073bec4a9d35a6eb1fd01cc102ed177..6cb0e5208f05da244c6383a5db5998d384c3e4aa 100644
--- a/adeterminize.fsm/src/FSMDeterminizer.cpp
+++ b/adeterminize.fsm/src/FSMDeterminizer.cpp
@@ -42,7 +42,7 @@ FSM* FSMDeterminizer::determinize() {
             break;
         }
         
-        DeterminizationUtils::StateData* unmarkedStateData;
+        DeterminizationUtils::StateData* unmarkedStateData = NULL;
         for (map<string, DeterminizationUtils::StateData>::iterator stateIter = states.begin();
                 stateIter != states.end();
                 stateIter++) {
diff --git a/adeterminize.idpda/makefile b/adeterminize.idpda/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..29c3021b47703d735d02d3d7fb3a7a405ef4c007
--- /dev/null
+++ b/adeterminize.idpda/makefile
@@ -0,0 +1,20 @@
+CC=g++
+EXECUTABLE=adeterminize.idpda
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I../adeterminize/src
+LDFLAGS= -L../alib/lib -L../adeterminize/lib -lxml2 -lalib -ladeterminize -Wl,-rpath,.
+
+SOURCES=$(shell find src/ -name *cpp)
+OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
+
+all: $(SOURCES) bin/$(EXECUTABLE)
+
+bin/$(EXECUTABLE): $(OBJECTS)
+	mkdir -p bin
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
+
+obj/%.o: src/%.cpp
+	mkdir -p $(dir $@)
+	$(CC) $(CCFLAGS) $< -o $@
+
+clean:
+	$(RM) -r *.o *.d bin obj
diff --git a/adeterminize.idpda/src/IDPDADeterminizer.cpp b/adeterminize.idpda/src/IDPDADeterminizer.cpp
index 7f25b7d904d1111a0639063ad4c42372178c684b..0db01c5f4615895623373813392b216354a18ac0 100644
--- a/adeterminize.idpda/src/IDPDADeterminizer.cpp
+++ b/adeterminize.idpda/src/IDPDADeterminizer.cpp
@@ -45,7 +45,7 @@ PDA* IDPDADeterminizer::determinize() {
             break;
         }
         
-        DeterminizationUtils::StateData* unmarkedStateData;
+        DeterminizationUtils::StateData* unmarkedStateData = NULL;
         for (map<string, DeterminizationUtils::StateData>::iterator stateIter = states.begin();
                 stateIter != states.end();
                 stateIter++) {
diff --git a/adeterminize.vpa/makefile b/adeterminize.vpa/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..a228f39e0873fba2c4e03c98c90da0bc785a4c8b
--- /dev/null
+++ b/adeterminize.vpa/makefile
@@ -0,0 +1,20 @@
+CC=g++
+EXECUTABLE=adeterminize.vpa
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I../adeterminize/src
+LDFLAGS= -L../alib/lib -L../adeterminize/lib -lxml2 -lalib -ladeterminize -Wl,-rpath,.
+
+SOURCES=$(shell find src/ -name *cpp)
+OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
+
+all: $(SOURCES) bin/$(EXECUTABLE)
+
+bin/$(EXECUTABLE): $(OBJECTS)
+	mkdir -p bin
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
+
+obj/%.o: src/%.cpp
+	mkdir -p $(dir $@)
+	$(CC) $(CCFLAGS) $< -o $@
+
+clean:
+	$(RM) -r *.o *.d bin obj
diff --git a/adeterminize.vpa2/makefile b/adeterminize.vpa2/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..4b3f266a794fa44e48460513abbdc66c4a08d263
--- /dev/null
+++ b/adeterminize.vpa2/makefile
@@ -0,0 +1,20 @@
+CC=g++
+EXECUTABLE=adeterminize.vpa2
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I../adeterminize/src
+LDFLAGS= -L../alib/lib -L../adeterminize/lib -lxml2 -lalib -ladeterminize -Wl,-rpath,.
+
+SOURCES=$(shell find src/ -name *cpp)
+OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
+
+all: $(SOURCES) bin/$(EXECUTABLE)
+
+bin/$(EXECUTABLE): $(OBJECTS)
+	mkdir -p bin
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
+
+obj/%.o: src/%.cpp
+	mkdir -p $(dir $@)
+	$(CC) $(CCFLAGS) $< -o $@
+
+clean:
+	$(RM) -r *.o *.d bin obj
diff --git a/adeterminize.vpa3/makefile b/adeterminize.vpa3/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..76eabc70d6528cf3fd7e99a79086bbd2d611442e
--- /dev/null
+++ b/adeterminize.vpa3/makefile
@@ -0,0 +1,20 @@
+CC=g++
+EXECUTABLE=adeterminize.vpa3
+CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I../adeterminize/src
+LDFLAGS= -L../alib/lib -L../adeterminize/lib -lxml2 -lalib -ladeterminize -Wl,-rpath,.
+
+SOURCES=$(shell find src/ -name *cpp)
+OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
+
+all: $(SOURCES) bin/$(EXECUTABLE)
+
+bin/$(EXECUTABLE): $(OBJECTS)
+	mkdir -p bin
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
+
+obj/%.o: src/%.cpp
+	mkdir -p $(dir $@)
+	$(CC) $(CCFLAGS) $< -o $@
+
+clean:
+	$(RM) -r *.o *.d bin obj
diff --git a/adeterminize/makefile b/adeterminize/makefile
index c18556666a06e328f19c2ca19aa8798744627098..4d59145d5c04d042412452b7b11f50f4ad6c2d8d 100644
--- a/adeterminize/makefile
+++ b/adeterminize/makefile
@@ -10,7 +10,7 @@ all: $(SOURCES) lib/$(LIBRARY)
 
 lib/$(LIBRARY): $(OBJECTS)
 	mkdir -p lib
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/adeterminize/src/VPADeterminizationStructs.h b/adeterminize/src/VPADeterminizationStructs.h
index cdf196a15be8980975bf06980d7e6add87c26a0f..b9958283e1acb868f310da476d993e835ede3b08 100644
--- a/adeterminize/src/VPADeterminizationStructs.h
+++ b/adeterminize/src/VPADeterminizationStructs.h
@@ -16,15 +16,15 @@ struct StatesPair {
               state2(state2) {}
     
     bool operator < (const StatesPair& other) const {
-        return state1 < other.state1 || state1 == other.state1 && state2 < other.state2;
+        return (state1 < other.state1) || ((state1 == other.state1) && (state2 < other.state2));
     }
     
     bool operator == (const StatesPair& other) const {
-        return state1 == other.state1 && state2 == other.state2;
+        return (state1 == other.state1) && (state2 == other.state2);
     }
     
     bool operator != (const StatesPair& other) const {
-        return state1 != other.state1 || state2 != other.state2;
+        return (state1 != other.state1) || (state2 != other.state2);
     }
 };
 
@@ -52,14 +52,14 @@ struct StateData {
     bool isMarked;
     
     StateData(const State& state, const SComponent& s, const RComponent& r)
-            : s(s),
+            : state(state),
+              s(s),
               r(r),
-              state(state),
               isMarked(false) {}
     
     StateData(const State& state, const SComponent& s)
-            : s(s),
-              state(state),
+            : state(state),
+              s(s),
               isMarked(false) {}
 };
 
diff --git a/adiff.automaton/makefile b/adiff.automaton/makefile
index 112e9e1dbe07a7e80131bc6a62fe0cba3743dd9f..12848a09c9a59b5160f79d04f004e15f87ee14f2 100644
--- a/adiff.automaton/makefile
+++ b/adiff.automaton/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=adiff.automaton
+EXECUTABLE=adiff.automaton
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/adiff.grammar/makefile b/adiff.grammar/makefile
index b850e6b828a70d6944f0d4ef40c36280baf90a82..add46f2633a7d93d17c858b04a95019e4cacc71d 100644
--- a/adiff.grammar/makefile
+++ b/adiff.grammar/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=adiff.grammar
+EXECUTABLE=adiff.grammar
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/adiff/makefile b/adiff/makefile
index 6773028e5e1b253996e9ec04ba7f9c566a04e8dc..53b7ac7e73096b2d186c7a6088604f9d48bbd49a 100644
--- a/adiff/makefile
+++ b/adiff/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=adiff
+EXECUTABLE=adiff
 CCFLAGS= -std=c++11 -O2 -c -Wall
 LDFLAGS=
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aepsilon/makefile b/aepsilon/makefile
index cbf7f7720f73a250c333dc0f15eac52bc007c483..fd3f6170609fea0e0845c7bb534663b4bcae96e3 100644
--- a/aepsilon/makefile
+++ b/aepsilon/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aepsilon
+EXECUTABLE=aepsilon
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I/usr/include/libxml2
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/alib/makefile b/alib/makefile
index c397f43efcbaa0cf8fd7a68f838826a62e187061..67ac588fe3d9f118a8b7c951627e6e7c46fdaa32 100644
--- a/alib/makefile
+++ b/alib/makefile
@@ -10,7 +10,7 @@ all: $(SOURCES) lib/$(LIBRARY)
 
 lib/$(LIBRARY): $(OBJECTS)
 	mkdir -p lib
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/aminimize/makefile b/aminimize/makefile
index e9430cbc2d3431a2bda71341538d6b69af1126d9..f31e3d5917c73e9172564ad177eea58242906e67 100644
--- a/aminimize/makefile
+++ b/aminimize/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=aminimize
+EXECUTABLE=aminimize
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src 
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/atrim/makefile b/atrim/makefile
index b6c91ddba61bbc64fd6e384ad2cc9b483c6bc7d5..f0d998dec16103531883630c2f6c11f946202dc2 100644
--- a/atrim/makefile
+++ b/atrim/makefile
@@ -1,16 +1,16 @@
 CC=g++
-EXECUTIBLE=atrim
+EXECUTABLE=atrim
 CCFLAGS= -std=c++11 -O2 -c -Wall -I../alib/src -I/usr/include/libxml2
 LDFLAGS= -L../alib/lib -lxml2 -lalib -Wl,-rpath,.
 
 SOURCES=$(shell find src/ -name *cpp)
 OBJECTS=$(patsubst src/%.cpp, obj/%.o, $(SOURCES))
 
-all: $(SOURCES) bin/$(EXECUTIBLE)
+all: $(SOURCES) bin/$(EXECUTABLE)
 
-bin/$(EXECUTIBLE): $(OBJECTS)
+bin/$(EXECUTABLE): $(OBJECTS)
 	mkdir -p bin
-	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
+	$(CC) $(OBJECTS) -o $@ $(LDFLAGS)
 
 obj/%.o: src/%.cpp
 	mkdir -p $(dir $@)
diff --git a/makefile b/makefile
index bf1351491c5776250635434b819717bff3669e35..861018a33a0f460876c205a58c117c1ec87db0e8 100644
--- a/makefile
+++ b/makefile
@@ -3,7 +3,7 @@ LIBPATH = /usr/lib/
 BINFOLDER = bin
 
 SUBDIRS_LIBS = alib adeterminize
-SUBDIRS_BINS = acat aconvert aconvert.dot aconvert.gastex aconvert.regexp aconvert.automaton aconvert.grammar aminimize adeterminize.fsm adiff adiff.automaton adiff.grammar aepsilon
+SUBDIRS_BINS = acat aconvert aconvert.dot aconvert.gastex aconvert.regexp aconvert.automaton aconvert.grammar aminimize adeterminize.fsm adeterminize.idpda adeterminize.vpa adeterminize.vpa2 adeterminize.vpa3 adiff adiff.automaton adiff.grammar aepsilon atrim
 
 SUBDIRS_WITH_MAKE = $(dir $(wildcard */makefile))
 
@@ -14,7 +14,7 @@ all: $(SUBDIRS_LIBS) $(SUBDIRS_BINS) copy
 $(SUBDIRS_LIBS):
 	$(MAKE) -C $@
 
-$(SUBDIRS_BINS):
+$(SUBDIRS_BINS): $(SUBDIRS_LIBS)
 	$(MAKE) -C $@
 
 clean:
@@ -22,7 +22,7 @@ clean:
 	    $(MAKE) -C $$dir clean; \
 	done
 
-copy:
+copy: $(SUBDIRS_LIBS) $(SUBDIRS_BINS)
 	mkdir -p $(BINFOLDER)
 	rm -rf $(BINFOLDER)/*
 	for dir in $(SUBDIRS_LIBS); do \