diff --git a/makefile b/makefile
index 0a14e43d858f7c4514c37be19b272e5525cb0b1a..a00133d48af6deca1730666732013fc6854425ba 100644
--- a/makefile
+++ b/makefile
@@ -1,10 +1,24 @@
-# Makefile for Simple Game
-
-# Compiler
+ifeq ($(OS),Windows_NT)
+CXX = g++ # or your Windows compiler
+CXXFLAGS = -std=c++17 -Wall -Wreorder
+RM = del /Q
+else
+UNAME_S := $(shell uname -s)
+ifeq ($(UNAME_S),Linux)
 CXX = g++
+CXXFLAGS = -std=c++17 -Wall -Wreorder
+RM = rm -f
+endif
+# Add more conditions for other platforms as needed
+endif
 
 # Compiler flags
-CXXFLAGS = -std=c++17 -Wall -Wreorder -g
+
+# DEBUG BUILD
+CXXFLAGS += -g
+
+# Linker Flags
+LDFLAGS = 
 
 # Source directory
 SRC_DIR = src
@@ -23,7 +37,7 @@ BIN_DIR = bin
 
 # Source files
 SRC_FILES = $(wildcard $(SRC_DIR)/**/*.cpp $(SRC_DIR)/*.cpp )
-SRC_FILES_ = $(wildcard $(SRC_DIR)/*.cpp)
+
 # Test Files
 TEST_FILES = $(wildcard $(TEST_DIR)/**/*.test.cpp $(TEST_DIR)/*.test.cpp)
 
@@ -33,29 +47,29 @@ TEST_OBJ_FILES = $(patsubst $(TEST_DIR)/%.test.cpp,$(BUILD_DIR)/%.o,$(TEST_FILES
 
 # Output executable
 TARGET = $(BIN_DIR)/game
+TEST_TARGET = $(BIN_DIR)/test_runner
 
 all: $(TARGET)
 
 $(TARGET): $(OBJ_FILES)
 	$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJ_FILES)
 
-$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
+$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp ${INC_DIR}/*.h
 	@mkdir -p $(@D)
-	$(CXX) $(CXXFLAGS) -I$(INC_DIR) -c -o $@ $<
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) -I$(INC_DIR) -c -o $@ $<
 
 clean:
 	rm -rf $(BIN_DIR)/* $(BUILD_DIR)/* test_runnr
 	rm -rf ./*~ ./*.swp
 
 run_tests: $(TEST_OBJ_FILES)
-		$(CC) $(CFLAGS) $(INC_DIRS) -o test_runner $^
-		./test_runner
+		$(CXX) $(CXXFLAGS) $(LDFLAGS) $(INC_DIRS) -o ${TEST_TARGET} $^
+		./${TEST_TARGET}
 
 	
 $(BUILD_DIR)/%.o: $(TEST_DIR)/%.test.cpp
 	@mkdir -p $(@D)
-	$(CC) $(CFLAGS) $(INC_DIRS) -c -o $@ $<
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(INC_DIRS) -c -o $@ $<
 
 run: $(TARGET)
 	./$(TARGET)
-