diff --git a/src/main/java/table_view/Person.java b/src/main/java/table_view/Person.java
index 01f9f48ed27e534829784e533a19476c76d28432..3f360d0dacbab3770f8f1cf3951f3dc67933bc17 100644
--- a/src/main/java/table_view/Person.java
+++ b/src/main/java/table_view/Person.java
@@ -2,7 +2,7 @@ package table_view;
 
 import javafx.beans.property.SimpleStringProperty;
 
-class Person {
+public class Person {
 
 	private final Long id;
     private final SimpleStringProperty firstName;
diff --git a/src/main/java/table_view/PersonDAO.java b/src/main/java/table_view/PersonDAO.java
index 64b7167319b1ee1294c36cfda4e9f6cfacb08516..6dda4ec5788cd08d5407e2071acff30d73e2f841 100644
--- a/src/main/java/table_view/PersonDAO.java
+++ b/src/main/java/table_view/PersonDAO.java
@@ -12,6 +12,12 @@ import java.util.LinkedList;
 class PersonDAO implements AutoCloseable{
 
 	private static final String INSERT_SQL = "INSERT INTO person(first_name, last_name, email) values (?,?,?)";
+	
+	private static final String SELECT_SQL = "SELECT id, first_name, last_name, email FROM person";
+
+	private static final String UPDATE_SQL = "UPDATE person set first_name = ?, last_name = ?, email = ? WHERE id = ?";
+
+	private static final String DELETE_SQL = "DELETE FROM person WHERE id = ?";
 
 	private Connection conn;
 
@@ -61,7 +67,7 @@ class PersonDAO implements AutoCloseable{
 		checkConnection();
 		Collection<Person> result = new LinkedList<>();
 		try (Statement stm = conn.createStatement()){
-			stm.execute("SELECT id, first_name, last_name, email FROM person");
+			stm.execute(SELECT_SQL);
 			ResultSet resultSet = stm.getResultSet();
 			while(resultSet.next()) {
 				result.add(new Person(resultSet.getLong(1), resultSet.getString(2), resultSet.getString(3),resultSet.getString(4)));
@@ -75,7 +81,7 @@ class PersonDAO implements AutoCloseable{
 	
 	public boolean updatePerson(Person p) {
 		checkConnection();
-		try (PreparedStatement ps = conn.prepareStatement("UPDATE person set first_name = ?, last_name = ?, email = ? WHERE id = ?")){
+		try (PreparedStatement ps = conn.prepareStatement(UPDATE_SQL)){
 			ps.setString(1, p.getFirstName());
 			ps.setString(2, p.getLastName());
 			ps.setString(3, p.getEmail());
@@ -90,7 +96,7 @@ class PersonDAO implements AutoCloseable{
 	
 	public boolean deletePerson(Person p) {
 		checkConnection();
-		try (PreparedStatement ps = conn.prepareStatement("DELETE FROM person WHERE id = ?")){
+		try (PreparedStatement ps = conn.prepareStatement(DELETE_SQL)){
 			ps.setLong(1, p.getId());
 			ps.executeUpdate();
 			return true;
diff --git a/src/main/java/table_view/TableViewSample.java b/src/main/java/table_view/TableViewSample.java
index e6a8068154c2cb51c10abca3e7544f3ba037f6ad..8950e2f3d2589005723afae2b444a27de4f58661 100644
--- a/src/main/java/table_view/TableViewSample.java
+++ b/src/main/java/table_view/TableViewSample.java
@@ -4,6 +4,7 @@ import javafx.application.Application;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
 import javafx.geometry.Insets;
 import javafx.scene.Group;
 import javafx.scene.Scene;
@@ -23,9 +24,9 @@ import javafx.stage.WindowEvent;
  
 public class TableViewSample extends Application {
  
-    private TableView<Person> table = new TableView<Person>();
-    
-    private final PersonDAO dao;
+	private final PersonDAO dao;
+	
+	private TableView<Person> table = new TableView<>();
     
     private final ObservableList<Person> data;
     
@@ -55,42 +56,17 @@ public class TableViewSample extends Application {
         label.setFont(new Font("Arial", 20));
  
         table.setEditable(true);
- 
-        TableColumn<Person,String> firstNameCol = new TableColumn<>("First Name");
-        firstNameCol.setMinWidth(100);
-        firstNameCol.setCellValueFactory(
-            new PropertyValueFactory<Person, String>("firstName"));
-        firstNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
-		firstNameCol.setOnEditCommit(this::handleOnEditCommitFirstName);
- 
-        TableColumn<Person,String> lastNameCol = new TableColumn<>("Last Name");
-        lastNameCol.setMinWidth(100);
-        lastNameCol.setCellValueFactory(
-            new PropertyValueFactory<Person, String>("lastName"));
-        lastNameCol.setCellFactory(TextFieldTableCell.forTableColumn());
-        lastNameCol.setOnEditCommit(this::handleOnEditCommitLastName);
- 
-        TableColumn<Person,String> emailCol = new TableColumn<>("Email");
-        emailCol.setMinWidth(200);
-        emailCol.setCellValueFactory(
-            new PropertyValueFactory<Person, String>("email"));
-        emailCol.setCellFactory(TextFieldTableCell.forTableColumn());
-        emailCol.setOnEditCommit(this::handleOnEditCommitEmail);
- 
         table.setItems(data);
         
+        TableColumn<Person, String> firstNameCol = constructColumn("First Name","firstName", this::handleOnEditCommitFirstName);
+        TableColumn<Person,String> lastNameCol = constructColumn("Last Name","lastName", this::handleOnEditCommitLastName);
+        TableColumn<Person,String> emailCol = constructColumn("Email","email",this::handleOnEditCommitEmail);
         table.getColumns().addAll(firstNameCol, lastNameCol, emailCol);
  
-        addFirstName = new TextField();
-        addFirstName.setPromptText("First Name");
-        addFirstName.setMaxWidth(firstNameCol.getPrefWidth());
-        addLastName = new TextField();
-        addLastName.setMaxWidth(lastNameCol.getPrefWidth());
-        addLastName.setPromptText("Last Name");
-        addEmail = new TextField();
-        addEmail.setMaxWidth(emailCol.getPrefWidth());
-        addEmail.setPromptText("Email");
- 
+        
+        addFirstName = constructTextField(firstNameCol,"First Name");
+        addLastName = constructTextField(lastNameCol,"Last Name");
+        addEmail = constructTextField(emailCol,"Email");
         final Button addButton = new Button("Add");
         addButton.setOnAction(this::handleOnAdd);
  
@@ -105,13 +81,25 @@ public class TableViewSample extends Application {
         ((Group) scene.getRoot()).getChildren().addAll(vbox);
         stage.setScene(scene);
         
-        fillTable();
         stage.show();
         stage.setOnCloseRequest(this::exitProgram);
     }
- 
-	private void fillTable() {
-		
+
+	private TextField constructTextField(TableColumn<Person, String> column, String string) {
+		TextField result = new TextField();
+		result.setPromptText("First Name");
+        result.setMaxWidth(column.getPrefWidth());
+        return result;
+	}
+
+	private TableColumn<Person, String> constructColumn(String name, String propertyName,
+			EventHandler<CellEditEvent<Person, String>> callback) {
+		TableColumn<Person, String> col = new TableColumn<>(name);
+		col.setMinWidth(100);
+		col.setCellValueFactory(new PropertyValueFactory<>(propertyName));
+		col.setCellFactory(TextFieldTableCell.forTableColumn());
+		col.setOnEditCommit(callback);
+		return col;
 	}
 
 	private void handleOnAdd(ActionEvent e) {