diff --git a/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java b/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java
index 3108a2dded7d5b65991dda3d6b7859e5a052278f..804b00c5775b3578cfe5bdfd990f6a638ca1b9cb 100644
--- a/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java
+++ b/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java
@@ -1,9 +1,14 @@
 package Team5.SmartTowns.Organisation;
 
+import Team5.SmartTowns.Data.Location;
+import Team5.SmartTowns.Data.addAddTownsRepository;
+import Team5.SmartTowns.Landmarks.Landmarks;
+import Team5.SmartTowns.Towns.Towns;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.stereotype.Controller;
 @Controller
diff --git a/src/main/java/Team5/SmartTowns/addTowns/addAddTowns.java b/src/main/java/Team5/SmartTowns/addTowns/addAddTowns.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0a196c1b51126d539633eb3246e429f918568c6
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/addTowns/addAddTowns.java
@@ -0,0 +1,51 @@
+package Team5.SmartTowns.addTowns;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class addAddTowns {
+    private String townName;
+    private String address1;
+    private String address2;
+    private String city;
+    private String county;
+    private String postcode;
+
+    @Override
+    public String toString(){
+        return "Town{" +
+                townName + '\'' +
+                address1 + '\'' +
+                address2 + '\'' +
+                city + '\'' +
+                county + '\'' +
+                postcode +
+                '}';
+    }
+
+    public String getTownName() {
+        return townName;
+    }
+
+    public String getAddress1() {
+        return address1;
+    }
+
+    public String getAddress2() {
+        return address2;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public String getCounty() {
+        return county;
+    }
+
+    public String getPostcode() {
+        return postcode;
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/addTowns/addAddTownsRepository.java b/src/main/java/Team5/SmartTowns/addTowns/addAddTownsRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..6eb350880db3ffc2148f7e7c034134a23859de69
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/addTowns/addAddTownsRepository.java
@@ -0,0 +1,11 @@
+package Team5.SmartTowns.addTowns;
+
+import Team5.SmartTowns.Data.Location;
+import Team5.SmartTowns.Towns.Towns;
+
+import java.util.List;
+
+public interface addAddTownsRepository {
+    List<Location> getAllAddTowns();
+    void addAddTowns(Towns tow);
+}
diff --git a/src/main/java/Team5/SmartTowns/addTowns/addAddTownsRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/addTowns/addAddTownsRepositoryJDBC.java
new file mode 100644
index 0000000000000000000000000000000000000000..9be19b9e9af0d4672b6c03d9a6d3b86a5c6286ff
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/addTowns/addAddTownsRepositoryJDBC.java
@@ -0,0 +1,42 @@
+package Team5.SmartTowns.addTowns;
+
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public class addAddTownsRepositoryJDBC implements addAddTownsRepository {
+    private JdbcTemplate jdbc;
+    private RowMapper<addAddTowns> addTownsMapper;
+
+    public addAddTownsRepositoryJDBC(JdbcTemplate ajdbc) {
+        this.jdbc = ajdbc;
+        setaddTownsMapper();
+    }
+
+    private void setaddTownsMapper() {
+        addTownsMapper = (rs, i) -> new addAddTowns(
+                rs.getString("townName"),
+                rs.getString("address1"),
+                rs.getString("address2"),
+                rs.getString("city"),
+                rs.getString("county"),
+                rs.getString("postcode")
+        );
+    }
+
+    public List<addAddTowns> getAllAddTowns() {
+        String sql = "SELECT * FROM addTowns";
+        return jdbc.query(sql, addTownsMapper);
+    }
+
+    @Override
+    public void addTown(addAddTowns tow) {
+        String sql = "insert into addTowns( townName, address1, address2, city, county, postcode) values (?, ?, ?, ?,  ?, ?)";
+
+        jdbc.update(sql, tow.getTownName(), tow.getAddress1(), tow.getAddress2(), tow.getCity(), tow.getCounty(), tow.getPostcode());
+    }
+}
+
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 342be16c4cf4e592070ebc07f225dede965f06c2..de85e8509a8e9e7d68abc2b84747339a3b886408 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -56,7 +56,7 @@ insert into stickerprogress (userID, stickerID, hasSticker) value ('1', '1', tru
 insert into stickerprogress (userID, stickerID, hasSticker) value ('1', '3', true);
 insert into stickerprogress (userID, stickerID, hasSticker) value ('2', '2', true);
 
-delete from townswithtrails
-insert into townswithtrails (townName, address1, address2, city, county, postcode) value ('Caerphilly Town', 'Castle Street', '', 'Caerphilly', '', 'CF83 1NU');
-insert into townswithtrails (townName, address1, address2, city, county, postcode) value ('Penarth Town', '1 Windsor Arcade', '', 'Penarth', '', 'CF64 1JA');
-insert into townswithtrails (townName, address1, address2, city, county, postcode) value ('Risca Town', '47 Tredegar Street', 'Pontymister, Risca West', 'Newport', 'Caerphilly County Borough', 'NP11 6BW');
\ No newline at end of file
+delete from addTowns;
+insert into addTowns (townName, address1, address2, city, county, postcode) value ('Caerphilly Town', 'Castle Street', '', 'Caerphilly', '', 'CF83 1NU');
+insert into addTowns (townName, address1, address2, city, county, postcode) value ('Penarth Town', '1 Windsor Arcade', '', 'Penarth', '', 'CF64 1JA');
+insert into addTowns (townName, address1, address2, city, county, postcode) value ('Risca Town', '47 Tredegar Street', 'Pontymister, Risca West', 'Newport', 'Caerphilly County Borough', 'NP11 6BW');
\ No newline at end of file
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 7c2c19d19b5b13c0df9d32b73fe553fe07284150..ac6d61671b27f33c5302f88e726abf16832a7c48 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -59,10 +59,10 @@ create table if not exists stickerProgress
     hasSticker boolean /*Has sticker or not*/
 ) engine=InnoDB;
 
-drop table if exists townsWithTrails;
-create table if not exists townsWithTrails
+drop table if exists addTowns;
+create table if not exists addTowns
 (
-    townsWithTrailsID bigint auto_increment primary key,
+    townsID bigint auto_increment primary key,
     townName varchar(128),
     address1 varchar(128),
     address2 varchar(128),