diff --git a/javafx-template/.gitignore b/javafx-template/.gitignore
index 213163975bb915006004bbbf5a9c7d75f6598f95..f06b4660049b36b357966d36fa5581276fb4cec4 100644
--- a/javafx-template/.gitignore
+++ b/javafx-template/.gitignore
@@ -1,2 +1,7 @@
 # ignore maven build folder
 target/
+
+# pom-derived eclipse jdt files
+.project
+.classpath
+org.eclipse.*.prefs
diff --git a/javafx-template/src/main/java/app/Calc.java b/javafx-template/src/main/java/app/Calc.java
index 1f0c5c8d14d2fda17574ab3c35e5365e00eb6b74..231878cb2fcd5500d19f51a1f68facc5203e2828 100644
--- a/javafx-template/src/main/java/app/Calc.java
+++ b/javafx-template/src/main/java/app/Calc.java
@@ -38,7 +38,7 @@ public class Calc {
      * @throws IllegalArgumentException if n is larger than the operand count
      */
     public double peekOperand(int n) {
-        if (n > getOperandCount()) {
+        if (n >= getOperandCount()) {
             throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
         }
         return operandStack.get(getOperandCount() - n - 1);
@@ -102,7 +102,7 @@ public class Calc {
      * @throws IllegalStateException if the operand count is less than two
      */
     public void swap() {
-        // TODO
+        
     }
 
     /**
diff --git a/javafx-template/src/test/java/app/CalcTest.java b/javafx-template/src/test/java/app/CalcTest.java
index 28064cf8f1d027ac48e3f8f2a377f1251c6d1b24..150778d7a4ae829cbe155aeff824f279b2192294 100644
--- a/javafx-template/src/test/java/app/CalcTest.java
+++ b/javafx-template/src/test/java/app/CalcTest.java
@@ -86,10 +86,11 @@ public class CalcTest {
     @Test
     public void testSwap() {
         Calc calc = new Calc(1.0, 3.14);
-        calc.swap();
         checkCalc(calc, 3.14, 1.0);
         calc.swap();
         checkCalc(calc, 1.0, 3.14);
+        calc.swap();
+        checkCalc(calc, 3.14, 1.0);
     }
 
     @Test
diff --git a/modules-template/.gitignore b/modules-template/.gitignore
index 213163975bb915006004bbbf5a9c7d75f6598f95..f06b4660049b36b357966d36fa5581276fb4cec4 100644
--- a/modules-template/.gitignore
+++ b/modules-template/.gitignore
@@ -1,2 +1,7 @@
 # ignore maven build folder
 target/
+
+# pom-derived eclipse jdt files
+.project
+.classpath
+org.eclipse.*.prefs
diff --git a/modules-template/core/src/main/java/core/Calc.java b/modules-template/core/src/main/java/core/Calc.java
index f50679df535792a6c53eb7d044ff443c2b682bd3..9b0f4c976eb8e418641811e6d4c56d2d5ce0fdb5 100644
--- a/modules-template/core/src/main/java/core/Calc.java
+++ b/modules-template/core/src/main/java/core/Calc.java
@@ -37,7 +37,7 @@ public class Calc {
      * @throws IllegalArgumentException if n is larger than the operand count
      */
     public double peekOperand(int n) {
-        if (n > getOperandCount()) {
+        if (n >= getOperandCount()) {
             throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
         }
         return operandStack.get(getOperandCount() - n - 1);
diff --git a/modules-template/core/src/test/java/core/CalcTest.java b/modules-template/core/src/test/java/core/CalcTest.java
index 0207cd5a5d7ed3f9a44bb1e3a159d33c91f8dacb..11df4696f42eb88a32ac9d21ae65720105f3739c 100644
--- a/modules-template/core/src/test/java/core/CalcTest.java
+++ b/modules-template/core/src/test/java/core/CalcTest.java
@@ -86,10 +86,11 @@ public class CalcTest {
     @Test
     public void testSwap() {
         Calc calc = new Calc(1.0, 3.14);
-        calc.swap();
         checkCalc(calc, 3.14, 1.0);
         calc.swap();
         checkCalc(calc, 1.0, 3.14);
+        calc.swap();
+        checkCalc(calc, 3.14, 1.0);
     }
 
     @Test
diff --git a/modules-template/src/main/java/core/Calc.java b/modules-template/src/main/java/core/Calc.java
deleted file mode 100644
index f50679df535792a6c53eb7d044ff443c2b682bd3..0000000000000000000000000000000000000000
--- a/modules-template/src/main/java/core/Calc.java
+++ /dev/null
@@ -1,108 +0,0 @@
-package core;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.function.BinaryOperator;
-import java.util.function.UnaryOperator;
-
-public class Calc {
-    
-    private final List<Double> operandStack;
-
-    public Calc(double... operands) {
-        operandStack = new ArrayList<>(operands.length + 2);
-        for (var d : operands) {
-            operandStack.add(d);
-        }
-    }
-
-    /**
-     * @return the number of operands on the stack
-     */
-    public int getOperandCount() {
-        return operandStack.size();
-    }
-
-    /**
-     * Pushes a new operand onto top of the stack.
-     * @param d the new operand
-     */
-    public void pushOperand(double d) {
-        operandStack.add(d);
-    }
-
-    /**
-     * @param n the place (from the top) to peek
-     * @return the n'th operand from the top
-     * @throws IllegalArgumentException if n is larger than the operand count
-     */
-    public double peekOperand(int n) {
-        if (n > getOperandCount()) {
-            throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
-        }
-        return operandStack.get(getOperandCount() - n - 1);
-    }
-
-    /**
-     * @return the top operand
-     */
-    public double peekOperand() {
-        return peekOperand(0);
-    }
-
-    /**
-     * Removes and returns the top operand.
-     * @return the top operand
-     * @throws IllegalStateException if the stack is empty
-     */
-    public double popOperand() {
-        if (getOperandCount() == 0) {
-            throw new IllegalStateException("Cannot pop from an empty stack");
-        }
-        return operandStack.remove(operandStack.size() - 1);
-    }
-    
-    /**
-     * Performs the provided operation in the top operand, and
-     * replaces it with the result.
-     * @param op the operation to perform
-     * @return the result of performing the operation
-     * @throws IllegalStateException if the operand stack is empty
-     */
-    public double performOperation(UnaryOperator<Double> op) throws IllegalStateException {
-        // TODO
-        return 0.0;
-    }
-
-    /**
-     * Performs the provided operation in the two topmost operands, and
-     * replaces them with the result.
-     * @param op the operation to perform
-     * @return the result of performing the operation
-     * @throws IllegalStateException if the operand count is less than two
-     */
-    public double performOperation(BinaryOperator<Double> op) throws IllegalStateException {
-        if (getOperandCount() < 2) {
-            throw new IllegalStateException("Too few operands (" + getOperandCount() + ") on the stack");
-        }
-        var op1 = popOperand();
-        var op2 = popOperand();
-        var result = op.apply(op1, op2);
-        pushOperand(result);
-        return result;
-    }
-
-    /**
-     * Swaps the two topmost operands.
-     */
-    public void swap() {
-        // TODO
-    }
-
-    /**
-     * Duplicates the top operand.
-     */
-    public void dup() {
-        // TODO
-    }
-}
\ No newline at end of file
diff --git a/modules-template/src/test/java/core/CalcTest.java b/modules-template/src/test/java/core/CalcTest.java
deleted file mode 100644
index dc95b0d25445866ed3bcda4b5ded746d0ac00bff..0000000000000000000000000000000000000000
--- a/modules-template/src/test/java/core/CalcTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package core;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-public class CalcTest {
-
-    private static void checkCalc(Calc calc, double... operands) {
-        Assertions.assertEquals(operands.length, calc.getOperandCount(), "Wrong operand count");
-        for (int i = 0; i < operands.length; i++) {
-            Assertions.assertEquals(operands[i], calc.peekOperand(i), "Wrong value at #" + i + " of operand stack");
-        }
-    }
-
-    @Test
-    public void testCalc() {
-        checkCalc(new Calc());
-        checkCalc(new Calc(1.0), 1.0);
-        checkCalc(new Calc(3.14, 1.0), 1.0, 3.14);
-    }
-
-    @Test
-    public void testPushOperand() {
-        Calc calc = new Calc();
-        calc.pushOperand(1.0);
-        checkCalc(calc, 1.0);
-        calc.pushOperand(3.14);
-        checkCalc(calc, 3.14, 1.0);
-    }
-
-    @Test
-    public void testPopOperand() {
-        Calc calc = new Calc(1.0, 3.14);
-        Assertions.assertEquals(3.14, calc.popOperand());
-        checkCalc(calc, 1.0);
-        Assertions.assertEquals(1.0, calc.popOperand());
-        checkCalc(calc);
-    }
-}
diff --git a/packages-template/.gitignore b/packages-template/.gitignore
index 213163975bb915006004bbbf5a9c7d75f6598f95..f06b4660049b36b357966d36fa5581276fb4cec4 100644
--- a/packages-template/.gitignore
+++ b/packages-template/.gitignore
@@ -1,2 +1,7 @@
 # ignore maven build folder
 target/
+
+# pom-derived eclipse jdt files
+.project
+.classpath
+org.eclipse.*.prefs
diff --git a/packages-template/src/main/java/core/Calc.java b/packages-template/src/main/java/core/Calc.java
index f50679df535792a6c53eb7d044ff443c2b682bd3..9b0f4c976eb8e418641811e6d4c56d2d5ce0fdb5 100644
--- a/packages-template/src/main/java/core/Calc.java
+++ b/packages-template/src/main/java/core/Calc.java
@@ -37,7 +37,7 @@ public class Calc {
      * @throws IllegalArgumentException if n is larger than the operand count
      */
     public double peekOperand(int n) {
-        if (n > getOperandCount()) {
+        if (n >= getOperandCount()) {
             throw new IllegalArgumentException("Cannot peek at position " + n + " when the operand count is " + getOperandCount());
         }
         return operandStack.get(getOperandCount() - n - 1);
diff --git a/packages-template/src/test/java/core/CalcTest.java b/packages-template/src/test/java/core/CalcTest.java
index 0207cd5a5d7ed3f9a44bb1e3a159d33c91f8dacb..11df4696f42eb88a32ac9d21ae65720105f3739c 100644
--- a/packages-template/src/test/java/core/CalcTest.java
+++ b/packages-template/src/test/java/core/CalcTest.java
@@ -86,10 +86,11 @@ public class CalcTest {
     @Test
     public void testSwap() {
         Calc calc = new Calc(1.0, 3.14);
-        calc.swap();
         checkCalc(calc, 3.14, 1.0);
         calc.swap();
         checkCalc(calc, 1.0, 3.14);
+        calc.swap();
+        checkCalc(calc, 3.14, 1.0);
     }
 
     @Test