diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c647bf8..a246a07 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -5,14 +5,9 @@ on:
   # manual trigger
   workflow_dispatch:
     inputs:
-      ssh_debug_enabled:
+      debug_enabled:
         type: boolean
-        description: 'Run the build/test with ssh debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
-        required: false
-        default: false
-      debug_deployment:
-        type: boolean
-        description: 'Run the pipeline with debug deployment enabled'
+        description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
         required: false
         default: false
 
@@ -67,6 +62,7 @@ jobs:
       fail-fast: false
       matrix:
         language: [ 'java', 'javascript' ]
+      
       #   # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
       #   # Use only 'java' to analyze code written in Java, Kotlin or both
       #   # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
@@ -92,7 +88,7 @@ jobs:
       # runnning code scanning with CodeQL. Link to the documentation - https://docs.github.com/en/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning
       # first step is to initialize CodeQL
       - name: Initialize CodeQL
-        uses: github/codeql-action/init@v3
+        uses: github/codeql-action/init@v2
         with:
           languages: ${{ matrix.language }} # defining the language for the CodeQL analysis
           # debug: true # uncomment this line to enable debugging for CodeQL analysis step
@@ -107,11 +103,11 @@ jobs:
       # Autobuild attempts to build any compiled languages  (C/C++, C#, Go, or Java).
       # If this step fails, then you should remove it and run the build manually (see below)
       - name: Autobuild
-        uses: github/codeql-action/autobuild@v3
+        uses: github/codeql-action/autobuild@v2
       
       # performing Code Quality Analysis with CodeQL. Link to the documentation - https://docs.github.com/en/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning
       - name: Perform CodeQL Analysis
-        uses: github/codeql-action/analyze@v3
+        uses: github/codeql-action/analyze@v2
         with:
           category: "/language:${{matrix.language}}" # defining the language for the CodeQL analysis
       
@@ -239,7 +235,7 @@ jobs:
         id: split-tests
         name: Split tests
         with:
-          glob: src/test/**/**/*.java # glob pattern to match the test files
+          glob: src/test/**/**/**.java # glob pattern to match the test files
           split-total: ${{ env.total-runners }} # total number of github-hosted runners
           split-index: ${{ matrix.runner-index }} # current runner index
           junit-path: test_results/**/*xml # path to the junit test results with wildcards to match all the files
@@ -260,6 +256,7 @@ jobs:
           name: testresults-${{ github.run_id }}-split-${{ matrix.runner-index }} # naming the artifact with the test results
           path: ./target/surefire-reports # path to the test results
           retention-days: 90 # retention period for the artifact in days. Link to the documentation - https://docs.github.com/en/actions/guides/storing-workflow-data-as-artifacts#about-workflow-artifact-retention
+
   
   publish-test-results:
     needs: [build, unit-parallel-tests]
@@ -361,5 +358,4 @@ jobs:
     with:
       # with tag from the build-and-publish-docker-image job in the output_tags step
       image_tag: "${{ needs.build-and-publish-docker-image.outputs.image_tag }}"
-      debug: "${{ github.event.inputs.debug_deployment }}"
     secrets: inherit
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 59384d5..875022b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -136,6 +136,12 @@
 			spring-data-commons
 		
 
+		
+			org.springframework.security
+			spring-security-core
+			5.7.0
+		
+
 
 	
 	
diff --git a/src/main/java/net/codejava/SalesDAO.java b/src/main/java/net/codejava/SalesDAO.java
index c3e6029..3d2ea41 100755
--- a/src/main/java/net/codejava/SalesDAO.java
+++ b/src/main/java/net/codejava/SalesDAO.java
@@ -30,38 +30,9 @@ public List list(int limit, int offset) {
 		return listSale;
 	}
 
-	public void save(Sale sale) throws DuplicateKeyException {
-		try {
-			System.out.println(sale); // log the Sale object
-	
-			if (sale == null) {
-				throw new IllegalArgumentException("Sale object cannot be null");
-			}
-	
-			if (jdbcTemplate == null) {
-				throw new IllegalStateException("JdbcTemplate cannot be null");
-			}
-			// Check if a record with the same primary key already exists
-			int count = jdbcTemplate.queryForObject(
-				"SELECT COUNT(*) FROM sales WHERE serial_number = ?", Integer.class, sale.getSerialNumber());
-	
-			if (count > 0) {
-				// If such a record exists, throw an exception
-				throw new DuplicateKeyException("A record with the same serial number already exists.");
-			}
-	
-			// If no such record exists, insert the new record
-			SimpleJdbcInsert insertActor = 
-				new SimpleJdbcInsert(jdbcTemplate != null ? jdbcTemplate : new JdbcTemplate());
-			insertActor.withTableName("sales").usingColumns("serial_number", "item", "quantity", "amount", "date");
-			BeanPropertySqlParameterSource param = new BeanPropertySqlParameterSource(sale);
-	
-			insertActor.execute(param);
-		} catch (DuplicateKeyException e) {
-			throw e; // rethrow the exception to be handled by the caller
-		} catch (Exception e) {
-			e.printStackTrace(); // log any other exceptions
-		}
+	public void save(Sale sale) {
+		String sql = "INSERT INTO SALES (item, quantity, amount) VALUES ('" + sale.getItem() + "', " + sale.getQuantity() + ", " + sale.getAmount() + ")";
+		jdbcTemplate.update(sql);
 	}
 
 	public Sale get(String serialNumber) {
@@ -118,7 +89,7 @@ public Page findAll(Pageable pageable) {
 		return new PageImpl<>(sales, pageable, total);
 	}
 
-	// a method to returns a list of all sales in a jdbctemplate query to use as a csv output
+	// a method to returns a list of all sales in a jdbctemplate query to use as a csv output 
 	public List listAll() {
 		String sql = "SELECT * FROM sales ORDER BY serial_number ASC";
 		List listSale = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(Sale.class));
diff --git a/src/main/resources/static/js/styles.js b/src/main/resources/static/js/styles.js
index 1c197a2..c5eef1d 100644
--- a/src/main/resources/static/js/styles.js
+++ b/src/main/resources/static/js/styles.js
@@ -40,7 +40,7 @@ addStyles();
 let themeColors;
 if (!window.enableSearchFeature) { // Swapped the condition to check for not enabled
     themeColors = {
-        '--h1-color': '#2196F3',
+        '--h1-color': window.searchFeatureColor || '#4CAF50',
         '--th-bg-color': '#2196F3',
         '--a-color': '#2196F3',
         '--tr-bg-color': '#c2e0fb',