diff --git a/Makefile b/Makefile
index 9df6771ce92aa0bb5b6fe391d1956a625aa4302a..aa5c0da07dffe162f9569853786111cfdea1170a 100644
--- a/Makefile
+++ b/Makefile
@@ -132,10 +132,10 @@ $(shell  cut $(INCLUDE_DIR)/$(VER_FILE_NAME) -f 3 > version)
 test/%.o : test/%.cpp
 	$(CXX) $(CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@ -I /usr/include/cppunit
 
-%.o : %.cpp
+%.o : %.cpp | makeobjdir
 	$(CXX) $(CPPFLAGS) $(ALL_CFLAGS) -c $< -o $(OBJECTS_DIR)/$@
 
-%.o : %.c
+%.o : %.c | makeobjdir
 	$(CC) $(CPPFLAGS) $(ALL_CFLAGS) -c $< -o $(OBJECTS_DIR)/$@
 
 #only for documentation generation
@@ -152,7 +152,7 @@ all: lib
 
 lib: staticlib 
 	
-exe: makeobjdir main.o $(OBJECTS)	
+exe: main.o $(OBJECTS)
 		test -d $(EXE_DESTDIR) || mkdir -p $(EXE_DESTDIR)
 		$(CXX) $(CPPFLAGS) $(ALL_CFLAGS) -o $(EXE_DESTDIR)/$(EXE_NAME) $(OBJECTS_DIR)/*.o $(LIBS)
 	
@@ -163,13 +163,13 @@ TESTOBJS = test/InputPacketStreamFileTest.o test/runtests.o
 test/runtests: $(TESTOBJS) lib
 	$(CXX) $(CPPFLAGS) $(ALL_CFLAGS) -o $@ $(TESTOBJS) -Llib -lpacket $(LIBS) -lcppunit
 
-
-staticlib: makelibdir makeobjdir $(OBJECTS)	
+staticlib: $(OBJECTS)
 		test -d $(LIB_DESTDIR) || mkdir -p $(LIB_DESTDIR)	
 		$(DEL_FILE) $(LIB_DESTDIR)/$(TARGETA) 	
 		$(AR) $(LIB_DESTDIR)/$(TARGETA) $(OBJECTS_DIR)/*.o
 	
-dynamiclib: makelibdir makeobjdir $(OBJECTS)	
+dynamiclib: $(OBJECTS)
+		test -d $(LIB_DESTDIR) || mkdir -p $(LIB_DESTDIR)
 		$(DEL_FILE) $(TARGET) $(TARGET0) $(TARGET1) $(TARGET2)
 		$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS_DIR)/*.o $(LIBS)
 		$(SYMLINK) $(TARGET) $(TARGET0)
@@ -184,9 +184,6 @@ dynamiclib: makelibdir makeobjdir $(OBJECTS)
 makeobjdir:
 	test -d $(OBJECTS_DIR) || mkdir -p $(OBJECTS_DIR)
 	
-makelibdir:
-	test -d $(LIB_DESTDIR) || mkdir -p $(LIB_DESTDIR)
-
 #clean: delete all files from the current directory that are normally created by building the program. 
 clean:
 	$(DEL_FILE) $(OBJECTS_DIR)/*.o test/*.o