diff --git a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepository.java b/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepository.java
deleted file mode 100644
index 973332b4f925624a51343b9bed0f68220e3911a0..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package Team5.SmartTowns.data;
-
-import java.util.List;
-
-public interface LocationsCoordinatesRepository {
-
-    List<LocationsCoordinates> getAllLocationCoords();
-    void addLocationCoord(LocationsCoordinates locCoord);
-
-
-
-
-}
diff --git a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepositoryJDBC.java
deleted file mode 100644
index 2966dcef800160692c80f87ae84c64b0f2f1ac27..0000000000000000000000000000000000000000
--- a/src/main/java/Team5/SmartTowns/data/LocationsCoordinatesRepositoryJDBC.java
+++ /dev/null
@@ -1,419 +0,0 @@
-package Team5.SmartTowns.data;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.stereotype.Repository;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-@Repository
-public class LocationsCoordinatesRepositoryJDBC implements LocationsCoordinatesRepository{
-
-
-    private JdbcTemplate jdbc;
-    private RowMapper<LocationsCoordinates> locationCoordMapper;
-
-    public LocationsCoordinatesRepositoryJDBC(JdbcTemplate aJdbc) {
-        this.jdbc = aJdbc;
-        setlocationCoordsMapper();
-    }
-    private void setlocationCoordsMapper(){
-        locationCoordMapper = (rs, i) -> new LocationsCoordinates(
-
-                rs.getInt("locationID"),
-                rs.getString("locationCoordsLong"),
-                rs.getString("locationCoordsLat")
-
-        );
-    }
-    public List<LocationsCoordinates> getAllLocationCoords(){
-        String sql= "SELECT * FROM locationCoordinates";
-        return jdbc.query(sql, locationCoordMapper);
-    }
-
-    @Override
-    public void addLocationCoord(LocationsCoordinates locCoords) {
-        String sql = "insert into locationCoordinates(locationID, locationCoordsLong,locationCoordsLat) values (?,?,?)";
-
-        jdbc.update(sql,locCoords.getLocationID(), locCoords.getLocationCoordsLong(),locCoords.getLocationCoordsLat());
-
-    }
-
-
-    //	private static JdbcTemplate jdbc;
-//	@BeforeAll
-//	public static void before() {
-//		location = new Location();
-//		locationRepo = new locationRepositoryJDBC(jdbc);}
-//	@BeforeAll
-//	public static void before2() {
-//		locationRepo = new locationRepositoryJDBC(jdbc); }
-
-    // Method used to approve and add locations with associated coordinates. List<Location> unapprovedLocations
-    public void approveLocationAndAddCoords(int locationID, String longCoords, String latCoords){ // need list too
-        String
-//        List<String> unapprovedLocationTowns = new ArrayList<String>();
-//        for (int i=1;unapprovedLocations.size()>i;i++ ){
-//            if (Objects.equals(unapprovedLocations.get(i).getLocationPlace(), town)){
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-            }
-        }
-
-//
-        // unapproved list
-        // if matches name, approve
-        // add long/lat coords
-        //use to update table
-    }
-}
diff --git a/src/main/java/Team5/SmartTowns/data/LocationsCoordinates.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java
similarity index 90%
rename from src/main/java/Team5/SmartTowns/data/LocationsCoordinates.java
rename to src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java
index 243fb73c88d49c282646ceab44eccf2bdd695bdf..233dd5d6f44ff7e15d63e641f7adfafeff97174e 100644
--- a/src/main/java/Team5/SmartTowns/data/LocationsCoordinates.java
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/LocationsCoordinates.java
@@ -1,11 +1,12 @@
-package Team5.SmartTowns.data;
+package Team5.SmartTowns.placeswithcoordinates;
 
 
 
+import Team5.SmartTowns.data.Location;
+import Team5.SmartTowns.data.LocationRepositoryJDBC;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.JdbcTemplate;
 
 import java.util.List;
