diff --git a/Mathdoku.java b/Mathdoku.java
index ba74b4b41d0d18ca096472f6a819ef62eec8261c..6df344150656406edb759dd4afbffa4aeb0fc2f8 100644
--- a/Mathdoku.java
+++ b/Mathdoku.java
@@ -1,4 +1,6 @@
 import javafx.application.Application;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.Scene;
@@ -12,13 +14,15 @@ import javafx.stage.Stage;
 import javafx.scene.control.Label;
 
 
-public class Main extends Application {
+public class Mathdoku extends Application {
 
     private GridPane grid = new GridPane();
     private VBox menu = new VBox();
     private HBox topButton = new HBox();
     private HBox bottomButton = new HBox();
-    private int n = 2;
+    private int n = 4;
+    private Cell[][] cells;
+    private int[][] values;
 
     public static void main(String[] args) {
         launch(args);
@@ -49,15 +53,18 @@ public class Main extends Application {
         //bottomButton.getChildren().addAll(clear, fileLoad, textLoad);
 
         draw();
+        retainValues();
 
         primaryStage.widthProperty().addListener((obs, oldVal, newVal) -> {
             //menu.setPrefWidth((Double) newVal);
-            //draw();
+            draw();
+            drawInput();
         });
 
         primaryStage.heightProperty().addListener((obs, oldVal, newVal) -> {
             //menu.setPrefHeight((Double) newVal);
-            //draw();
+            draw();
+            drawInput();
         });
 
         menu.getChildren().addAll(topButton, grid);
@@ -73,16 +80,50 @@ public class Main extends Application {
     }
 
     public void draw() {
+
+        cells = new Cell[n][n];
+
         for(int i = 0; i < n; i ++) {
             for(int j = 0; j < n; j ++) {
-                Cell cell = new Cell("5");
+
+                Cell cell = new Cell("");
                 cell.setTranslateX(j*(600/n));
                 cell.setTranslateY(i*(600/n));
+
+                cells[i][j] = cell;
+
                 grid.getChildren().add(cell);
             }
         }
     }
 
+    public void drawInput() {
+        for(int i = 0; i < n; i ++) {
+            for(int j = 0; j < n; j ++) {
+                if(values[i][j] != 0) {
+                    cells[i][j].setText(String.valueOf(values[i][j]));
+                }
+            }
+        }
+    }
+
+    public void retainValues() {
+        values = new int[n][n];
+
+        for(int i = 0; i < n; i ++) {
+            for(int j = 0; j < n; j ++) {
+                int finalI = i;
+                int finalJ = j;
+                cells[i][j].getText().setOnAction(new EventHandler<ActionEvent>() {
+                    @Override
+                    public void handle(ActionEvent actionEvent) {
+                        values[finalI][finalJ] = Integer.parseInt(cells[finalI][finalJ].getText().getText());
+                    }
+                });
+            }
+        }
+    }
+
     class Cell extends StackPane {
 
         private Label label;
@@ -93,6 +134,9 @@ public class Main extends Application {
             this.label = new Label(label);
             this.text = new TextField();
 
+            this.label.setFont(Font.font(20));
+            //this.label.setAlignment(Pos.TOP_LEFT);
+
             text.setPrefWidth(10);
             text.setFont(Font.font(35));
             text.setStyle("-fx-text-box-border: transparent; -fx-background-color: transparent;");
@@ -102,17 +146,21 @@ public class Main extends Application {
             rectangle.setFill(null);
             rectangle.setStroke(Color.BLACK);
 
-            setAlignment(Pos.CENTER);
             setPadding(new Insets(40));
-            getChildren().addAll(rectangle, this.text);
+
+            getChildren().addAll(rectangle, this.text, this.label);
         }
 
         public String getLabel() {
             return this.label.getText();
         }
 
-        public String getText() {
-            return text.getText();
+        public TextField getText() {
+            return this.text;
+        }
+
+        public void setText(String text) {
+            this.text.setText(text);
         }
     }