diff --git a/build.gradle b/build.gradle
index 7ca6e70b23247e55fec137c7a4cd8433812d93d4..45fcb47b7dee31bbaa3bdf84773eb6d13e86c62a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,7 +22,6 @@ repositories {
 }
 
 dependencies {
-
 	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
 	implementation 'org.springframework.boot:spring-boot-starter-web'
 	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
@@ -47,7 +46,6 @@ dependencies {
 //Thanks for using https://jar-download.com
 
 // https://mvnrepository.com/artifact/com.h2database/h2 // if breaks
-	testImplementation group: 'com.h2database', name: 'h2', version: '1.4.192'
 
 
 }
@@ -59,6 +57,3 @@ tasks.named('bootBuildImage') {
 tasks.named('test') {
 	useJUnitPlatform()
 }
-
-
-
diff --git a/src/main/java/Team5.Smarttowns/Data/Towns.db b/src/main/java/Team5.Smarttowns/Data/Towns.db
deleted file mode 100644
index 2532550d9acf4d8abc21a6e6ed89629908b72a3e..0000000000000000000000000000000000000000
Binary files a/src/main/java/Team5.Smarttowns/Data/Towns.db and /dev/null differ
diff --git a/src/main/java/Team5/SmartTowns/Data/Calculator.java b/src/main/java/Team5/SmartTowns/Data/Calculator.java
deleted file mode 100644
index 651aec422f60c9b2550a008255b23b46e2aa55a7..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/Calculator.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package Team5.SmartTowns.Data;
-
-public class Calculator {
-
-
-    public int divide(int i, int i1) {
-        return i / i1;
-    }
-
-    public int add(int i, int i1){
-        return i+i1;
-    }
-    public int subtract(int i, int i1){
-        return i-i1;
-    }
-
-    public int multiply(int i, int i1){
-        return i*i1;
-    }
-
-}
diff --git a/src/main/java/Team5/SmartTowns/Data/DatabaseController.java b/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
deleted file mode 100644
index b60e209ca273c738be829489f4d52d334428ca43..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/DatabaseController.java
+++ /dev/null
@@ -1,35 +0,0 @@
-//package Team5.SmartTowns.Data;
-//
-//import Team5.SmartTowns.users.User;
-//import Team5.SmartTowns.users.UserRepository;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.stereotype.Controller;
-//import org.springframework.web.bind.annotation.GetMapping;
-//import org.springframework.web.servlet.ModelAndView;
-//
-//import java.util.*;
-//@Controller
-//public class DatabaseController {
-//
-//
-//    @Autowired
-//    private LocationRepository LocationRepository;
-//    @Autowired
-//    private trailsRepository trailsRepository;
-//
-//
-//    @GetMapping("/trailList")
-//    public ModelAndView trailList() {
-//        ModelAndView mav1 = new ModelAndView("towns/trailsData");
-//        List<trail> trail = trailsRepository.getAllTrails();
-//        mav1.addObject("trails", trail);
-//        return mav1;
-//    }
-//    @GetMapping("locationList")
-//    public ModelAndView locationList(){
-//        ModelAndView mav2 = new ModelAndView("towns/locationData");
-//        List<Location> Locations = LocationRepository.getAllLocation();
-//        mav2.addObject("location", Locations);
-//        return mav2;
-//    }
-//}
diff --git a/src/main/java/Team5/SmartTowns/Data/LocationRepository.java b/src/main/java/Team5/SmartTowns/Data/LocationRepository.java
deleted file mode 100644
index 4a3e8588ff33ac58f246a2c7be46fbd9d1a78f89..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/LocationRepository.java
+++ /dev/null
@@ -1,12 +0,0 @@
-//Holds locations data repository (landmarks)
-package Team5.SmartTowns.Data;
-
-import java.util.List;
-
-
-public interface LocationRepository {
-    List<Location> getAllLocation();
-    void addLocation(Location loc);
-
-
-}
diff --git a/src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
deleted file mode 100644
index cfbc7344115da107cfddcb090b2668cd8f3598b6..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+++ /dev/null
@@ -1,61 +0,0 @@
-//Implements the locations repository using JDBC
-package Team5.SmartTowns.Data;
-
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Repository;
-
-import javax.sql.DataSource;
-import java.util.List;
-
-@Repository
-public class LocationRepositoryJDBC implements LocationRepository {
-    private JdbcTemplate jdbc;
-    private RowMapper<Location> locationMapper;
-
-    public LocationRepositoryJDBC(JdbcTemplate aJdbc) {
-        this.jdbc = aJdbc;
-        setlocationMapper();
-    }
-    private void setlocationMapper(){
-        locationMapper = (rs, i) -> new Location(
-
-                rs.getString("locationName"),
-                rs.getString("locationEmail"),
-                rs.getString("locationDescription"),
-                rs.getString("locationPlace"),
-                rs.getInt("locationTrailID")
-        );
-    }
-    public String getCountOfEmployees() {
-        return jdbc.queryForObject("SELECT COUNT(*) FROM locations",String.class);
-    }
-
-    public List<Location> getAllLocation2(JdbcTemplate aJdbc){
-        String sql= "SELECT * FROM locations";
-        return aJdbc.query(sql, locationMapper);
-    }
-    public List<Location> getAllLocation(){
-        String sql= "SELECT * FROM locations";
-        return jdbc.query(sql, locationMapper);
-    }
-
-    @Override // intended implementation at current: user data from templates/Landmarks/LandmarkFormTh.html is added to the Location table
-    public void addLocation(Location loc) {
-        String sql = "insert into locations( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) values (?,?,?,?,?)";
-
-        jdbc.update(sql,loc.getLocationName(),loc.getLocationEmail(),loc.getLocationDescription(),loc.getLocationPlace(),loc.getLocationTrailID());
-    }
-
-
-    public void setDataSource(DataSource dataSource) {
-        jdbc = new JdbcTemplate(dataSource);
-    }
-
-    public LocationRepositoryJDBC() {
-    }
-
-    public void setJdbc(JdbcTemplate jdbc) {
-        this.jdbc = jdbc;
-    }
-}
diff --git a/src/main/java/Team5/SmartTowns/Data/Main.java b/src/main/java/Team5/SmartTowns/Data/Main.java
deleted file mode 100644
index 24bd503ecdd2af87ed42372600ddd6b742c74b4a..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/Main.java
+++ /dev/null
@@ -1,16 +0,0 @@
-//package Team5.SmartTowns.Data;
-//
-//import org.springframework.beans.factory.annotation.Autowired;
-//
-//import java.util.List;
-//
-//public class Main {
-//    @Autowired
-//    private LocationRepository LocationRepository;
-//    List<Location> approvedNumber= LocationRepository.approvedLocations();
-//    public static void main(String[] args) {
-//        for (Location loc: approvedNumber){}
-//
-//
-//    }
-//}
diff --git a/src/main/java/Team5/SmartTowns/Data/MockUser.java b/src/main/java/Team5/SmartTowns/Data/MockUser.java
deleted file mode 100644
index 0e9a4e253490247c45b9bdf80d4121f30572b4ac..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/MockUser.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package Team5.SmartTowns.Data;
-
-import Team5.SmartTowns.trails.Trail;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-
-import java.util.List;
-
-public class MockUser {
-
-    private JdbcTemplate jdbc;
-    private RowMapper<Trail> trailMapper;
-    public List<Trail> getAllTrails(){
-        String sql= "SELECT * FROM trails";
-        return jdbc.query(sql, trailMapper);
-    }
-}
diff --git a/src/main/java/Team5/SmartTowns/Data/QRCodes.java b/src/main/java/Team5/SmartTowns/Data/QRCodes.java
deleted file mode 100644
index ef350eb418b959e1069ee51d061471448c3b7457..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/QRCodes.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package Team5.SmartTowns.Data;
-
-public class QRCodes {
-}
diff --git a/src/main/java/Team5/SmartTowns/Data/trailsRepository.java b/src/main/java/Team5/SmartTowns/Data/trailsRepository.java
deleted file mode 100644
index eee8c92924a6e96b5d6e324b7501f7133f7d0f82..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Data/trailsRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-//Holds trails data repository
-package Team5.SmartTowns.Data;
-
-import java.util.List;
-
-public interface trailsRepository {
-    List<trail> getAllTrails();
-}
\ No newline at end of file
diff --git a/src/main/java/Team5/SmartTowns/Towns/TownStorage.java b/src/main/java/Team5/SmartTowns/Towns/TownStorage.java
deleted file mode 100644
index d2d99ea992086630324fa131ad5bb410acd3c425..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/Towns/TownStorage.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package Team5.SmartTowns.Towns;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class TownStorage {
-    private List<Towns> townList;
-    private static TownStorage singleton;
-
-    TownStorage() {
-        townList = new ArrayList<>();
-        townList.addAll(
-          List.of(
-                  new Towns("Caerphilly",01,3,70,"/images/CaerphillyCastle.jpg"),
-                  new Towns("Risca",02,2,34,"/images/RiscaBanner.jpg"),
-                  new Towns("Penarth",03,5,0,"/images/PenarthBanner.jpg"),
-                  new Towns("Penarth",03,5,50,"/images/PenarthBanner.jpg"),
-                  new Towns("Caerphilly",01,3,70,"/images/CaerphillyCastle.jpg"),
-                  new Towns("Risca",02,2,90,"/images/RiscaBanner.jpg"),
-                  new Towns("Penarth",03,5,100,"/images/PenarthBanner.jpg")
-
-
-
-          )
-
-        );
-
-    }
-    public static TownStorage getInstance() {
-        if (singleton == null) {
-            singleton = new TownStorage();
-
-        }
-        return singleton;
-    }
-
-    public List<Towns> getTownList() {
-        return townList;
-    }
-
-
-
-
-}
diff --git a/src/main/java/Team5/SmartTowns/data/DatabaseController.java b/src/main/java/Team5/SmartTowns/data/DatabaseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..c93f4b28096b507eccf0d4b44aecdb856486ac04
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/data/DatabaseController.java
@@ -0,0 +1,86 @@
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/DatabaseController.java
+//package Team5.SmartTowns.Data;
+//
+//import Team5.SmartTowns.users.User;
+//import Team5.SmartTowns.users.UserRepository;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Controller;
+//import org.springframework.web.bind.annotation.GetMapping;
+//import org.springframework.web.servlet.ModelAndView;
+//
+//import java.util.*;
+//@Controller
+//public class DatabaseController {
+//
+//
+//    @Autowired
+//    private LocationRepository LocationRepository;
+//    @Autowired
+//    private trailsRepository trailsRepository;
+//
+//
+//    @GetMapping("/trailList")
+//    public ModelAndView trailList() {
+//        ModelAndView mav1 = new ModelAndView("towns/trailsData");
+//        List<trail> trail = trailsRepository.getAllTrails();
+//        mav1.addObject("trails", trail);
+//        return mav1;
+//    }
+//    @GetMapping("locationList")
+//    public ModelAndView locationList(){
+//        ModelAndView mav2 = new ModelAndView("towns/locationData");
+//        List<Location> Locations = LocationRepository.getAllLocation();
+//        mav2.addObject("location", Locations);
+//        return mav2;
+//    }
+//}
+=======
+package Team5.SmartTowns.data;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.util.*;
+
+@Controller
+public class DatabaseController {
+
+    @Autowired
+    private LocationRepository locationRepository;
+    @Autowired
+    private TrailsRepository trailsRepository;
+
+    @GetMapping("/trailList")
+    public ModelAndView trailList() {
+        ModelAndView mav1 = new ModelAndView("towns/trailsData");
+        List<Trail> trail = trailsRepository.getAllTrails();
+        mav1.addObject("trails", trail);
+        return mav1;
+    }
+    @GetMapping("locationList")
+    public ModelAndView locationList(){
+        ModelAndView mav2 = new ModelAndView("towns/locationData");
+        List<Location> Locations = locationRepository.getAllLocation();
+        mav2.addObject("location", Locations);
+        return mav2;
+    }
+
+//
+//    public List<Location> approvedLocations(){
+//        List<Location> locations = locationRepository.getAllLocation();
+//        List<Location> locationApprovalList;
+////		for (int i=0;i<locations.size();i++){
+////			location
+//        for (Location loc :locations){
+//            if (loc.isLocationApproved()) {
+//                locationApprovalList.add(loc);
+//            }
+//        } return locationApprovalList;
+//    }
+}
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/DatabaseController.java
diff --git a/src/main/java/Team5/SmartTowns/Data/Location.java b/src/main/java/Team5/SmartTowns/data/Location.java
similarity index 71%
rename from src/main/java/Team5/SmartTowns/Data/Location.java
rename to src/main/java/Team5/SmartTowns/data/Location.java
index 7ec4ede38d187bb5b6a667662b7cf7241661defe..7fd2de0c1d0295a2c0af26372e233abfee2291a8 100644
--- a/src/main/java/Team5/SmartTowns/Data/Location.java
+++ b/src/main/java/Team5/SmartTowns/data/Location.java
@@ -1,5 +1,5 @@
 //Holds variable data for the locations table (landmarks)
-package Team5.SmartTowns.Data;
+package Team5.SmartTowns.data;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -16,7 +16,15 @@ public class Location {
     private String locationPlace;
     private int locationTrailID;
 
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/Location.java
 
+=======
+    private boolean locationApproved;
+
+    public Location() {
+
+    }
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/Location.java
 
     @Override
     public String toString() {
@@ -26,6 +34,7 @@ public class Location {
                  locationDescription + '\'' +
                  locationPlace + '\'' +
                  locationTrailID +
+                locationApproved+
                 '}';
     }
 
@@ -49,10 +58,15 @@ public class Location {
         return locationTrailID;
     }
 
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/Location.java
 
 
     public int testMe(){
         int a=4;
         return 4;
+=======
+    public boolean isLocationApproved() {
+        return locationApproved;
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/Location.java
     }
 }
diff --git a/src/main/java/Team5/SmartTowns/data/LocationRepository.java b/src/main/java/Team5/SmartTowns/data/LocationRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d77f923525ba9509db32677925c94536e690765
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/data/LocationRepository.java
@@ -0,0 +1,29 @@
+//Holds locations data repository (landmarks)
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepository.java
+package Team5.SmartTowns.Data;
+=======
+package Team5.SmartTowns.data;
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepository.java
+
+import java.util.List;
+
+
+public interface LocationRepository {
+    List<Location> getAllLocation();
+    void addLocation(Location loc);
+
+
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepository.java
+=======
+    List<Location> getApprovedLocations();
+
+//    List<Location> getApprovedLocations2(List<Location> list);
+
+    List<Location> getUnapprovedLocations();
+
+
+//     List<Location> approvedLocations();
+
+
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepository.java
+}
diff --git a/src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
new file mode 100644
index 0000000000000000000000000000000000000000..4a1a0108d5713ff95bd69877a9da500fa4ddec49
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
@@ -0,0 +1,154 @@
+//Implements the locations repository using JDBC
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+package Team5.SmartTowns.Data;
+=======
+package Team5.SmartTowns.data;
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+import javax.sql.DataSource;
+=======
+import java.util.ArrayList;
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+import java.util.List;
+
+@Repository
+public class LocationRepositoryJDBC implements LocationRepository {
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+    private JdbcTemplate jdbc;
+=======
+   private JdbcTemplate jdbc;
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+    private RowMapper<Location> locationMapper;
+
+    public LocationRepositoryJDBC(JdbcTemplate aJdbc) {
+        this.jdbc = aJdbc;
+        setlocationMapper();
+    }
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+=======
+
+//    public LocationRepositoryJDBC() {
+//        JdbcTemplate ajdbc = new JdbcTemplate();
+//        this.jdbc =ajdbc;
+//        setlocationMapper();
+//
+//    }
+
+
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+    private void setlocationMapper(){
+        locationMapper = (rs, i) -> new Location(
+
+                rs.getString("locationName"),
+                rs.getString("locationEmail"),
+                rs.getString("locationDescription"),
+                rs.getString("locationPlace"),
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+                rs.getInt("locationTrailID")
+        );
+    }
+    public String getCountOfEmployees() {
+        return jdbc.queryForObject("SELECT COUNT(*) FROM locations",String.class);
+    }
+
+    public List<Location> getAllLocation2(JdbcTemplate aJdbc){
+        String sql= "SELECT * FROM locations";
+        return aJdbc.query(sql, locationMapper);
+    }
+=======
+                rs.getInt("locationTrailID"),
+                rs.getBoolean("locationApproved")
+        );
+    }
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+    public List<Location> getAllLocation(){
+        String sql= "SELECT * FROM locations";
+        return jdbc.query(sql, locationMapper);
+    }
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+
+    @Override // intended implementation at current: user data from templates/Landmarks/LandmarkFormTh.html is added to the Location table
+    public void addLocation(Location loc) {
+        String sql = "insert into locations( locationName , locationEmail,locationDescription,locationPlace, locationTrailID) values (?,?,?,?,?)";
+=======
+//    public LocationRepositoryJDBC() {
+//        JdbcTemplate ajdbc = new JdbcTemplate();
+//        this.jdbc =ajdbc;
+//        setlocationMapper();
+//
+//    }
+//    public LocationRepositoryJDBC(JdbcTemplate jdbc, RowMapper<Location> locationMapper) {
+//        this.jdbc = jdbc;
+//        this.locationMapper = locationMapper;
+//    }
+
+    @Override // intended implementation at current: user data from templates/Landmarks/LandmarkFormTh.html is added to the Location table
+    public void addLocation(Location loc) {
+        String sql = "insert into locations( locationName , locationEmail,locationDescription,locationPlace, locationTrailID, locationApproved) values (?,?,?,?,?,?)";
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+
+        jdbc.update(sql,loc.getLocationName(),loc.getLocationEmail(),loc.getLocationDescription(),loc.getLocationPlace(),loc.getLocationTrailID());
+    }
+
+<<<<<<< HEAD:src/main/java/Team5/SmartTowns/Data/LocationRepositoryJDBC.java
+
+    public void setDataSource(DataSource dataSource) {
+        jdbc = new JdbcTemplate(dataSource);
+    }
+
+    public LocationRepositoryJDBC() {
+    }
+
+    public void setJdbc(JdbcTemplate jdbc) {
+        this.jdbc = jdbc;
+    }
+=======
+    @Override
+    public List<Location> getApprovedLocations(){
+        JdbcTemplate jdbc = new JdbcTemplate();
+        List<Location> locations = new LocationRepositoryJDBC(jdbc).getAllLocation();
+        List<Location> locationApprovalList= new ArrayList<Location>();
+        for (Location loc :locations){
+            if (loc.isLocationApproved()) {
+                locationApprovalList.add(loc);
+            }
+        } return locationApprovalList;
+ }
+//
+//    @Override
+//    public List<Location> getApprovedLocations2(List<Location> list){
+//
+//        List<Location> locationApprovalList= new ArrayList<Location>();
+//        for (Location loc :list){
+//            if (loc.isLocationApproved()) {
+//                locationApprovalList.add(loc);
+//            }
+//        } return locationApprovalList;
+//    }
+//
+
+
+    @Override
+    public List<Location> getUnapprovedLocations(){
+        List<Location> locations = getAllLocation();
+        List<Location> locationUnapprovedList= new ArrayList<Location>();
+        for (Location loc :locations){
+            if (!loc.isLocationApproved()) {
+                locationUnapprovedList.add(loc);
+            }
+        } return locationUnapprovedList;
+    }
+
+
+//    public JdbcTemplate getJdbc() {
+//        return jdbc;
+//    }
+
+
+>>>>>>> main:src/main/java/Team5/SmartTowns/data/LocationRepositoryJDBC.java
+}
diff --git a/src/main/java/Team5/SmartTowns/Data/Town.java b/src/main/java/Team5/SmartTowns/data/Town.java
similarity index 100%
rename from src/main/java/Team5/SmartTowns/Data/Town.java
rename to src/main/java/Team5/SmartTowns/data/Town.java
diff --git a/src/main/java/Team5/SmartTowns/Data/TownRepository.java b/src/main/java/Team5/SmartTowns/data/TownRepository.java
similarity index 100%
rename from src/main/java/Team5/SmartTowns/Data/TownRepository.java
rename to src/main/java/Team5/SmartTowns/data/TownRepository.java
diff --git a/src/main/java/Team5/SmartTowns/Data/TownRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/data/TownRepositoryJDBC.java
similarity index 100%
rename from src/main/java/Team5/SmartTowns/Data/TownRepositoryJDBC.java
rename to src/main/java/Team5/SmartTowns/data/TownRepositoryJDBC.java
diff --git a/src/main/java/Team5/SmartTowns/Data/trail.java b/src/main/java/Team5/SmartTowns/data/Trail.java
similarity index 69%
rename from src/main/java/Team5/SmartTowns/Data/trail.java
rename to src/main/java/Team5/SmartTowns/data/Trail.java
index 86e78b96712ecf7a5756edbf20a4bae35839ca70..61ab540fce97c94b709c888e3c261db35c318849 100644
--- a/src/main/java/Team5/SmartTowns/Data/trail.java
+++ b/src/main/java/Team5/SmartTowns/data/Trail.java
@@ -1,12 +1,13 @@
 //Holds variable data for the trails table
-package Team5.SmartTowns.Data;
+package Team5.SmartTowns.data;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
 
 @Data
 @AllArgsConstructor
-public class trail {
+public class Trail {
     private int trailsId;
     private String name;
+    private Boolean tru;
 }
diff --git a/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/data/TrailsRepositoryJDBC.java
similarity index 59%
rename from src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
rename to src/main/java/Team5/SmartTowns/data/TrailsRepositoryJDBC.java
index 58aa84a95b00b8f8b5d7f97d240e04f405d2ac3b..0bb20867153d77c2fd47f3e031bf63c7c1fdac7e 100644
--- a/src/main/java/Team5/SmartTowns/Data/trailsRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/data/TrailsRepositoryJDBC.java
@@ -1,5 +1,5 @@
 //Implements the trails repository using JDBC
-package Team5.SmartTowns.Data;
+package Team5.SmartTowns.data;
 
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
@@ -8,20 +8,21 @@ import org.springframework.stereotype.Repository;
 import java.util.List;
 
 @Repository
-public class trailsRepositoryJDBC implements trailsRepository{
+public class TrailsRepositoryJDBC implements TrailsRepository {
     private JdbcTemplate jdbc;
-    private RowMapper<trail> trailMapper;
-        public trailsRepositoryJDBC(JdbcTemplate aJdbc){
+    private RowMapper<Trail> trailMapper;
+        public TrailsRepositoryJDBC(JdbcTemplate aJdbc){
         this.jdbc = aJdbc;
         settrailsMapper();
     }
     private void settrailsMapper(){
-        trailMapper = (rs, i) -> new trail(
+        trailMapper = (rs, i) -> new Trail(
                 rs.getInt("trailID"),
-                rs.getString("name")
+                rs.getString("name"),
+                rs.getBoolean("tru")
         );
     }
-    public List<trail> getAllTrails(){
+    public List<Trail> getAllTrails(){
         String sql= "SELECT * FROM trails";
         return jdbc.query(sql, trailMapper);
     }
diff --git a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java b/src/main/java/Team5/SmartTowns/landmarks/Landmarks.java
similarity index 89%
rename from src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
rename to src/main/java/Team5/SmartTowns/landmarks/Landmarks.java
index f9ceacf15728a5f7cdf9b36c2577dbb1aa0c7624..6974c1e997c5b2dd6d7396f44ea0cbe4565331c7 100644
--- a/src/main/java/Team5/SmartTowns/Landmarks/Landmarks.java
+++ b/src/main/java/Team5/SmartTowns/landmarks/Landmarks.java
@@ -1,8 +1,6 @@
-package Team5.SmartTowns.Landmarks;
+package Team5.SmartTowns.landmarks;
 
-import Team5.SmartTowns.trails.Trail;
 import jakarta.validation.constraints.Email;
-import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotEmpty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -18,7 +16,7 @@ public class Landmarks {
     // Initialized object to getID from trail.
 
     //Predefined Landmark for Dragons Tale.
-    private static List<Landmarks> landmarksDragonstrail = List.of(
+    public static List<Landmarks> landmarksDragonstrail = List.of(
             new Landmarks( 1, "A scent of...Dragon", "The Dragon has been spotted near by, find the QR code to continue" , "Start your discovery, at the sweet shop."),
             new Landmarks( 2, "They've been found!", "Don't let them escape, find the next QR code to continue!", "Location test")
     );
@@ -43,6 +41,4 @@ public class Landmarks {
         this.landmarkName = landmarkName;
         this.landmarkDescription = landmarkDescription;
         this.landmarkLocation = landmarkLocation;    }
-
-
 }
diff --git a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java b/src/main/java/Team5/SmartTowns/landmarks/LandmarksController.java
similarity index 90%
rename from src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java
rename to src/main/java/Team5/SmartTowns/landmarks/LandmarksController.java
index dc963c2b57a150b83dcbd37cfc15470cbf414205..d5d326cdb733339ff3c3ab298090776af9036fc3 100644
--- a/src/main/java/Team5/SmartTowns/Landmarks/LandmarksController.java
+++ b/src/main/java/Team5/SmartTowns/landmarks/LandmarksController.java
@@ -1,7 +1,7 @@
-package Team5.SmartTowns.Landmarks;
+package Team5.SmartTowns.landmarks;
 
-import Team5.SmartTowns.Data.Location;
-import Team5.SmartTowns.Data.LocationRepository;
+import Team5.SmartTowns.data.Location;
+import Team5.SmartTowns.data.LocationRepository;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -37,7 +37,7 @@ public class LandmarksController {
 
         } else{
             // converts valid response using Location constructor into a submittable format to the sql table
-            Location loc= new Location(landmarks.getLandmarkName(), landmarks.getLandmarkEmail(), landmarks.getLandmarkDescription(), landmarks.getLandmarkLocation(), landmarks.getTrailID());
+            Location loc= new Location(landmarks.getLandmarkName(), landmarks.getLandmarkEmail(), landmarks.getLandmarkDescription(), landmarks.getLandmarkLocation(), landmarks.getTrailID(), false);
             System.out.println(loc);
             locationRepository.addLocation(loc); // adds valid landmark to locations table
             ModelAndView modelAndView = new ModelAndView("redirect:/home");
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java
index 4bcd7ad952f844add8bd89cbd1d181d07efc714f..349adc85e3752bd0f523750e2b5bc8dff25f6e76 100644
--- a/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java
@@ -2,12 +2,14 @@ package Team5.SmartTowns.placeswithcoordinates;
 
 
 
-import Team5.SmartTowns.Data.Location;
-import Team5.SmartTowns.Data.LocationRepositoryJDBC;
+import Team5.SmartTowns.data.Location;
+import Team5.SmartTowns.data.LocationRepositoryJDBC;
 import lombok.AllArgsConstructor;
+import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.springframework.jdbc.core.JdbcTemplate;
 
+import java.text.DecimalFormat;
 import java.util.List;
 
 //@Data
@@ -91,10 +93,10 @@ public class LocationsCoordinates {
 //        return new LocationRepositoryJDBC(jdbcSuper).getApprovedLocations();
 //    }
 
-//    public List<Location> getFullUnapprovedLocations(JdbcTemplate aJdbc){
-////        LocationsCoordinates jdbcSuper= new LocationsCoordinates(aJdbc);
-//        return new LocationRepositoryJDBC(aJdbc).getUnapprovedLocations();
-//    }
+    public List<Location> getFullUnapprovedLocations(JdbcTemplate aJdbc){
+//        LocationsCoordinates jdbcSuper= new LocationsCoordinates(aJdbc);
+        return new LocationRepositoryJDBC(aJdbc).getUnapprovedLocations();
+    }
 
 
 
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesController.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesController.java
index 8a497dd4b003a2df4a949680fc2ddc31035a93f9..8d142f83569aa8816ea8d9d1b32c6b795ab96c00 100644
--- a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesController.java
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesController.java
@@ -1,7 +1,7 @@
 package Team5.SmartTowns.placeswithcoordinates;
 
-import Team5.SmartTowns.Data.Location;
-import Team5.SmartTowns.Data.LocationRepository;
+import Team5.SmartTowns.data.Location;
+import Team5.SmartTowns.data.LocationRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java
index 0e091de02fec89d86e185129318a2e073fec0c9e..a5e03d93ab75a20f3c380ca5c1b3d11c6f0b5807 100644
--- a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java
@@ -1,6 +1,6 @@
 package Team5.SmartTowns.placeswithcoordinates;
 
-import Team5.SmartTowns.Data.Location;
+import Team5.SmartTowns.data.Location;
 import org.springframework.jdbc.core.JdbcTemplate;
 
 import java.util.List;
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java
index 4cd83b25736d6fa5c135b44e2810758a47c7a2bd..dfca28ecd791d6ec0dc2a3040bc62274c07ff8c3 100644
--- a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java
@@ -1,7 +1,8 @@
 package Team5.SmartTowns.placeswithcoordinates;
 
-import Team5.SmartTowns.Data.Location;
-import Team5.SmartTowns.Data.LocationRepositoryJDBC;
+import Team5.SmartTowns.data.Location;
+import Team5.SmartTowns.data.LocationRepositoryJDBC;
+import org.springframework.boot.autoconfigure.integration.IntegrationProperties;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Repository;
@@ -73,16 +74,16 @@ public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesReposit
     }
 
 
-//    public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc) {
-////        LocationsCoordinates jdbcSuper= new LocationsCoordinates(aJdbc);
-//        return new LocationRepositoryJDBC(aJdbc).getApprovedLocations();
-//    }
-
-    @Override //TODO CHECK
     public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc) {
-        return null;
+//        LocationsCoordinates jdbcSuper= new LocationsCoordinates(aJdbc);
+        return new LocationRepositoryJDBC(aJdbc).getApprovedLocations();
     }
 
+//    @Override //TODO CHECK
+//    public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc) {
+//        return null;
+//    }
+
 
     public boolean checkInputtedCoordsMatchTown(String inpLatCoords, String inpLongCoords, String townName){
      PlacesCoordinatesRepositoryJDBC jbdcsecond = new PlacesCoordinatesRepositoryJDBC(jdbc);
diff --git a/src/main/java/Team5/SmartTowns/rewards/Badge.java b/src/main/java/Team5/SmartTowns/rewards/Badge.java
index 25c231e14e3f0afdd4ecfc2d6e9f352925224097..976238804f5686bfd77e2bd028f7cc79ecf18698 100644
--- a/src/main/java/Team5/SmartTowns/rewards/Badge.java
+++ b/src/main/java/Team5/SmartTowns/rewards/Badge.java
@@ -1,51 +1,26 @@
 /*AUTHOR: Gabriel Copat*/
 package Team5.SmartTowns.rewards;
 
-import lombok.Data;
+import lombok.Getter;
 
-import java.io.File;
-import java.util.Objects;
 
-@Data
-public class Badge {
+@Getter
+public class Badge extends Reward {
     /* Badges can be earned by completing certain goals.
      * They are displayed in the user profile page
      *
      * For example, one might earn a badge after visiting 20 locations */
+    static final String DEFAULT_IMAGE = "0.png";
 
-    int id;
-    String name;
-    String description;
-    String imgPath;
     int difficulty; //1-5
 
     public Badge(int id, String name, String description, int difficulty) {
-        this.id = id;
-        this.name = name;
-        this.description = description;
+        super(id, name, description);
         this.difficulty = difficulty;
-        imgPath = findImagePath();
-    }
-
-    private String findImagePath(){
-        /* Finds the image in the Path folder, if image is not found assigns default image */
-        String imgPath = "images/rewards/badges/" + id + ".jpg";
-        String notFoundPath = "/images/rewards/badges/0.png";
-
-        File imgFile = new File("src/main/resources/static/" + imgPath);
-        return imgFile.exists() ? imgPath : notFoundPath;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        Badge badge = (Badge) o;
-        return id == badge.id && Objects.equals(name, badge.name);
     }
 
     @Override
-    public int hashCode() {
-        return Objects.hash(id, name);
+    public String getImgFolder() {
+        return "badges";
     }
 }
diff --git a/src/main/java/Team5/SmartTowns/rewards/BadgesRepository.java b/src/main/java/Team5/SmartTowns/rewards/BadgesRepository.java
deleted file mode 100644
index 56b1019cbe016a7c687b5ac83973679e8f498eef..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/rewards/BadgesRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-//Holds locations data repository
-package Team5.SmartTowns.rewards;
-
-import java.util.List;
-
-public interface BadgesRepository {
-    List<Badge> getAllBadges();
-}
-
diff --git a/src/main/java/Team5/SmartTowns/rewards/BadgesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/rewards/BadgesRepositoryJDBC.java
deleted file mode 100644
index 7c22061e894a633bf9c047f69f575daf9366b493..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/rewards/BadgesRepositoryJDBC.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//Implements the locations repository using JDBC
-package Team5.SmartTowns.rewards;
-
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public class BadgesRepositoryJDBC implements BadgesRepository {
-    private JdbcTemplate jdbc;
-    private RowMapper<Badge> badgeMapper;
-
-    public BadgesRepositoryJDBC(JdbcTemplate aJdbc) {
-        this.jdbc = aJdbc;
-        setBadgeMapper();
-    }
-    private void setBadgeMapper(){
-        badgeMapper = (rs, i) -> new Badge(
-                rs.getInt("badgeID"),
-                rs.getString("name"),
-                rs.getString("description"),
-                rs.getInt("difficulty")
-        );
-    }
-
-    @Override
-    public List<Badge> getAllBadges(){
-        String sql= "SELECT * FROM badges";
-        return jdbc.query(sql, badgeMapper);
-    }
-}
diff --git a/src/main/java/Team5/SmartTowns/rewards/RewardsController.java b/src/main/java/Team5/SmartTowns/rewards/RewardsController.java
deleted file mode 100644
index af9d33cba34dd12ac6aa5ca1e54320b8124af9d4..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/rewards/RewardsController.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package Team5.SmartTowns.rewards;
-
-import org.springframework.stereotype.Controller;
-
-@Controller
-public class RewardsController {
-}
diff --git a/src/main/java/Team5/SmartTowns/rewards/Sticker.java b/src/main/java/Team5/SmartTowns/rewards/Sticker.java
index 738409e1483a15be6451af7b68e677329ba19eae..7e5315c651bea73aa31572856710b21bbc25457b 100644
--- a/src/main/java/Team5/SmartTowns/rewards/Sticker.java
+++ b/src/main/java/Team5/SmartTowns/rewards/Sticker.java
@@ -1,37 +1,29 @@
 /*AUTHOR: Gabriel Copat*/
 package Team5.SmartTowns.rewards;
 
-import lombok.Data;
+import lombok.Getter;
 
-import java.io.File;
-import java.util.Objects;
 
-@Data
-public class Sticker {
-    /* Stickers are trade-able rewards, they vary in rarity and are earned at random */
+@Getter
+public class Sticker extends Reward{
+    /* Stickers are randomly earned rewards from a specific pack */
+
+    final int rarity; //1-5
+    final int packID;
 
-    int id;
-    String name;
-    String description;
-    String imgPath;
-    int rarity; //1-5
     boolean hasSticker;
 
-    public Sticker(int id, int stickerID, String name, String description, int rarity) {
-        this.id = id;
-        this.name = name;
-        this.description = description;
+
+    public Sticker(int packID, int id, String name, String description, int rarity) {
+        super(id, name, description);
         this.rarity = rarity;
-        imgPath = findImagePath();
+        this.packID = packID;
+        displayImg = super.findImagePath();
     }
 
-    private String findImagePath(){
-        /* Finds the image in the Path folder, if image is not found assigns default image */
-        String imgPath = "images/rewards/stickers/" + id + ".jpg";
-        String notFoundPath = "images/rewards/stickers/0.png";
-
-        File imgFile = new File("src/main/resources/static/" + imgPath);
-        return imgFile.exists() ? imgPath : notFoundPath;
+    @Override
+    public String getImgFolder() {
+        return "stickers/" + getPackID();
     }
 
     public boolean hasSticker(){
@@ -41,21 +33,7 @@ public class Sticker {
         this.hasSticker = hasSticker;
     }
     public String getVisibility(){
-        return hasSticker? "" : "grayedOut";
-    }
-
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        Sticker sticker = (Sticker) o;
-        return id == sticker.id && Objects.equals(name, sticker.name);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, name);
+        return hasSticker ? "gotSticker" : "grayedSticker";
     }
 }
 
diff --git a/src/main/java/Team5/SmartTowns/rewards/StickersRepository.java b/src/main/java/Team5/SmartTowns/rewards/StickersRepository.java
deleted file mode 100644
index 869c2d07353a7aa090fb7fee79b2d44feacd9b12..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/rewards/StickersRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-//Holds locations data repository
-package Team5.SmartTowns.rewards;
-
-import java.util.List;
-
-public interface StickersRepository {
-    List<Sticker> getAllStickers();
-}
-
diff --git a/src/main/java/Team5/SmartTowns/rewards/StickersRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/rewards/StickersRepositoryJDBC.java
deleted file mode 100644
index 185bd5e4eb30c9d8db0b65f3ff37241ded9b92b2..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/rewards/StickersRepositoryJDBC.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//Implements the locations repository using JDBC
-package Team5.SmartTowns.rewards;
-
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public class StickersRepositoryJDBC implements StickersRepository {
-    private JdbcTemplate jdbc;
-    private RowMapper<Sticker> stickerMapper;
-
-    public StickersRepositoryJDBC(JdbcTemplate aJdbc) {
-        this.jdbc = aJdbc;
-        setStickerMapper();
-    }
-    private void setStickerMapper(){
-        stickerMapper = (rs, i) -> new Sticker(
-                rs.getInt("stickerID"),
-                rs.getInt("stickerID"), rs.getString("name"),
-                rs.getString("description"),
-                rs.getInt("rarity")
-        );
-    }
-
-    @Override
-    public List<Sticker> getAllStickers(){
-        String sql= "SELECT * FROM stickers";
-        return jdbc.query(sql, stickerMapper);
-    }
-}
diff --git a/src/main/java/Team5/SmartTowns/Towns/TownController.java b/src/main/java/Team5/SmartTowns/towns/TownController.java
similarity index 98%
rename from src/main/java/Team5/SmartTowns/Towns/TownController.java
rename to src/main/java/Team5/SmartTowns/towns/TownController.java
index 35c479759cee8ddd3523e9616136ad419eff39f7..37758cb09f9d4e5e120d46853888f1a4178dfd38 100644
--- a/src/main/java/Team5/SmartTowns/Towns/TownController.java
+++ b/src/main/java/Team5/SmartTowns/towns/TownController.java
@@ -1,4 +1,4 @@
-package Team5.SmartTowns.Towns;
+package Team5.SmartTowns.towns;
 
 import Team5.SmartTowns.Data.Location;
 import Team5.SmartTowns.Data.Town;
diff --git a/src/main/java/Team5/SmartTowns/towns/TownStorage.java b/src/main/java/Team5/SmartTowns/towns/TownStorage.java
new file mode 100644
index 0000000000000000000000000000000000000000..988a20223b33d27fbccab94007a1efb6e3088bbb
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/towns/TownStorage.java
@@ -0,0 +1,44 @@
+package Team5.SmartTowns.towns;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TownStorage {
+    private List<Towns> townList;
+    private static TownStorage singleton;
+
+    TownStorage() {
+        townList = new ArrayList<>();
+        townList.addAll(
+          List.of(
+                  new Towns("Caerphilly",01,3,70,"/images/banners/CaerphillyCastle.jpg"),
+                  new Towns("Risca",02,2,34,"/images/banners/RiscaBanner.jpg"),
+                  new Towns("Penarth",03,5,0,"/images/banners/PenarthBanner.jpg"),
+                  new Towns("Penarth",03,5,50,"/images/banners/PenarthBanner.jpg"),
+                  new Towns("Caerphilly",01,3,70,"/images/banners/CaerphillyCastle.jpg"),
+                  new Towns("Risca",02,2,90,"/images/banners/RiscaBanner.jpg"),
+                  new Towns("Penarth",03,5,100,"/images/banners/PenarthBanner.jpg")
+
+
+
+          )
+
+        );
+
+    }
+    public static TownStorage getInstance() {
+        if (singleton == null) {
+            singleton = new TownStorage();
+
+        }
+        return singleton;
+    }
+
+    public List<Towns> getTownList() {
+        return townList;
+    }
+
+
+
+
+}
diff --git a/src/main/java/Team5/SmartTowns/Towns/Towns.java b/src/main/java/Team5/SmartTowns/towns/Towns.java
similarity index 97%
rename from src/main/java/Team5/SmartTowns/Towns/Towns.java
rename to src/main/java/Team5/SmartTowns/towns/Towns.java
index a1b103f7abf6aa4379d877c645185f2c522a25ba..ebe6fd4797c205ace803727026e64837a2af93e6 100644
--- a/src/main/java/Team5/SmartTowns/Towns/Towns.java
+++ b/src/main/java/Team5/SmartTowns/towns/Towns.java
@@ -1,4 +1,4 @@
-package Team5.SmartTowns.Towns;
+package Team5.SmartTowns.towns;
 
 import lombok.Data;
 
diff --git a/src/main/java/Team5/SmartTowns/trails/TrailsController.java b/src/main/java/Team5/SmartTowns/trails/TrailsController.java
index c91c7abb4f64270f948d4313070adf47b08c07c8..c6472019b4e17f3ff6aa4c60188ad524bfc10010 100644
--- a/src/main/java/Team5/SmartTowns/trails/TrailsController.java
+++ b/src/main/java/Team5/SmartTowns/trails/TrailsController.java
@@ -1,19 +1,19 @@
 package Team5.SmartTowns.trails;
 
 
-import Team5.SmartTowns.Landmarks.Landmarks;
+import Team5.SmartTowns.landmarks.Landmarks;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
-import static Team5.SmartTowns.Landmarks.Landmarks.getLandmarksDragonstrail;
+import static Team5.SmartTowns.landmarks.Landmarks.landmarksDragonstrail;
+
+//import static Team5.SmartTowns.Landmarks.Landmarks.landmarksDragonstrail;
 
 @Controller
 public class TrailsController {
@@ -40,21 +40,22 @@ public class TrailsController {
 
     @GetMapping("/dragonstale")
     public ModelAndView getDragonsTale(){
-        List<Landmarks> landmarksList = getLandmarksDragonstrail();
-        Landmarks landmarks = new Landmarks();
-        int listSize = landmarksList.size();
+        List<Landmarks> landmarksList = landmarksDragonstrail;
         ModelAndView modelAndView = new ModelAndView("towns/trails/dragonstale/index");
         modelAndView.addObject("landmarksList", landmarksList);
-        modelAndView.addObject("getListSize", listSize);
         return modelAndView;
     }
 
-//    @GetMapping("/dragonstale/{landmarks}")
-//    public ModelAndView getDragonstaleLandmarks(){
-//        ModelAndView modelAndView = new ModelAndView();
-//        modelAndView.addObject()
-//    }
 
+    //
+//    @GetMapping("dragonstale/{qrCode}/{id}")
+//    public String qrCodeCheck(@PathVariable Optional<String> qrCode, @PathVariable Optional<Integer> id){
+//        if (qrCode.isPresent()){
+//
+//            //Check if ID is present, if do this, if not dfo that.
+//
+//        }
+//    }
 
 }
 
diff --git a/src/main/java/Team5/SmartTowns/users/User.java b/src/main/java/Team5/SmartTowns/users/User.java
index 84887664fbee090abb68281f28b5f2b0832af9ae..4ef65c3b288f9433e37d60e8e984b869f3a8d53e 100644
--- a/src/main/java/Team5/SmartTowns/users/User.java
+++ b/src/main/java/Team5/SmartTowns/users/User.java
@@ -5,20 +5,20 @@ import Team5.SmartTowns.rewards.Sticker;
 import lombok.Data;
 
 import java.io.File;
+import java.sql.Connection;
+import java.sql.DriverManager;
 import java.util.HashMap;
 import java.util.Map;
 
 @Data
 public class User {
-
     int id;
     String email; //Validation would be done by email, since they will have that
     String name;
     String imgPath;
     int dragonProgress;
-
-    Map<Badge, Integer> badgeProgress = new HashMap<>(); // Demonstrates the progress towards a specific badge (0-100)
     Map<Sticker, Boolean> hasStickers = new HashMap<>(); // True if User has sticker (key)
+    Map<Integer, Boolean> dragonstaleLandmarkIDs = new HashMap<>(); // Storing the IDs of the landmarks associated with Dragonstale, as well as if the user has visited it before (boolean)
 
     public User(int id, String email, String name, int dragonProgress) {
         this.id = id;
@@ -27,7 +27,12 @@ public class User {
         this.dragonProgress = dragonProgress;
         imgPath = findImagePath();
     }
-
+    public User(int id, String email, String name) {
+        this.id = id;
+        this.email = email;
+        this.name = name;
+        imgPath = findImagePath();
+    }
 
     private String findImagePath(){
         /* Finds the image in the Path folder, if image is not found assigns default image */
diff --git a/src/main/java/Team5/SmartTowns/users/UserController.java b/src/main/java/Team5/SmartTowns/users/UserController.java
index d635c8a401d85ef6d930142882d69b5528f38fd7..989d13b7161f783dc75bdcb9dbf379808b1584e4 100644
--- a/src/main/java/Team5/SmartTowns/users/UserController.java
+++ b/src/main/java/Team5/SmartTowns/users/UserController.java
@@ -1,10 +1,9 @@
 package Team5.SmartTowns.users;
 
 
-import Team5.SmartTowns.rewards.Badge;
-import Team5.SmartTowns.rewards.BadgesRepository;
+import Team5.SmartTowns.rewards.Pack;
+import Team5.SmartTowns.rewards.RewardsRepository;
 import Team5.SmartTowns.rewards.Sticker;
-import Team5.SmartTowns.rewards.StickersRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -12,7 +11,6 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.util.List;
-import java.util.Map;
 
 @Controller
 public class UserController {
@@ -20,13 +18,11 @@ public class UserController {
     @Autowired
     private UserRepository userRepository;
     @Autowired
-    private BadgesRepository badgesRepository;
-    @Autowired
-    private StickersRepository stickersRepository;
+    private RewardsRepository rewardsRepository;
 
     @GetMapping("/login")
     public ModelAndView getLoginPage() {
-        ModelAndView mav = new ModelAndView("rewards/login");
+        ModelAndView mav = new ModelAndView("users/login");
 //        List<User> users = userRepository.getAllUsers();
 //        mav.addObject("users", users);
         return mav;
@@ -42,21 +38,52 @@ public class UserController {
 
     @GetMapping("/user/{id}")
     public ModelAndView getUserPage(@PathVariable int id) {
-        ModelAndView mav = new ModelAndView("rewards/userProfile");
-        List<Badge> badges = badgesRepository.getAllBadges(); /*DEPRECATED FOR THE MOMENT*/
-        mav.addObject("badges", badges);
-        List<Sticker> allStickers = stickersRepository.getAllStickers();
-        List<User> users = userRepository.getAllUsers();
-        Map<Long, Boolean> userStickers = userRepository.getStickers(id);
+        ModelAndView mav = new ModelAndView("users/userProfile");
+        List<Pack> allPacks = rewardsRepository.getAllPacks();
+        mav.addObject("user", userRepository.getUserById(id));
+        mav.addObject("packs", allPacks);
 
-        for (Long stickerID : userStickers.keySet()) { //Finds and updates visibility of stickers based on what the user has
-            allStickers.stream()
-                    .filter(sticker -> sticker.getId()==stickerID)
-                    .findFirst().ifPresent(sticker -> sticker.setVisibility(userStickers.get(stickerID)));
-        }
+        mav.addAllObjects(getPackInfo(id, 1).getModelMap());
 
-        mav.addObject("user", userRepository.getUser(id));
-        mav.addObject("stickers", allStickers);
         return mav;
     }
+
+    @GetMapping("/packInfo/{userID}/{packID}")
+    public ModelAndView getPackInfo(@PathVariable int userID, @PathVariable int packID) {
+        /* Displays on page the stickers present in the pack and colour the ones the
+        *  user has acquired */
+
+        ModelAndView mav = new ModelAndView("users/userFrags :: stickersBox");
+        List<Sticker> allStickers = rewardsRepository.getAllStickersFromPack(packID);
+        List<Long> userStickers = userRepository.getUserStickersFromPack(userID, packID);
+
+
+
+        mav.addObject("stickers", setStickerVisibility(allStickers, userStickers));
+        mav.addObject("progress", getPackProgress(allStickers));
+        mav.addObject("selectedPack", rewardsRepository.findPackByID(packID));
+        return mav;
+    }
+
+    public int getPackProgress(List<Sticker> userStickers){
+        /* Returns the % of completion of given userStickers */
+        double progress = 0;
+        if (!userStickers.isEmpty()) {
+            progress = userStickers.stream().filter(Sticker::hasSticker).count();
+            progress = progress / userStickers.size();
+            progress = Math.round(progress * 100);
+        }
+        return (int) progress;
+    }
+
+    public List<Sticker> setStickerVisibility(List<Sticker> displayedStickers, List<Long> userStickers){
+        /* Makes displayedStickers which are present in userStickers visible */
+        for (Long stickerID : userStickers) {
+            displayedStickers.stream()
+                    .filter(sticker -> sticker.getId()==stickerID) //Tries to find matching id from the two lists
+                    .findFirst().ifPresent(sticker -> sticker.setVisibility(true));
+        }
+        return displayedStickers;
+    }
+
 }
diff --git a/src/main/java/Team5/SmartTowns/users/UserRepository.java b/src/main/java/Team5/SmartTowns/users/UserRepository.java
index 9f4e828f17c231179df1a9fcd6a87cc5c8cf75b6..f0f01269786128dd9afaa8d3becd5b3ada4944fa 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepository.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepository.java
@@ -2,11 +2,10 @@
 package Team5.SmartTowns.users;
 
 import java.util.List;
-import java.util.Map;
 
 public interface UserRepository {
     List<User> getAllUsers();
-//    Map<Long, Integer> getBadgeProgress(int id);
-    Map<Long, Boolean> getStickers(int id);
-    User getUser(int id);
+    List<Long> getUserStickersFromPack(int userID, int packID);
+    User getUserById(int userID);
+    boolean unlockSticker(int userID, int packID, int stickerID);
 }
diff --git a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
index 9b24461d06d300172d904272edf0cc20c51b99f0..8b46fc3a568455e91c180b66fc91b65f20d20c81 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
@@ -5,14 +5,11 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.stereotype.Repository;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 @Repository
 public class UserRepositoryJDBC implements UserRepository{
-
     private JdbcTemplate jdbc;
     private RowMapper<User> userMapper;
 
@@ -21,13 +18,11 @@ public class UserRepositoryJDBC implements UserRepository{
         setUserMapper();
     }
 
-
     private void setUserMapper(){
         userMapper = (rs, i) -> new User(
-                rs.getInt("userID"),
+                rs.getInt("id"),
                 rs.getString("email"),
-                rs.getString("name"),
-                rs.getInt("dragonProgress")
+                rs.getString("name")
         );
     }
 
@@ -37,33 +32,25 @@ public class UserRepositoryJDBC implements UserRepository{
         return jdbc.query(sql, userMapper);
     }
 
+
     @Override
-    public User getUser(int id){
-        String sql= "SELECT * FROM users WHERE userID="+id;
+    public User getUserById(int userID){
+        String sql= "SELECT * FROM users WHERE id="+userID;
         List<User> result = jdbc.query(sql, userMapper);
-        return result.get(0);
+        return result.isEmpty() ? null : result.get(0);
     }
 
     @Override
-    public Map<Long, Boolean> getStickers(int id){
-        String sql = "SELECT stickerID, hasSticker FROM stickerprogress WHERE userID=" + id;
-        List<Map<String, Object>> query = jdbc.queryForList(sql);
-        Map<Long, Boolean> progress = new HashMap<>();
-        for (Map<String, Object> result : query) {
-            progress.put((Long)result.get("stickerID"), (boolean)result.get("hasSticker"));
-        }
-        return progress;
+    public List<Long> getUserStickersFromPack(int userID, int packID) {
+        String sql = "SELECT stickerID FROM stickerprogress WHERE (userID, packID)= (" + userID + "," + packID + ")";
+        return jdbc.queryForList(sql, Long.class);
     }
 
-
-//    @Override
-//    public Map<Long, Integer> getBadgeProgress(int id){
-//        String sql = "SELECT badgeID, progress FROM badgeprogress WHERE userID=" + id;
-//        List<Map<String, Object>> query = jdbc.queryForList(sql);
-//        Map<Long, Integer> progress = new HashMap<>();
-//        for (Map<String, Object> result : query) {
-//            progress.put((Long)result.get("badgeID"), (int)result.get("progress"));
-//        }
-//        return progress;
-//    }
+    @Override
+    public boolean unlockSticker(int userID, int packID, int stickerID){
+        String sql = "INSERT INTO stickerprogress (userID, packID, stickerID) VALUES (" +
+                userID + ", " + packID + "," + stickerID + ")";
+        jdbc.update(sql);
+        return true;
+    }
 }
diff --git a/src/main/java/Team5/SmartTowns/Webpages/WebpageController.java b/src/main/java/Team5/SmartTowns/webpages/WebpageController.java
similarity index 81%
rename from src/main/java/Team5/SmartTowns/Webpages/WebpageController.java
rename to src/main/java/Team5/SmartTowns/webpages/WebpageController.java
index 37a30366e5335d1870c202d1a49b4a5d2bca474d..dcc9a14af56d65780dafcb02e92a90e3fce483a2 100644
--- a/src/main/java/Team5/SmartTowns/Webpages/WebpageController.java
+++ b/src/main/java/Team5/SmartTowns/webpages/WebpageController.java
@@ -1,4 +1,4 @@
-package Team5.SmartTowns.Webpages;
+package Team5.SmartTowns.webpages;
 
 
 import org.springframework.ui.Model;
@@ -27,6 +27,13 @@ public class WebpageController {
         return modelAndView;
     }
 
+
+    @GetMapping("/maps")
+    public ModelAndView getMapTestAPI(){
+        ModelAndView modelAndView = new ModelAndView("Towns/mapsTest/index");
+        return modelAndView;
+    }
+
 //    @GetMapping("/home")
 //    public ModelAndView getHome(){
 //        ModelAndView modelAndView = new ModelAndView("Towns/home/homePage");
@@ -34,12 +41,10 @@ public class WebpageController {
 //    }
 
 
-    @RequestMapping(value="/test_ajax_frag", method=RequestMethod.POST)
-    public String sendHtmlFragment(Model map) {
-        //map.addAttribute("foo", "bar");
-        return "fragments/temp_frags.html :: trailInfo2";
+
     }
 
 
 
-}
+
+
diff --git a/src/main/resources/QRCodeScanner.html b/src/main/resources/QRCodeScanner.html
deleted file mode 100644
index 11da0658b1421e28159c97fc5abae82030ff3630..0000000000000000000000000000000000000000
--- a/src/main/resources/QRCodeScanner.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>QR Camera</title>
-</head>
-<body>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 93f05d0c2e1c8175a69776f0f2406743ed3bb1d8..592b70f73184ea557fe68d2e5c410724e6a3e6c0 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -1,6 +1,6 @@
 delete from users;
-insert into users (email, name, dragonProgress,dragonsLandmarkIDs) value ('hannah@gmail.com', 'Hannah','90','A');
-insert into users (email, name, dragonProgress,dragonsLandmarkIDs) value ('nigel@gmail.com', 'Nigel','40','B');
+insert into users (email, name) value ('hannah@gmail.com', 'Hannah');
+insert into users (email, name) value ('nigel@gmail.com', 'Nigel');
 
 delete from trails;
 insert into trails ( Name,tru) value ( 'Caerphilly Coffee Trail',false);
diff --git a/src/main/resources/index.html b/src/main/resources/index.html
deleted file mode 100644
index 489349d1b63d75904028b48ddd4eb36d29f63650..0000000000000000000000000000000000000000
--- a/src/main/resources/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Home Page</title>
-</head>
-<body>
-<h1>Welcome to the home page</h1>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/static/css/userProfile.css b/src/main/resources/static/css/userProfile.css
index 8ceb77b4e82d8c44f9aefdcf9c1f54493771e668..878ab054fc53828cb76726775109ca7d3f4bcc80 100644
--- a/src/main/resources/static/css/userProfile.css
+++ b/src/main/resources/static/css/userProfile.css
@@ -37,13 +37,21 @@
         & p { line-height: 1.1; color: white;}
     }
 }
-
+html{
+    height: 100%;
+    @media only screen and (min-device-width: 1500px) {
+        height: auto;
+    }
+}
 body {
     background: linear-gradient(135deg, #f7e8fd, #9914d1);
-    height: 100svh;
+    height: 100%;
     display: flex;
     flex-direction: column;
     justify-content: space-evenly;
+    @media only screen and (min-device-width: 1500px) {
+        height: auto;
+    }
 }
 main {
     background: linear-gradient(to bottom, #1e1e1e 10%, darkgoldenrod 50%, #1e1e1e 90%);
@@ -55,8 +63,16 @@ main {
     margin-top: 6em;
     padding-inline: 1vw;
     box-shadow: rgba(0, 0, 0, 0.7) 0 0.5svh max(1vw, 1em);
-
-
+    transition: all linear 2s;
+    overflow-y: scroll;
+    height: 90%;
+    @media only screen and (min-device-width: 1500px) {
+        padding-inline: 20%;
+        overflow: visible;
+    }
+}
+.rewards {
+    position: relative;
 }
 .userInfo {
     display: flex;
@@ -81,15 +97,16 @@ main {
         box-shadow: rgba(0, 0, 0, 0.7) 0 0.5svh 1vw -1vw;
     }
 }
-#badgesBar::-webkit-scrollbar {
+#packsBar::-webkit-scrollbar {
     display: none;
     -ms-scrollbar-darkshadow-color: transparent;
 }
-#badgesBar {
+#packsBar {
+    position: static;
     display: grid;
     grid-template-areas:
         "header"
-        "badges";
+        "packs";
     overflow-x: scroll;
     overflow-y: hidden;
     color: white;
@@ -110,31 +127,54 @@ main {
         height: 1.2em;
 
     }
-    & #allBadgesContainer {
+    & #allPacksContainer {
         margin-top: 3svh;
-        grid-area: badges;
-        height: 10svh;
-        align-content: center;
+        grid-area: packs;
+        height: 12svh;
+        width: 100%;
         display: flex;
+        justify-content: space-between;
         @media only screen and (min-device-width: 501px) {
             height: 20vw;
             margin-top: 6vw;
         }
     }
-    & .badgeImg {
+    & .packContainer{
+        position: relative;
+        height: 12svh;
+        width: 20vw;
+        display: flex;
+        flex-direction: column;
+        text-align: center;
+        justify-content: center;
+        overflow: visible;
+    }
+
+    & .packImg {
+        position: relative;
         margin-inline: 3vw;
         height: 8svh;
+        /*width: 25%;*/
         z-index: 50;
         @media only screen and (min-device-width: 501px) {
             height: 15vw;
         }
         transition: 0.3s ease-out 100ms;
     }
-    & .badgeImg:hover {
+    & .packImg:hover {
         /*box-shadow: 0 0 20px 10px #bbbb00;*/
         transform: scale(1.5,1.5);
 
     }
+    & .packName {
+        height: 4svh;
+        display: flex;
+        justify-content: center;
+        font-size: 2em;
+        overflow: hidden;
+        align-items: flex-end;
+
+    }
 }
 
 #stickersBox {
@@ -145,6 +185,7 @@ main {
     /* border-bottom-right-radius: 2vw; */
     /*background: linear-gradient(to bottom, darkgoldenrod, transparent 90%);*/
     margin-top: -1%;
+    height: 500px;
     & h2 {
         font-size: 4em;
         text-align: center;
@@ -360,4 +401,8 @@ header .footerButton:hover {
     font-size: 0.6em;
     opacity: 0;
     transition: 0.5s ease-in-out 1ms;
+}
+
+.rewards {
+    transition: 1s ease-in-out 1ms;
 }
\ No newline at end of file
diff --git a/src/main/resources/static/images/LinkedIn.jpg b/src/main/resources/static/images/LinkedIn.jpg
deleted file mode 100644
index 6bf094d20c89883756ec5a105ec2cea1f9eeaf76..0000000000000000000000000000000000000000
Binary files a/src/main/resources/static/images/LinkedIn.jpg and /dev/null differ
diff --git "a/src/main/resources/static/images/Twitter-Log\320\276.png" "b/src/main/resources/static/images/Twitter-Log\320\276.png"
deleted file mode 100644
index c475939bfacb4be3559aab3d58a9a5eadf036afb..0000000000000000000000000000000000000000
Binary files "a/src/main/resources/static/images/Twitter-Log\320\276.png" and /dev/null differ
diff --git a/src/main/resources/static/images/badges.png b/src/main/resources/static/images/badges.png
deleted file mode 100644
index 57e379c719f5fe28ba827d7007be9637cfd9ff73..0000000000000000000000000000000000000000
Binary files a/src/main/resources/static/images/badges.png and /dev/null differ
diff --git a/src/main/resources/static/images/CaerphillyCastle.jpg b/src/main/resources/static/images/banners/CaerphillyCastle.jpg
similarity index 100%
rename from src/main/resources/static/images/CaerphillyCastle.jpg
rename to src/main/resources/static/images/banners/CaerphillyCastle.jpg
diff --git a/src/main/resources/static/images/PenarthBanner.jpg b/src/main/resources/static/images/banners/PenarthBanner.jpg
similarity index 100%
rename from src/main/resources/static/images/PenarthBanner.jpg
rename to src/main/resources/static/images/banners/PenarthBanner.jpg
diff --git a/src/main/resources/static/images/RiscaBanner.jpg b/src/main/resources/static/images/banners/RiscaBanner.jpg
similarity index 100%
rename from src/main/resources/static/images/RiscaBanner.jpg
rename to src/main/resources/static/images/banners/RiscaBanner.jpg
diff --git a/src/main/resources/static/images/Facebook.png b/src/main/resources/static/images/icons/Facebook.png
similarity index 100%
rename from src/main/resources/static/images/Facebook.png
rename to src/main/resources/static/images/icons/Facebook.png
diff --git a/src/main/resources/static/images/Instagram.jpg b/src/main/resources/static/images/icons/Instagram.jpg
similarity index 100%
rename from src/main/resources/static/images/Instagram.jpg
rename to src/main/resources/static/images/icons/Instagram.jpg
diff --git a/src/main/resources/static/images/Linkedin.png b/src/main/resources/static/images/icons/Linkedin.png
similarity index 100%
rename from src/main/resources/static/images/Linkedin.png
rename to src/main/resources/static/images/icons/Linkedin.png
diff --git a/src/main/resources/static/images/Twitter.jpg b/src/main/resources/static/images/icons/Twitter.jpg
similarity index 100%
rename from src/main/resources/static/images/Twitter.jpg
rename to src/main/resources/static/images/icons/Twitter.jpg
diff --git a/src/main/resources/static/images/VZTA.png b/src/main/resources/static/images/icons/VZTA.png
similarity index 100%
rename from src/main/resources/static/images/VZTA.png
rename to src/main/resources/static/images/icons/VZTA.png
diff --git a/src/main/resources/static/images/rewards/dragonFilled.png b/src/main/resources/static/images/rewards/packs/3.png
similarity index 100%
rename from src/main/resources/static/images/rewards/dragonFilled.png
rename to src/main/resources/static/images/rewards/packs/3.png
diff --git a/src/main/resources/static/images/stats.png b/src/main/resources/static/images/stats.png
deleted file mode 100644
index 39904f1cfc911df01306fb85ab78b015e7d0386c..0000000000000000000000000000000000000000
Binary files a/src/main/resources/static/images/stats.png and /dev/null differ
diff --git a/src/main/resources/static/images/trails.jpg b/src/main/resources/static/images/trails.jpg
deleted file mode 100644
index 20481a4f8a914ae8b272f490e2006dd0afaa5a2b..0000000000000000000000000000000000000000
Binary files a/src/main/resources/static/images/trails.jpg and /dev/null differ
diff --git a/src/main/resources/static/scripts/login.js b/src/main/resources/static/scripts/login.js
index 929b8b61e7a6f0f71a97937b2bdf2fcd83a5ce4f..38ef327134aa8ae03ddc44ddf796b2df139fc3bb 100644
--- a/src/main/resources/static/scripts/login.js
+++ b/src/main/resources/static/scripts/login.js
@@ -46,4 +46,6 @@ function validateForm(){
         return false;
     }
     //TODO SERVER SIDE VALIDATION AND CHECK AGAINST USERS DB TABLE
-}
\ No newline at end of file
+}
+
+
diff --git a/src/main/resources/static/test.html b/src/main/resources/static/test.html
deleted file mode 100644
index 98a5d8ce3c443e9b3c9e183848b038b11f2df7de..0000000000000000000000000000000000000000
--- a/src/main/resources/static/test.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>asdasd</title>
-</head>
-<body>
-sadasdasdasd
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/static/users.html b/src/main/resources/static/users.html
deleted file mode 100644
index 566549bdf8fae810809c1a81066000687cb338f6..0000000000000000000000000000000000000000
--- a/src/main/resources/static/users.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title>Title</title>
-</head>
-<body>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/allTrails/allTrails.html b/src/main/resources/templates/allTrails/allTrails.html
index 746762b68f64b62190bf71e102edf0ff309772d9..d29d1ad91cf459383b4681678742ed0a2cacbcd6 100644
--- a/src/main/resources/templates/allTrails/allTrails.html
+++ b/src/main/resources/templates/allTrails/allTrails.html
@@ -10,7 +10,7 @@
 </head>
 <body>
 
-<header th:replace="~{/towns/Templating.html :: header}"></header>
+<header th:replace="~{/fragments/Templating.html :: header}"></header>
 
 <main>
     <section id="allTrailsBar" class="centerFlex">
@@ -31,7 +31,7 @@
     </section>
 
 </main>
-<footer th:insert="~{/towns/Templating.html :: footer}"></footer>
+<footer th:insert="~{/fragments/Templating.html :: footer}"></footer>
 
 
 <script type="text/javascript" th:src="@{scripts/allTrails.js}"></script>
diff --git a/src/main/resources/templates/towns/Templating.html b/src/main/resources/templates/fragments/Templating.html
similarity index 74%
rename from src/main/resources/templates/towns/Templating.html
rename to src/main/resources/templates/fragments/Templating.html
index 1313b325bb3027665a9242b8fcd6d9db707af4e7..871e541bd8767e721d139cedfa8dd193b5212987 100644
--- a/src/main/resources/templates/towns/Templating.html
+++ b/src/main/resources/templates/fragments/Templating.html
@@ -2,7 +2,7 @@
 <link rel="stylesheet" href="../../static/css/templatingstyle.css">
 <header class="headerBar" th:fragment="header">
     <div class="Logo">
-        <img src="/images/VZTA.png" height="97" width="400" alt="VZTA Logo"/>
+        <img src="/images/icons/VZTA.png" height="97" width="400" alt="VZTA Logo"/>
     </div>
     <nav class="navBar">
         <ul>
@@ -41,10 +41,10 @@
         <div class="centerFooter">
                         <span class="footerText">
                             <h3>Follow Us</h3>
-                            <a href="https://www.facebook.com/VZTAsmarttowns/" class="icon"><img src="/images/Facebook.png" height="25" width="25" alt="Facebook Logo" class="icon"/></a>
-                            <a href="https://www.twitter.com/VZTAsmarttowns/" class="icon"><img src="/images/Twitter.jpg" height="25" width="25" alt="X (formally Twitter) Logo" class="icon"/></a>
-                            <a href="https://www.instagram.com/vztasmarttowns/" class="icon"><img src="/images/Instagram.jpg" height="25" width="25" alt="Instagram Logo" class="icon"/></a>
-                            <a href="https://www.linkin.com/company/vztasmarttowns/" class="icon"><img src="/images/Linkedin.png" height="25" width="25" alt="Linkedin Logo" class="icon"/></a><br>
+                            <a href="https://www.facebook.com/VZTAsmarttowns/" class="icon"><img src="/images/icons/Facebook.png" height="25" width="25" alt="Facebook Logo" class="icon"/></a>
+                            <a href="https://www.twitter.com/VZTAsmarttowns/" class="icon"><img src="/images/icons/Twitter.jpg" height="25" width="25" alt="X (formally Twitter) Logo" class="icon"/></a>
+                            <a href="https://www.instagram.com/vztasmarttowns/" class="icon"><img src="/images/icons/Instagram.jpg" height="25" width="25" alt="Instagram Logo" class="icon"/></a>
+                            <a href="https://www.linkin.com/company/vztasmarttowns/" class="icon"><img src="/images/icons/Linkedin.png" height="25" width="25" alt="Linkedin Logo" class="icon"/></a><br>
                         </span>
         </div>
         <div class="copyright" style="text-align: left">
diff --git a/src/main/resources/templates/fragments/temp_frags.html b/src/main/resources/templates/fragments/temp_frags.html
deleted file mode 100644
index 03efad3ee73e973e0faf7401b7d3b0de2e1578e4..0000000000000000000000000000000000000000
--- a/src/main/resources/templates/fragments/temp_frags.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<header th:fragment="header" class="headerBlock">
-    <h1 class="headerTitle">SMART-TOWNS</h1>
-    <div class="headerBanner">
-        <img src="images/trails.jpg" alt="Trails" class="bannerBack">
-<!--        <div class="bannerText">-->
-            <h1 class="bigTitle">Smart Town Trails</h1>
-            <h2 class="smallTitle">Information about trails for your town</h2>
-<!--        </div>-->
-    </div>
-</header>
-<footer th:fragment="footer">
-    <ul class="footerBar">
-        <li class="footerButton">Home</li>
-        <li class="footerButton">About</li>
-        <li class="footerButton">Map</li>
-        <li class="footerButton">Facilities</li>
-        <li class="footerButton">Search</li>
-    </ul>
-</footer>
-
-<article class="trailInfo" th:fragment="trailInfo2">
-    <h1 class="titleH1" th:text="${trail.name}">Trail Info</h1>
-</article>
\ No newline at end of file
diff --git a/src/main/resources/templates/home.html b/src/main/resources/templates/home.html
deleted file mode 100644
index 47b1dc1353c7c96bcb3409f54558ff18c4da6cf4..0000000000000000000000000000000000000000
--- a/src/main/resources/templates/home.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-<head>
-    <title>Website Web</title>
-    <link rel="stylesheet" th:href="@{css/style.css}">
-    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
-</head>
-
-<body>
-    <header th:replace="fragments/temp_frags.html :: header"></header>
-    <main>
-        <div class="trailList">
-            <ul class="ulHeader">
-                <li onclick="selectTrail('trail1', this)" class="liHeader" id="trail1" >Trail 1</li>
-                <li onclick="selectTrail('trail2', this)" class="liHeader selected" id="trail2" >Trail 2</li>
-                <li onclick="selectTrail('trail3', this)" class="liHeader" id="trail3" >Trail 3</li>
-                <li onclick="updateOutput()" class="liHeader" id="trail4" >Trail 4</li>
-            </ul>
-        </div>
-
-      <section class="mainBlock">
-        <article class="trailStats">
-            <h1 class="titleH1">Trail Stats</h1>
-            <img src="../static/images/stats.png" alt="Stats" class="stats">
-            <div class="textStats">
-                <p><b>Explored:</b> 60%</p>
-                <p><b>Landmarks Visited:</b> 3/5</p>
-                <p><b>Shops Visited:</b> 6/10</p>
-            </div>
-        </article>
-        <article id="trailInfoBox" class="trailInfo"></article>
-        <article class="badgesBlock">
-            <h1 class="titleH1">Badges</h1>
-            <div class="badgesList">
-                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
-                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
-                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
-                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
-                <img src="../static/images/badges.png" alt="Badge" class="badgeImg">
-            </div>
-            
-          </article>  
-      </section>
-    </main>
-
-    <footer th:replace="fragments/temp_frags.html :: footer"></footer>
-    <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
-    <script type="text/javascript" th:src="@{scripts/gabScripts.js}"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/Landmarks/LandmarkFormTh.html b/src/main/resources/templates/landmarks/LandmarkFormTh.html
similarity index 94%
rename from src/main/resources/templates/Landmarks/LandmarkFormTh.html
rename to src/main/resources/templates/landmarks/LandmarkFormTh.html
index b77bb90ece04cc582bc5fa5ea369bd8ba45e864b..0f7879d8277ad1012ffefaae75fc49d70b6932ca 100644
--- a/src/main/resources/templates/Landmarks/LandmarkFormTh.html
+++ b/src/main/resources/templates/landmarks/LandmarkFormTh.html
@@ -10,7 +10,7 @@
 
 </head>
 <body>
-<header th:insert="~{/towns/Templating.html :: header}"></header>
+<header th:insert="~{/fragments/Templating.html :: header}"></header>
 <hr style="height:20px; visibility:hidden;" />
 <H2 id="landmarkFormTitle"> Interested in joining our trails? Sign up Here! </H2>
 <main>
@@ -60,6 +60,6 @@
 </main>
 
 
-<footer th:insert="~{/towns/Templating.html :: footer}"></footer>
+<footer th:insert="~{/fragments/Templating.html :: footer}"></footer>
 </body>
 </html>
\ No newline at end of file
diff --git a/src/main/resources/templates/landmarks/locationPage.html b/src/main/resources/templates/landmarks/locationPage.html
new file mode 100644
index 0000000000000000000000000000000000000000..7cf62c6f4cb81dd98416bf95f89c973b7714c40f
--- /dev/null
+++ b/src/main/resources/templates/landmarks/locationPage.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Checkpoint</title>
+<!--    todo make this a list per trail or per town that when clicked brings to unique location page-->
+    <link rel="stylesheet" th:href="@{/css/templatingstyle.css}">
+</head>
+<body>
+
+<main>
+    <header th:insert="~{/fragments/Templating.html::header}"></header>
+    <div th:each="coord, indexValue:${locationCoords}">
+        <p th:text="*{coord.getLocationID()}"></p>
+<!--        <p th:text="${locations[indexValue.index]}"></p>-->
+        <H1 th:text="${location[indexValue.index].getLocationName()}"> </H1>
+        <H4 th:text="${location[indexValue.index].getLocationPlace()}"> </H4>
+        <p th:text="${location[indexValue.index].getLocationDescription()}"></p>
+
+
+        <iframe
+                width="600"
+                height="400"
+                frameborder="0"
+                scrolling="yes"
+                marginheight="0"
+                marginwidth="0"
+                th:src="'https://maps.google.com/maps?q='+ ${coord.getLocationCoordsLat()} +','+ ${coord.getLocationCoordsLong()} +'&hl=en&z=20&amp;output=embed'">
+        </iframe>
+        <br />
+<!--        <small>-->
+<!--&lt;!&ndash;            <a&ndash;&gt; //https://maps.google.com/maps?q=51.57623,-3.21910&hl=es&z=14&amp;output=embed">-->
+<!--                    th:href="https://maps.google.com/maps?q='+{coord.getLocationCoordsLat()}+','+*{coord.getLocationCoordsLong()}+'&hl=es;z=14&amp;output=embed"-->
+<!--                    style="color:#0000FF;text-align:left"-->
+<!--                    target="_blank"-->
+<!--            >-->
+<!--                See map bigger-->
+<!--            </a>-->
+<!--        </small>-->
+
+    </div>
+
+
+</main>
+<footer th:insert="~{/fragments/Templating.html::footer}"></footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/rewards/userProfile.html b/src/main/resources/templates/rewards/userProfile.html
deleted file mode 100644
index a193bf7614603637614dd0cfdc0974fdd8c44767..0000000000000000000000000000000000000000
--- a/src/main/resources/templates/rewards/userProfile.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title th:text="'VZLA Profile Page of ' + ${user.getName()}"></title>
-    <link rel="stylesheet" th:href="@{/css/userProfile.css}">
-<!--    <link rel="stylesheet" th:href="@{/css/templatingstyle.css}">-->
-</head>
-<body>
-
-<header>
-    <ul class="footerBar">
-        <li class="footerButton"><b>Home</b></li>
-        <li class="footerButton"><b>About</b></li>
-        <li class="footerButton"><b>Map</b></li>
-        <li class="footerButton"><b>Facilities</b></li>
-        <li class="footerButton"><b>Log In</b></li>
-    </ul>
-</header>
-
-<main>
-    <!--PICTURE - DATA - BADGES -->
-    <div class="userInfo">
-        <img th:src="@{${user.getImgPath()}}"
-             th:alt="${user.getName()}"
-             id="userPicture"
-        >
-        <h1 th:text="${user.getName()}"></h1>
-        <!--TODO add some progression info here?-->
-    </div>
-    <section class="rewards"> <!--Reward lists, badges on top, stickers (larger) on the bottom-->
-        <article id="badgesBar">
-            <h2>Your Badges: </h2> <!--Shows first earned badges, followed by greyed out badges-->
-            <div id="allBadgesContainer"  class="centerFlex">
-                <img class="badgeImg"  th:each="badge : ${badges}" th:src="@{'..' + ${badge.getImgPath()}}"
-                     th:id="'img' + ${badge.getId()}" th:alt="${badge.getName()}" >
-            </div>
-        </article>
-        <article class="dragonProgression">
-            <h1>The Dragon's Tale</h1>
-            <div class="dragonContainer">
-                <div class="dragonFill" th:style="'width:'+ ${user.getDragonProgress()} + '%;'">
-                    <img th:src="@{/images/rewards/dragonFilled.png}"
-                         alt="Filled Dragon" id="FilledDragon" class="dragonImg">
-                </div>
-                <div class="dragonOut">
-                    <img th:src="@{/images/rewards/dragonOutline.png}"
-                         alt="Outline Dragon" id="OutlineDragon" class="dragonImg">
-                </div>
-            </div>
-            <h2 th:text="${user.getDragonProgress()} + '%'"></h2>
-        </article>
-        <article id="stickersBox"> <!--Need a controller to show earned stickers -->
-            <h2> STICKERS! </h2>
-            <div class="stickersContainer">
-                <img th:class="'stickerImg ' + ${sticker.getVisibility()}"  th:each="sticker : ${stickers}" th:src="@{'../' + ${sticker.getImgPath()}}"
-                     th:id="'img' + ${sticker.getId()}" th:alt="${sticker.getName()}" >
-            </div>
-        </article>
-    </section>
-
-
-</main>
-
-<footer>
-
-</footer>
-
-
-<script>
-</script>
-</body>
-</html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/caerphilly.html b/src/main/resources/templates/towns/caerphilly.html
index 912da813737475d83dfc3af4c0ff4010189ec7f5..11d4aabb9ef479d9e67bc5c19419ec0f9c47d3eb 100644
--- a/src/main/resources/templates/towns/caerphilly.html
+++ b/src/main/resources/templates/towns/caerphilly.html
@@ -171,7 +171,7 @@
     <link rel="stylesheet" th:href="@{/css/templatingstyle.css}">
 </head>
 <body>
-<header th:insert="~{/towns/Templating.html::header}"></header>
+<header th:insert="~{/fragments/Templating.html::header}"></header>
 <main>
     <div class="container">
         <h1 class="townName"> Welcome to the town of Caerphilly.</h1>
@@ -215,7 +215,7 @@
 
     </div>
 </main>
-<footer th:insert="~{/towns/Templating.html::footer}"></footer>
+<footer th:insert="~{/fragments/Templating.html::footer}"></footer>
 </body>
 
 </html>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/home/homePage.html b/src/main/resources/templates/towns/home/homePage.html
index 2cdc1e854fba95f89dd2da702bbeb6d5011ed5d8..ec489ae7d334997390462ef1ffbe0d3ceaf5c828 100644
--- a/src/main/resources/templates/towns/home/homePage.html
+++ b/src/main/resources/templates/towns/home/homePage.html
@@ -8,7 +8,7 @@
 </head>
 <body>
 
-<header th:insert="~{/towns/Templating.html::header}"></header>
+<header th:insert="~{/fragments/Templating.html::header}"></header>
 <main>
   <div class="gridContainer1">
       <H1 id="homeTitle"> VZTA Smart Towns - Trails</H1>
@@ -56,7 +56,7 @@ rough % outline;
   </div>
 
 </main>
-<footer th:insert="~{/towns/Templating.html::footer}"></footer>
+<footer th:insert="~{/fragments/Templating.html::footer}"></footer>
 
 </body>
 </html>
diff --git a/src/main/resources/templates/towns/home/homePageOld.html b/src/main/resources/templates/towns/home/homePageOld.html
index bf35e662607a4b2a101aeef83f3a05a65fd50ad2..ce51066c3313d03de40e19be1b1bf951bcc9b6b7 100644
--- a/src/main/resources/templates/towns/home/homePageOld.html
+++ b/src/main/resources/templates/towns/home/homePageOld.html
@@ -9,7 +9,7 @@
 </head>
 <body>
 
-<header th:insert="~{/towns/Templating.html::header}"></header>
+<header th:insert="~{/fragments/Templating.html::header}"></header>
 <main>
 <div class="gridContainer1">
     <H1 id="homeTitle"> VZTA Smart Towns - Trails</H1>
@@ -60,7 +60,7 @@
 
 
 </main>
-<footer th:insert="~{/towns/Templating.html::footer}"></footer>
+<footer th:insert="~{/fragments/Templating.html::footer}"></footer>
 
 </body>
 </html>
diff --git a/src/main/resources/templates/towns/templates.server/Templating.html b/src/main/resources/templates/towns/templates.server/Templating.html
deleted file mode 100644
index 14343a76ea3cc2974dbdd50cc7bd3ade124adc17..0000000000000000000000000000000000000000
--- a/src/main/resources/templates/towns/templates.server/Templating.html
+++ /dev/null
@@ -1,149 +0,0 @@
-<header class="headerBar th:fragment="header">
-
-            <div class="Logo">
-                <img th:src="@{images/VZTA.png}" alt="VZTA Logo">
-            </div>
-            <nav class="navBar">
-                <ul>
-                    <li>Home</li>
-                    <li>FAQs</li>
-                    <li>Contact us</li>
-                </ul>
-                <label class="work">Who  we Work with:</label>
-                    <select>
-                        <ul>
-                            <option value="localauthorities">Local Authorities</option>
-                            <option value="towns">Towns</option>
-                            <option value="businesses">Businesses</option>
-                            <option value="consumers">Consumers</option>
-                        </ul>
-                    </select>
-            </nav>
-        </header>
-
-        <div class="footerBar" th:fragment="footer">
-            <div class="containerFooter">
-                <div class="leftFooter">
-                    <h3>VZTA</h3>
-                    Near Me Now LTD
-                    <br>Britania House
-                    <br>Caerphilly Business Park
-                    <br>Caerphilly
-                    <br>CF83 3GG
-                </div>
-                <div class="rightFooter">
-                    <h3>Connect with us</h3>
-                    <p>Be the first to know about updates by joining out Community page</p>
-                    (C) VZTA 2022<br>
-                    Policy Terms and Conditions
-                </div>
-                    <div class="centerFooter">
-                        <span class="footerText">
-                            <h3>Follow Us</h3>
-                            <a th:href=="https://www.facebook.com/VZTAsmarttowns/" class="icon"></a><img th:src="@{images/Facebook.png}" alt="Facebook Logo" class="picture">
-                            <a th:href=="https://www.twitter.com/VZTAsmarttowns/" class="icon"></a><img th:src="@{images/Twitter-Logo.png}" alt="X (formally Twitter) Logo" class="picture">
-                            <a th:href=="https://www.instagram.com/vztasmarttowns/" class="icon"></a><img th:src="@{images/Instagram.jpg}" alt="Instagram Logo" class="picture">
-                            <a th:href=="https://'www.linkin.com/company/vztasmarttowns/" class="icon"></a><img th:src="@{images/LinkedIn.jpg}" alt="Linkedin Logo" class="picture"> <br>
-                        </span>
-                        </div>
-                            <div class="copyright" style="text-align: left">
-
-                            </div>
-                    </div>
-            </div>
-</div>
-<style>
-    /* Header */
-    .headerBar {
-        border-bottom: 2px rgb(230, 230, 230) solid;
-        margin-bottom: 20px;
-        display: flex;
-        background: blueviolet;
-    }
-    /* Navbar Links */
-    .navBar {
-        margin-top: 50px;
-        margin-left: auto;
-        margin-right:20px;
-        text-align: right;
-    }
-    .work{
-        color: rgb(255, 255, 255);
-    }
-    .navBar ul {
-        list-style: none;
-        display: flex;
-        margin-left: 100px;
-    }
-    .navBar a {
-        border-left: 2px rgb(185, 185, 185) solid;
-        padding: 10px 40px;
-        text-decoration: none;
-        color:rgb(87, 86, 86);
-        white-space: nowrap;
-        overflow: hidden;
-        float: right;
-    }
-    .navBar a:hover {
-        background-color: rgb(209, 209, 209);
-    }
-    .navBar li{
-        margin-left: 10px;
-        margin-right: 10px;
-        color: rgb(255, 255, 255);
-    }
-    .navListLast {
-        border-right: 2px rgb(185, 185, 185) solid;
-        margin-right:40px;
-    }
-
-    /* Navbar Logo */
-    .Logo {
-        margin-left:10px;
-        padding: 20px;
-        width: fit-content;
-    }
-    .Logo img {
-        width: 120px;
-        margin-left:15px;
-    }
-
-    /* Footer */
-    footer {
-        margin-top:20px;
-        display: flex;
-        justify-content: center;
-    }
-    .footerBar{
-        border-top: 2px rgb(230, 230, 230) solid;
-        text-align: left;
-        display: flex;
-        background: blueviolet;
-        color: rgb(255, 255, 255);
-        padding-left: 30px;
-    }
-    .footerBar ul {
-        list-style: none;
-        display: flex;
-    }
-    .copyright{
-        text-align: left;
-        display: flex;
-    }
-    .containerFooter{
-        display: flex;
-        flex-direction: row;
-    }
-    .leftFooter{
-        flex:1;
-        color: rgb(255, 255,255);
-    }
-    .centerFooter{
-        flex: 1;
-        color: rgb(255, 255,255);
-    }
-    .rightFooter{
-        flex:1;
-        color: rgb(255, 255, 255);
-    }
-</style>
\ No newline at end of file
diff --git a/src/main/resources/templates/towns/trails/dragonstale/index.html b/src/main/resources/templates/towns/trails/dragonstale/index.html
index 80aa32934673ddca22af19a7f7772a378ce9c774..7cf5948e993116ac247cf9c8aaac3d1ece2e8762 100644
--- a/src/main/resources/templates/towns/trails/dragonstale/index.html
+++ b/src/main/resources/templates/towns/trails/dragonstale/index.html
@@ -8,7 +8,7 @@
     <script src="./node_modules/html5-qrcode/html5-qrcode.min.js"></script>
 </head>
     <body>
-        <header th:insert="towns/Templating.html :: header"></header>
+        <header th:insert="fragments/Templating.html :: header"></header>
 
         <!-- As this predefined trail will be accessible from multiple different towns, this thymeleaf element will display the town the user is currently trying to access and display it accordingly.   <span th:text="${townName}">  -->
         <div class="centre">
@@ -49,7 +49,7 @@
             <button type="button" id="begin">Click here!</button>
         </div>
 
-        <div th:insert="towns/Templating.html :: footer"></div>
+        <div th:insert="fragments/Templating.html :: footer"></div>
 
         <script>
 
diff --git a/src/main/resources/templates/rewards/login.html b/src/main/resources/templates/users/login.html
similarity index 100%
rename from src/main/resources/templates/rewards/login.html
rename to src/main/resources/templates/users/login.html
diff --git a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java
index 16f057a402137766b7a1dc906e829d6335d03afb..022d9fea6aadd68bc7bf7118141460e504919f8b 100644
--- a/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java
+++ b/src/test/java/Team5/SmartTowns/SmartTownsApplicationTests.java
@@ -1,34 +1,17 @@
-//package Team5.SmartTowns;
-//
-//import Team5.SmartTowns.Data.LocationRepository;
-//import Team5.SmartTowns.Data.LocationRepositoryJDBC;
-//import org.junit.jupiter.api.Test;
-//import org.mockito.Mock;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.test.autoconfigure.data.jdbc.DataJdbcTest;
-//import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest;
-//import org.springframework.boot.test.context.SpringBootTest;
-//import org.springframework.jdbc.core.JdbcTemplate;
-//import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
-//import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
-//import org.springframework.test.context.jdbc.Sql;
-////import org.testng.Assert;
-//
-//import javax.sql.DataSource;
-//
-//import static org.junit.jupiter.api.Assertions.assertEquals;
-//import static org.junit.jupiter.api.Assertions.assertSame;
-//import static org.mockito.Mockito.mock;
-//
-//@SpringBootTest
-//@JdbcTest
-//
-//@Sql({"schema.sql", "data.sql"})
-//class SmartTownsApplicationTests {
-//
-//	private JdbcTemplate ajdbc;
-//
-//	@Test
+package Team5.SmartTowns;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class SmartTownsApplicationTests {
+
+	@Test
+	void contextLoads() {
+	}
+
+}
+@Test
 ////	test2
 //	public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount1() {
 //		DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
@@ -58,58 +41,23 @@
 ////		assertEquals(4, employeeDAO.getCountOfEmployees());
 ////	}
 //
-//
-//
-//
-////
-//////	private static TownController townController;
-////
-////
-//////	private static Team5.SmartTowns.Data.Location location;
-//////	@Mock
-//////	private static JdbcTemplate jdbc;
-//////
-//////	@Autowired
-//////	private Team5.SmartTowns.Data.LocationRepository locationRepo;
-//////	JdbcTemplate jdbc = Mockito.mock(JdbcTemplate.class);
-////////	@Autowired
-////////	private static Team5.SmartTowns.Data.TownRepository townRepository;
-////////
-////////
-////////	private static Team5.SmartTowns.Data.Location town;
-////////	private static RowMapper<Location> locationMapper;
-//////
-//////
-//////	@BeforeAll
-//////	public void before() {
-////////		MockitoAnnotations.initMocks(this);
-////////		location = new Location();
-//////		locationRepo = mock(new LocationRepositoryJDBC(jdbc));
-////////		townController = new TownController();
-//////	}
-////////	@BeforeAll
-////////	public static void before(){}
-////////		location = new Location();
-////////}
-//////
-//////	@Test
-//////	void contextLoads() {
-//////	}
-//////
-//////	@Test
-//////	public void whenFilteringTownsByLocationsReturnOneTown() {
-//////		List<Location> allLocations = ( locationRepo.getAllLocation());
-//////		List<Town> allTowns = townRepository.getAllTowns();
-//////		int allLocationNumber=allLocations.size();
-//////		int allLocationNumberAfterFilter=0;
-//////		for (Town town : allTowns){
-//////			allLocationNumberAfterFilter+=townController.filterByLocationForTrails(allLocations, town.getTownName() ).size();
-////		}
-//////		assertSame(allLocationNumber,allLocationNumberAfterFilter);
-////// /// list of all locations,
-//////	filter by all three towns
-//////	add together size  should be same
-////	}
-////
-////
+
+//	@Test
+//	public void whenAddingLocationsNonApprovedLocationsDontShowInTrails(){
+//		/// Discover number of approved/unapproved locations before adding tests
+//		List<Location> approvedNumber = locationRepo.approvedLocations();
+//	}
+////		Location loc1= new Location("TestFail", "Test@PleaseFail.test", "Fail Description here",
+////				"Caerphilly", 103, false);
+////		Location loc2= new Location("TestFail", "Test@PleaseFail2.test", "Fail Description here",
+////				"Caerphilly", 103, false);
+////		Location loc3= new Location("TestPass", "Test@PleasePass.test", "Pass Description here",
+////				"Caerphilly", 103, true);
+////		locationRepository.addLocation(loc1);
+////		locationRepository.addLocation(loc2);
+////		locationRepository.addLocation(loc3);
+////		List<Location> ApprovedNumberAfter=locationRepository.approvedLocations();
 ////
+////		assertEquals(1,( ApprovedNumber.size()-ApprovedNumberAfter.size()));
+//		}
+	}