@@ -13,11 +14,11 @@ import java.util.List;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
-public class LocationsCoordinates  extends LocationRepositoryJDBC  {
+public class LocationsCoordinates  extends LocationRepositoryJDBC {
     /// separate class to location to cover all locations within trails that have been approved and have long/lat coords attached for mapping.
     private int locationID;
-    private String locationCoordsLong;
     private String locationCoordsLat;
+    private String locationCoordsLong;
     private JdbcTemplate jdbc;
 
 
@@ -41,14 +42,14 @@ public class LocationsCoordinates  extends LocationRepositoryJDBC  {
         this.locationCoordsLat = locationCoordsLat;
     }
 
-    public LocationsCoordinates(JdbcTemplate aJdbc, int locationID, String locationCoordsLong, String locationCoordsLat) {
+    public LocationsCoordinates(JdbcTemplate aJdbc, int locationID, String locationCoordsLat, String locationCoordsLong) {
         super(aJdbc);
         this.locationID = locationID;
         this.locationCoordsLong = locationCoordsLong;
         this.locationCoordsLat = locationCoordsLat;
     }
 
-    public LocationsCoordinates(int locationID, String locationCoordsLong, String locationCoordsLat) {
+    public LocationsCoordinates(int locationID, String locationCoordsLat, String locationCoordsLong) {
         this.locationID = locationID;
         this.locationCoordsLong = locationCoordsLong;
         this.locationCoordsLat = locationCoordsLat;
@@ -63,6 +64,8 @@ public class LocationsCoordinates  extends LocationRepositoryJDBC  {
         return new LocationRepositoryJDBC(aJdbc).getAllLocation();
     }
 
+
+
     public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc){
         LocationsCoordinates jdbcSuper= new LocationsCoordinates(aJdbc);
         return new LocationRepositoryJDBC(aJdbc).getApprovedLocations();
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..a5e03d93ab75a20f3c380ca5c1b3d11c6f0b5807
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepository.java
@@ -0,0 +1,21 @@
+package Team5.SmartTowns.placeswithcoordinates;
+
+import Team5.SmartTowns.data.Location;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import java.util.List;
+
+public interface PlacesCoordinatesRepository {
+
+    List<LocationsCoordinates> getAllLocationCoords();
+    void addLocationCoord(LocationsCoordinates locCoord);
+
+    List<TownWithTrails> getAllTownCoords();
+    void addTownWithCoords(TownWithTrails town);
+
+    List<Location> getFullApprovedLocations(JdbcTemplate aJdbc);
+
+
+
+
+}
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java
new file mode 100644
index 0000000000000000000000000000000000000000..2be252d020a0435786e0170f673848dc1a0a388d
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/PlacesCoordinatesRepositoryJDBC.java
@@ -0,0 +1,495 @@
+package Team5.SmartTowns.placeswithcoordinates;
+
+import Team5.SmartTowns.data.Location;
+import org.springframework.boot.autoconfigure.integration.IntegrationProperties;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+
+import java.util.List;
+import java.util.Objects;
+
+@Repository
+public class PlacesCoordinatesRepositoryJDBC implements PlacesCoordinatesRepository {
+
+
+    private JdbcTemplate jdbc;
+    private RowMapper<LocationsCoordinates> locationCoordMapper;
+    private RowMapper<TownWithTrails> townCoordMapper;
+    public PlacesCoordinatesRepositoryJDBC(JdbcTemplate aJdbc) {
+        this.jdbc = aJdbc;
+        setLocationCoordsMapper();
+        setTownCoordsMapper();
+    }
+    private void setLocationCoordsMapper(){
+        locationCoordMapper = (rs, i) -> new LocationsCoordinates(
+
+                rs.getInt("locationID"),
+                rs.getString("locationCoordsLat"),
+                rs.getString("locationCoordsLong")
+
+        );
+    }
+    private void setTownCoordsMapper(){
+        townCoordMapper = (rs, i) -> new TownWithTrails(
+
+                rs.getString("townName"),
+                rs.getString("townCentreCoordsLat"),
+                rs.getString("townCentreCoordsLong"),
+                rs.getString("ownLeftmostCoordsLat"),
+                rs.getString("townRightmostCoordsLat"),
+                rs.getString("townUppermostCoordsLong"),
+                rs.getString("townLowermostCoordsLong")
+
+        );
+    }
+
+
+
+    public List<LocationsCoordinates> getAllLocationCoords(){
+        String sql= "SELECT * FROM locationCoordinates";
+        return jdbc.query(sql, locationCoordMapper);
+    }
+    public List<TownWithTrails> getAllTownCoords(){
+        String sql= "SELECT * FROM townswithtrails";
+        return jdbc.query(sql, townCoordMapper);
+    }
+
+    @Override
+    public void addLocationCoord(LocationsCoordinates locCoords) {
+        String sql = "insert into locationCoordinates(locationID, locationCoordsLat,locationCoordsLong) values (?,?,?)";
+
+        jdbc.update(sql,locCoords.getLocationID(), locCoords.getLocationCoordsLong(),locCoords.getLocationCoordsLat());
+
+    }
+    @Override
+    public void addTownWithCoords(TownWithTrails town) {
+        String sql = "insert into townswithtrails(townName,townCentreCoordsLat,townCentreCoordsLong,townLeftmostCoordsLat,townRightmostCoordsLat,townUppermostCoordsLong,townLowermostCoordsLong) values (?,?,?,?,?,?,?)";
+
+        jdbc.update(sql,town.getTownName(),town.getTownCentreCoordsLong(),town.getTownCentreCoordsLong(),town.getTownLeftmostCoordsLat(),town.getTownRightmostCoordsLat(),town.getTownUppermostCoordsLong(),town.getTownLowermostCoordsLong());
+
+    }
+
+    @Override //TODO CHECK
+    public List<Location> getFullApprovedLocations(JdbcTemplate aJdbc) {
+        return null;
+    }
+
+
+    public boolean checkInputtedCoordsMatchTown(String inpLongCoords, String inpLatCoords, String townName){
+     PlacesCoordinatesRepositoryJDBC jbdcsecond = new PlacesCoordinatesRepositoryJDBC(jdbc);
+     List<TownWithTrails> allTowns = jbdcsecond.getAllTownCoords();
+     for (TownWithTrails town : allTowns){
+         if (Objects.equals(townName, town.getTownName())){
+             // check lon within boundaries
+//             if ((inpLongCoords))
+
+
+
+         }
+     }
+    return true;}
+
+
+
+    // Method used to approve and add locations with associated coordinates. List<Location> unapprovedLocations
+    public void approveLocationAndAddCoords(String locationsName, String longCoords, String latCoords,JdbcTemplate jdbc) { // need list too
+        LocationsCoordinates jdbcTemp= new LocationsCoordinates(jdbc);
+        List<Location> unapprovedLocations = jdbcTemp.getFullUnapprovedLocations(jdbc);
+        PlacesCoordinatesRepositoryJDBC jbdcsecond = new PlacesCoordinatesRepositoryJDBC(jdbc);
+        List<TownWithTrails> allTowns = jbdcsecond.getAllTownCoords();
+        int unapporvedLocationsListIndex;
+        for (int i=0; i<unapprovedLocations.size();i++){ // check if location exists
+            if (Objects.equals(unapprovedLocations.get(i).getLocationName(), locationsName)){
+                unapporvedLocationsListIndex =i;
+                break;
+
+            } else if(!Objects.equals(unapprovedLocations.get(i).getLocationPlace(), locationsName)){
+                System.out.println("Error, location is not valid, please check your spelling or locations table.");
+                return;
+            }
+//            String toBeApprovedLocationTown=unapprovedLocations.get(unapporvedLocationsListIndex).getLocationPlace();
+//            for (TownWithTrails town : allTowns){
+//                if (Objects.equals(toBeApprovedLocationTown, town.getTownName())){
+
+
+                }
+
+            }
+
+
+
+
+           // check if location within respective town boundaries
+        }
+
+
+
+
+
+
+        /// if location id == unapproved location id,-> make sure coords within boundaries, -> approve and append lcoations table and add to coords table.
+
+//        List<String> unapprovedLocationTowns = new ArrayList<String>();
+//        for (int i=1;unapprovedLocations.size()>i;i++ ){
+//            if (Objects.equals(unapprovedLocations.get(i).getLocationPlace(), town)){
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//        }
+//
+////
+//        // unapproved list
+//        // if matches name, approve
+//        // add long/lat coords
+//        //use to update table
+//    }
+//}
diff --git a/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java b/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe7048686f74dec095f92f9df50d5bb1c27cdb2a
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/placeswithcoordinates/TownWithTrails.java
@@ -0,0 +1,50 @@
+package Team5.SmartTowns.placeswithcoordinates;
+
+public class TownWithTrails {
+
+    private String townName;
+    private String townCentreCoordsLat;
+    private String townCentreCoordsLong;
+    private String townLeftmostCoordsLat;
+    private String townRightmostCoordsLat;
+    private String townUppermostCoordsLong;
+    private String townLowermostCoordsLong;
+
+    public String getTownName() {
+        return townName;
+    }
+
+    public String getTownCentreCoordsLat() {
+        return townCentreCoordsLat;
+    }
+
+    public String getTownCentreCoordsLong() {
+        return townCentreCoordsLong;
+    }
+
+    public String getTownLeftmostCoordsLat() {
+        return townLeftmostCoordsLat;
+    }
+
+    public String getTownRightmostCoordsLat() {
+        return townRightmostCoordsLat;
+    }
+
+    public String getTownUppermostCoordsLong() {
+        return townUppermostCoordsLong;
+    }
+
+    public String getTownLowermostCoordsLong() {
+        return townLowermostCoordsLong;
+    }
+
+    public TownWithTrails(String townName, String townCentreCoordsLat, String townCentreCoordsLong, String townLeftmostCoordsLat, String townRightmostCoordsLat, String townUppermostCoordsLong, String townLowermostCoordsLong) {
+        this.townName = townName;
+        this.townCentreCoordsLat = townCentreCoordsLat;
+        this.townCentreCoordsLong = townCentreCoordsLong;
+        this.townLeftmostCoordsLat = townLeftmostCoordsLat;
+        this.townRightmostCoordsLat = townRightmostCoordsLat;
+        this.townUppermostCoordsLong = townUppermostCoordsLong;
+        this.townLowermostCoordsLong = townLowermostCoordsLong;
+    }
+}
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 1cf13ce5a9e5fc9ed4bc8814e3dfe8ce6d315d98..35cf5a7027b49fd346bfc3c71a1769eb64a8f44d 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -67,9 +67,9 @@ insert into stickers (packID, stickerID, name, description, rarity) value (3, 3,
 # insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true);
 
 delete from locationCoordinates;
-insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLat) value (2,'51.57623','-3.21910' );
-insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLat) value (3,'51.575372','-3.219186');
-insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLat) value (4, '51.576363','-3.220712' );
+insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (2,'51.57623','-3.21910' );
+insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (3,'51.575372','-3.219186');
+insert into locationCoordinates(locationID, locationCoordsLat, locationCoordsLong) value (4, '51.576363','-3.220712' );
 #
 # insert into stickerprogress (userID, packID, stickerID) value (1, 1, 1);
 # insert into stickerprogress (userID, packID, stickerID) value (1, 1, 2);
@@ -78,3 +78,8 @@ insert into locationCoordinates(locationID, locationCoordsLong, locationCoordsLa
 # insert into stickerprogress (userID, packID, stickerID) value (1, 2, 1);
 # insert into stickerprogress (userID, packID, stickerID) value (1, 2, 3);
 
+delete from townsWithTrails;
+#                                                                                                                                                                                                                                          LAT=X LONG=Y
+insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Caerphilly', '51.57903','-3.22075','51.57224','51.58856','-3.24597','-3.22496');
+insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Risca','51.61195','-3.09648','51.61483','51.60566','-3.09853','-3.09377');
+insert into townsWithTrails (townName, townCentreCoordsLat, townCentreCoordsLong, townLeftmostCoordsLat, townRightmostCoordsLat, townUppermostCoordsLong, townLowermostCoordsLong) value ('Penarth','51.43893','-3.17354','51.34750','51.44365','-3.18830','-3.18187');
\ No newline at end of file
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index e7b4ea8d48706d3dd5f341684409662fc5346dc1..ab91f08fe3a536f0c929b5aa1b39d1b2503629a7 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -74,8 +74,8 @@ create table if not exists locationCoordinates
     Foreign Key (locationID) REFERENCES locations(locationID)
         ON DELETE CASCADE
         ON UPDATE RESTRICT,
-    locationCoordsLong varchar(128),
-    locationCoordsLat varchar(128)
+    locationCoordsLat varchar(128),
+    locationCoordsLong varchar(128)
 
 
 )engine=InnoDB;
@@ -86,9 +86,11 @@ create table if not exists townsWithTrails
 (
     townID bigint auto_increment primary key,
     townName varchar(128),
-    townCoordsLong varchar(128),
-    townCoordsLat varchar(128)
-
-
+    townCentreCoordsLat varchar(128),
+    townCentreCoordsLong varchar(128),
+    townLeftmostCoordsLat varchar(128),
+    townRightmostCoordsLat varchar(128),
+    townUppermostCoordsLong varchar(128),
+    townLowermostCoordsLong varchar(128)
 )engine=InnoDB;