diff --git a/javafx-template/src/main/java/app/App.java b/javafx-template/src/main/java/app/App.java
index bbe94126648e6734c31a07eaaa00c53ee3eb5df0..b27d0955105d0cb84b7fa7ee21086953ac6391ca 100644
--- a/javafx-template/src/main/java/app/App.java
+++ b/javafx-template/src/main/java/app/App.java
@@ -13,8 +13,6 @@ import java.io.IOException;
  */
 public class App extends Application {
 
-    private static Scene scene;
-
     @Override
     public void start(Stage stage) throws IOException {
         FXMLLoader fxmlLoader = new FXMLLoader(this.getClass().getResource("App.fxml"));
diff --git a/javafx-template/src/main/java/app/AppController.java b/javafx-template/src/main/java/app/AppController.java
index ab72ff9218ac99042b1b6e49fd5f214691fb8e7b..d622f38be490838f86e47197f86f16c721c5a9b9 100644
--- a/javafx-template/src/main/java/app/AppController.java
+++ b/javafx-template/src/main/java/app/AppController.java
@@ -2,6 +2,8 @@ package app;
 
 import java.util.List;
 import java.util.function.BinaryOperator;
+import java.util.function.Consumer;
+import java.util.function.UnaryOperator;
 
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
@@ -91,27 +93,37 @@ public class AppController {
     void handlePoint() {
         var operandString = getOperandString();
         if (operandString.contains(".")) {
-            setOperand(operandString.substring(operandString.indexOf(".") + 1));
+            setOperand(operandString.substring(0, operandString.indexOf(".") + 1));
         } else {
             appendToOperand(".");
         }
     }
 
-    private void performOperation(boolean swap, BinaryOperator<Double> op) {
+    @FXML
+    void handleClear() {
+        clearOperand();
+    }
+
+    private void withOperand(Runnable proc) {
         if (hasOperand()) {
             calc.pushOperand(getOperand());
             clearOperand();
         }
-        if (swap) {
-            calc.swap();
-        }
-        calc.performOperation(op);
+        proc.run();
         updateOperandsView();
     }
 
-    @FXML
-    void handlePi() {
-        setOperand(Math.PI);
+    private void performOperation(UnaryOperator<Double> op) {
+        withOperand(() -> calc.performOperation(op));
+    }
+
+    private void performOperation(boolean swap, BinaryOperator<Double> op) {
+        withOperand(() -> {
+            if (swap) {
+                calc.swap();
+            }
+            calc.performOperation(op);
+        });
     }
 
     @FXML
@@ -133,4 +145,18 @@ public class AppController {
     void handleOpDiv() {
         performOperation(true, (op1, op2) -> op1 / op2);
     }
+
+    @FXML
+    void handleOpSquareRoot() {
+        performOperation(op1 -> Math.sqrt(op1));
+    }
+
+    @FXML
+    void handlePi() {
+        withOperand(() -> calc.pushOperand(Math.PI));
+    }
+
+    public static void main(String[] args) {
+        System.out.println("\u221A");
+    }
 }
diff --git a/javafx-template/src/main/resources/app/App.fxml b/javafx-template/src/main/resources/app/App.fxml
index d9b4203867e70405061e6e7d102f5701c6de792b..4669ea86207440f682edfc75ab91eb722cce8e97 100644
--- a/javafx-template/src/main/resources/app/App.fxml
+++ b/javafx-template/src/main/resources/app/App.fxml
@@ -38,7 +38,7 @@
       GridPane.rowIndex="5" GridPane.columnIndex="0"/>
    <Button text="." onAction="#handlePoint"
       GridPane.rowIndex="5" GridPane.columnIndex="1"/>
-   <Button text="π" onAction="#handlePi"
+   <Button text="C" onAction="#handleClear"
       GridPane.rowIndex="5" GridPane.columnIndex="2"/>
 
    <Button text="+" onAction="#handleOpAdd"
@@ -49,4 +49,8 @@
       GridPane.rowIndex="6" GridPane.columnIndex="2"/>
    <Button text="/" onAction="#handleOpDiv"
       GridPane.rowIndex="6" GridPane.columnIndex="3"/>
+   <Button text="√" onAction="#handleOpSquareRoot"   
+      GridPane.rowIndex="7" GridPane.columnIndex="0"/>
+   <Button text="π" onAction="#handlePi"   
+      GridPane.rowIndex="7" GridPane.columnIndex="1"/>
 </GridPane>
diff --git a/javafx-template/src/test/java/app/AppTest.java b/javafx-template/src/test/java/app/AppTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..018f31487a0eba4ec00d413adc1dfe1aa4c23cd0
--- /dev/null
+++ b/javafx-template/src/test/java/app/AppTest.java
@@ -0,0 +1,24 @@
+package app;
+
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+import org.testfx.framework.junit5.ApplicationTest;
+
+/**
+ * TestFX App test
+ */
+public class AppTest extends ApplicationTest {
+
+    @Override
+    public void start(Stage stage) throws IOException {
+        FXMLLoader fxmlLoader = new FXMLLoader(this.getClass().getResource("App.fxml"));
+        Parent parent = fxmlLoader.load();
+        stage.setScene(new Scene(parent));
+        stage.show();
+    }
+}