diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3353a946f6a31043045ed1aa3160b5888d0303a2..bfdeb1ae817753a278e0203ea3adcc9093c4b417 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,7 +13,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
 find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
-find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Concurrent REQUIRED)
+# find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Concurrent REQUIRED)
 
 set(PROJECT_SOURCES
         main.cpp
@@ -47,7 +47,7 @@ else()
 endif()
 
 target_link_libraries(sudoku_solver PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
-target_link_libraries(sudoku_solver PRIVATE Qt${QT_VERSION_MAJOR}::Concurrent)
+# target_link_libraries(sudoku_solver PRIVATE Qt${QT_VERSION_MAJOR}::Concurrent)
 
 set_target_properties(sudoku_solver PROPERTIES
     MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0b699128bf71a33becbc7e29face8fa81b727210
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,276 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+
+# Default target executed when no arguments are given to make.
+default_target: all
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+# Disable VCS-based implicit rules.
+% : %,v
+
+# Disable VCS-based implicit rules.
+% : RCS/%
+
+# Disable VCS-based implicit rules.
+% : RCS/%,v
+
+# Disable VCS-based implicit rules.
+% : SCCS/s.%
+
+# Disable VCS-based implicit rules.
+% : s.%
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+# Command-line flag to silence nested $(MAKE).
+$(VERBOSE)MAKESILENT = -s
+
+#Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+# A target that is always out of date.
+cmake_force:
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+# The shell in which to execute make rules.
+SHELL = /bin/sh
+
+# The CMake executable.
+CMAKE_COMMAND = /usr/bin/cmake
+
+# The command to remove a file.
+RM = /usr/bin/cmake -E rm -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = /home/sls/Documents/dev/soduoku_solver
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = /home/sls/Documents/dev/soduoku_solver
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target edit_cache
+edit_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+	/usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available.
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+.PHONY : edit_cache/fast
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+	/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+.PHONY : rebuild_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/sls/Documents/dev/soduoku_solver/CMakeFiles /home/sls/Documents/dev/soduoku_solver//CMakeFiles/progress.marks
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 all
+	$(CMAKE_COMMAND) -E cmake_progress_start /home/sls/Documents/dev/soduoku_solver/CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named sudoku_solver
+
+# Build rule for target.
+sudoku_solver: cmake_check_build_system
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 sudoku_solver
+.PHONY : sudoku_solver
+
+# fast build rule for target.
+sudoku_solver/fast:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/build
+.PHONY : sudoku_solver/fast
+
+#=============================================================================
+# Target rules for targets named sudoku_solver_autogen
+
+# Build rule for target.
+sudoku_solver_autogen: cmake_check_build_system
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 sudoku_solver_autogen
+.PHONY : sudoku_solver_autogen
+
+# fast build rule for target.
+sudoku_solver_autogen/fast:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver_autogen.dir/build.make CMakeFiles/sudoku_solver_autogen.dir/build
+.PHONY : sudoku_solver_autogen/fast
+
+cell.o: cell.cpp.o
+.PHONY : cell.o
+
+# target to build an object file
+cell.cpp.o:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/cell.cpp.o
+.PHONY : cell.cpp.o
+
+cell.i: cell.cpp.i
+.PHONY : cell.i
+
+# target to preprocess a source file
+cell.cpp.i:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/cell.cpp.i
+.PHONY : cell.cpp.i
+
+cell.s: cell.cpp.s
+.PHONY : cell.s
+
+# target to generate assembly for a file
+cell.cpp.s:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/cell.cpp.s
+.PHONY : cell.cpp.s
+
+main.o: main.cpp.o
+.PHONY : main.o
+
+# target to build an object file
+main.cpp.o:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/main.cpp.o
+.PHONY : main.cpp.o
+
+main.i: main.cpp.i
+.PHONY : main.i
+
+# target to preprocess a source file
+main.cpp.i:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/main.cpp.i
+.PHONY : main.cpp.i
+
+main.s: main.cpp.s
+.PHONY : main.s
+
+# target to generate assembly for a file
+main.cpp.s:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/main.cpp.s
+.PHONY : main.cpp.s
+
+sudoku_solver_autogen/mocs_compilation.o: sudoku_solver_autogen/mocs_compilation.cpp.o
+.PHONY : sudoku_solver_autogen/mocs_compilation.o
+
+# target to build an object file
+sudoku_solver_autogen/mocs_compilation.cpp.o:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/sudoku_solver_autogen/mocs_compilation.cpp.o
+.PHONY : sudoku_solver_autogen/mocs_compilation.cpp.o
+
+sudoku_solver_autogen/mocs_compilation.i: sudoku_solver_autogen/mocs_compilation.cpp.i
+.PHONY : sudoku_solver_autogen/mocs_compilation.i
+
+# target to preprocess a source file
+sudoku_solver_autogen/mocs_compilation.cpp.i:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/sudoku_solver_autogen/mocs_compilation.cpp.i
+.PHONY : sudoku_solver_autogen/mocs_compilation.cpp.i
+
+sudoku_solver_autogen/mocs_compilation.s: sudoku_solver_autogen/mocs_compilation.cpp.s
+.PHONY : sudoku_solver_autogen/mocs_compilation.s
+
+# target to generate assembly for a file
+sudoku_solver_autogen/mocs_compilation.cpp.s:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/sudoku_solver_autogen/mocs_compilation.cpp.s
+.PHONY : sudoku_solver_autogen/mocs_compilation.cpp.s
+
+window.o: window.cpp.o
+.PHONY : window.o
+
+# target to build an object file
+window.cpp.o:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/window.cpp.o
+.PHONY : window.cpp.o
+
+window.i: window.cpp.i
+.PHONY : window.i
+
+# target to preprocess a source file
+window.cpp.i:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/window.cpp.i
+.PHONY : window.cpp.i
+
+window.s: window.cpp.s
+.PHONY : window.s
+
+# target to generate assembly for a file
+window.cpp.s:
+	$(MAKE) $(MAKESILENT) -f CMakeFiles/sudoku_solver.dir/build.make CMakeFiles/sudoku_solver.dir/window.cpp.s
+.PHONY : window.cpp.s
+
+# Help Target
+help:
+	@echo "The following are some of the valid targets for this Makefile:"
+	@echo "... all (the default if no target is provided)"
+	@echo "... clean"
+	@echo "... depend"
+	@echo "... edit_cache"
+	@echo "... rebuild_cache"
+	@echo "... sudoku_solver_autogen"
+	@echo "... sudoku_solver"
+	@echo "... cell.o"
+	@echo "... cell.i"
+	@echo "... cell.s"
+	@echo "... main.o"
+	@echo "... main.i"
+	@echo "... main.s"
+	@echo "... sudoku_solver_autogen/mocs_compilation.o"
+	@echo "... sudoku_solver_autogen/mocs_compilation.i"
+	@echo "... sudoku_solver_autogen/mocs_compilation.s"
+	@echo "... window.o"
+	@echo "... window.i"
+	@echo "... window.s"
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+.PHONY : cmake_check_build_system
+