diff --git a/.gitignore b/.gitignore
index c6ac638e..0352fe05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,14 @@ bin/configlet
 bin/configlet.exe
 
 .bsp/
+
+# metals workflow junk, shouldn't be commited
+.bloop/
+.metals/
+
 project/
+!project/build.properties
+!project/plugins.sbt
 project/target
 src/test/scala/project/
 target
diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md
index f14c3ee2..3c7f1f6d 100644
--- a/docs/INSTALLATION.md
+++ b/docs/INSTALLATION.md
@@ -3,8 +3,11 @@
 
 In addition to the exercism CLI and your favorite text editor, practicing with Exercism exercises in Scala requires:
 
-* Recent build of the Java 8 Platform, such as [OpenJDK](http://openjdk.java.net/install/) or [Oracle Java JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) 
-* [Download](http://www.scala-sbt.org/release/docs/Setup.html) and install the Simple Build Tool (`sbt`)
+* Java Development Kit (JDK) 11 or later. Use your preferred vendor or grab one from [Adoptium](https://adoptium.net/)
+* [Scala 2.13.x](https://www.scala-lang.org/download/scala2.html)
+* [sbt 1.6.x](https://www.scala-sbt.org/download.html)
+
+If you don't want install these various dependencies by hand, consider using [SDKMAN](https://sdkman.io/) to manage your java and java-adjacent development tools and libraries. 
 
 ---
 
@@ -18,4 +21,6 @@ To get started, see "[Running the Tests](http://exercism.io/languages/scala/test
 
 * [IntelliJ IDEA with Scala Plugin](https://www.jetbrains.com/idea/)
 * [ScalaIDE](http://scala-ide.org/index.html)
-* [NetBeans with Scala Plugin](https://netbeans.org/)
\ No newline at end of file
+* [NetBeans with Scala Plugin](https://netbeans.org/)
+* [Metals with VS Code](https://scalameta.org/metals/docs/editors/vscode)
+* [Metals with Vim or Neovim](https://scalameta.org/metals/docs/editors/vim)
diff --git a/exercises/concept/basics/src/test/scala/LasagnaTest.scala b/exercises/concept/basics/src/test/scala/LasagnaTest.scala
index eea2cbfa..d385eb4e 100644
--- a/exercises/concept/basics/src/test/scala/LasagnaTest.scala
+++ b/exercises/concept/basics/src/test/scala/LasagnaTest.scala
@@ -1,5 +1,8 @@
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 /** @version 1.3.0 */
-class LasagnaTest extends FunSuite with Matchers {
+class LasagnaTest extends AnyFunSuite with Matchers {
 
   test("expected minutes in oven") {
     new Lasagna().expectedMinutesInOven() should be(40)
diff --git a/exercises/practice/accumulate/build.sbt b/exercises/practice/accumulate/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/accumulate/build.sbt
+++ b/exercises/practice/accumulate/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/accumulate/src/test/scala/AccumulateTest.scala b/exercises/practice/accumulate/src/test/scala/AccumulateTest.scala
index 00598082..4cecdc4f 100644
--- a/exercises/practice/accumulate/src/test/scala/AccumulateTest.scala
+++ b/exercises/practice/accumulate/src/test/scala/AccumulateTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.matchers.should.Matchers
+import org.scalatest.flatspec.AnyFlatSpec
+
 
 /** @version created manually **/
-class AccumulateTest extends FlatSpec with Matchers {
+class AccumulateTest extends AnyFlatSpec with Matchers {
 
   it should "allow empty accumulation" in {
     val accumulate = new Accumulate
diff --git a/exercises/practice/acronym/build.sbt b/exercises/practice/acronym/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/acronym/build.sbt
+++ b/exercises/practice/acronym/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/acronym/src/test/scala/AcronymTest.scala b/exercises/practice/acronym/src/test/scala/AcronymTest.scala
index 9cc2c358..f77d6dda 100644
--- a/exercises/practice/acronym/src/test/scala/AcronymTest.scala
+++ b/exercises/practice/acronym/src/test/scala/AcronymTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.6.0 */
-class AcronymTest extends FunSuite with Matchers {
+class AcronymTest extends AnyFunSuite with Matchers {
 
   test("basic") {
     Acronym.abbreviate("Portable Network Graphics") should be ("PNG")
diff --git a/exercises/practice/all-your-base/build.sbt b/exercises/practice/all-your-base/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/all-your-base/build.sbt
+++ b/exercises/practice/all-your-base/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/all-your-base/src/test/scala/AllYourBaseTest.scala b/exercises/practice/all-your-base/src/test/scala/AllYourBaseTest.scala
index 45633d2c..6a20b577 100644
--- a/exercises/practice/all-your-base/src/test/scala/AllYourBaseTest.scala
+++ b/exercises/practice/all-your-base/src/test/scala/AllYourBaseTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.3.0 */
-class AllYourBaseTest extends FunSuite with Matchers {
+class AllYourBaseTest extends AnyFunSuite with Matchers {
 
   test("single bit one to decimal") {
     AllYourBase.rebase(2, List(1), 10) should be(Some(List(1)))
diff --git a/exercises/practice/allergies/build.sbt b/exercises/practice/allergies/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/allergies/build.sbt
+++ b/exercises/practice/allergies/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/allergies/src/test/scala/AllergiesTest.scala b/exercises/practice/allergies/src/test/scala/AllergiesTest.scala
index 0b9de784..def3b4de 100644
--- a/exercises/practice/allergies/src/test/scala/AllergiesTest.scala
+++ b/exercises/practice/allergies/src/test/scala/AllergiesTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class AllergiesTest extends FunSuite with Matchers {
+class AllergiesTest extends AnyFunSuite with Matchers {
 
   test("Allergen.Peanuts - no allergies means not allergic") {
     Allergies.allergicTo(Allergen.Peanuts, 0) should be(false)
diff --git a/exercises/practice/alphametics/build.sbt b/exercises/practice/alphametics/build.sbt
index 60545403..c5dc7f35 100644
--- a/exercises/practice/alphametics/build.sbt
+++ b/exercises/practice/alphametics/build.sbt
@@ -1,5 +1,5 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.5"
 
diff --git a/exercises/practice/alphametics/src/test/scala/AlphameticsTest.scala b/exercises/practice/alphametics/src/test/scala/AlphameticsTest.scala
index 64e618ca..c3de2130 100644
--- a/exercises/practice/alphametics/src/test/scala/AlphameticsTest.scala
+++ b/exercises/practice/alphametics/src/test/scala/AlphameticsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class AlphameticsTest extends FunSuite with Matchers {
+class AlphameticsTest extends AnyFunSuite with Matchers {
 
   test("puzzle with three letters") {
     Alphametics.solve("I + BB == ILL") should be(
diff --git a/exercises/practice/anagram/build.sbt b/exercises/practice/anagram/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/anagram/build.sbt
+++ b/exercises/practice/anagram/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/anagram/src/test/scala/AnagramTest.scala b/exercises/practice/anagram/src/test/scala/AnagramTest.scala
index a7ec446a..8db4329e 100644
--- a/exercises/practice/anagram/src/test/scala/AnagramTest.scala
+++ b/exercises/practice/anagram/src/test/scala/AnagramTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.4.0 */
-class AnagramTest extends FunSuite with Matchers {
+class AnagramTest extends AnyFunSuite with Matchers {
 
   test("no matches") {
     Anagram.findAnagrams("diaper", List("hello", "world", "zombies", "pants")) should be(
diff --git a/exercises/practice/armstrong-numbers/build.sbt b/exercises/practice/armstrong-numbers/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/armstrong-numbers/build.sbt
+++ b/exercises/practice/armstrong-numbers/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/armstrong-numbers/src/test/scala/ArmstrongNumbersTest.scala b/exercises/practice/armstrong-numbers/src/test/scala/ArmstrongNumbersTest.scala
index 2802a633..9b271c8b 100644
--- a/exercises/practice/armstrong-numbers/src/test/scala/ArmstrongNumbersTest.scala
+++ b/exercises/practice/armstrong-numbers/src/test/scala/ArmstrongNumbersTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.0.0 */
-class ArmstrongNumbersTest extends FunSuite with Matchers {
+class ArmstrongNumbersTest extends AnyFunSuite with Matchers {
 
   test("Single digit numbers are Armstrong numbers") {
     ArmstrongNumbers.isArmstrongNumber(5) should be (true)
diff --git a/exercises/practice/atbash-cipher/build.sbt b/exercises/practice/atbash-cipher/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/atbash-cipher/build.sbt
+++ b/exercises/practice/atbash-cipher/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/atbash-cipher/src/test/scala/AtbashCipherTest.scala b/exercises/practice/atbash-cipher/src/test/scala/AtbashCipherTest.scala
index b6c8e048..7a5cf266 100644
--- a/exercises/practice/atbash-cipher/src/test/scala/AtbashCipherTest.scala
+++ b/exercises/practice/atbash-cipher/src/test/scala/AtbashCipherTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class AtbashCipherTest extends FunSuite with Matchers {
+class AtbashCipherTest extends AnyFunSuite with Matchers {
 
   test("encode yes") {
     AtbashCipher.encode("yes") should be("bvh")
diff --git a/exercises/practice/bank-account/build.sbt b/exercises/practice/bank-account/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/bank-account/build.sbt
+++ b/exercises/practice/bank-account/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/bank-account/src/test/scala/BankAccountTest.scala b/exercises/practice/bank-account/src/test/scala/BankAccountTest.scala
index 7debe027..bc1c23d9 100644
--- a/exercises/practice/bank-account/src/test/scala/BankAccountTest.scala
+++ b/exercises/practice/bank-account/src/test/scala/BankAccountTest.scala
@@ -1,8 +1,10 @@
 import org.scalatest.concurrent.{IntegrationPatience, Conductors}
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version created manually **/
-class BankAccountTest extends FunSuite with Matchers with Conductors with IntegrationPatience {
+class BankAccountTest extends AnyFunSuite with Matchers with Conductors with IntegrationPatience {
   test("open account") {
     Bank.openAccount().getBalance should be (Some(0))
   }
@@ -33,7 +35,7 @@ class BankAccountTest extends FunSuite with Matchers with Conductors with Integr
 
     val acct = Bank.openAccount()
 
-    thread("t1") {
+    threadNamed("t1") {
       acct.incrementBalance(10)
       acct.getBalance should be (Some(10))
       beat should be (1)
@@ -41,7 +43,7 @@ class BankAccountTest extends FunSuite with Matchers with Conductors with Integr
       acct.getBalance should be (Some(15))
     }
 
-    thread("t2") {
+    threadNamed("t2") {
       waitForBeat(1)
       acct.getBalance should be (Some(10))
       acct.incrementBalance(5)
@@ -57,12 +59,12 @@ class BankAccountTest extends FunSuite with Matchers with Conductors with Integr
 
     val acct = Bank.openAccount()
 
-    thread("t1") {
+    threadNamed("t1") {
       for (a <- 1 to 10)
         acct.incrementBalance(10)
     }
 
-    thread("t2") {
+    threadNamed("t2") {
       for (a <- 1 to 10)
         acct.incrementBalance(5)
     }
diff --git a/exercises/practice/beer-song/build.sbt b/exercises/practice/beer-song/build.sbt
index 7fd8c001..382d6ca0 100644
--- a/exercises/practice/beer-song/build.sbt
+++ b/exercises/practice/beer-song/build.sbt
@@ -1,3 +1,3 @@
 name := "beer-song"
 scalaVersion := "2.12.2"
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/beer-song/src/test/scala/BeerSongTest.scala b/exercises/practice/beer-song/src/test/scala/BeerSongTest.scala
index 14c929b7..8649d780 100644
--- a/exercises/practice/beer-song/src/test/scala/BeerSongTest.scala
+++ b/exercises/practice/beer-song/src/test/scala/BeerSongTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.1.0 */
-class BeerSongTest extends FunSuite with Matchers {
+class BeerSongTest extends AnyFunSuite with Matchers {
 
   test("first generic verse") {
     BeerSong.recite(99, 1) should be(
diff --git a/exercises/practice/binary-search-tree/build.sbt b/exercises/practice/binary-search-tree/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/binary-search-tree/build.sbt
+++ b/exercises/practice/binary-search-tree/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/binary-search-tree/src/test/scala/BstTest.scala b/exercises/practice/binary-search-tree/src/test/scala/BstTest.scala
index db238c91..5f9cd13e 100644
--- a/exercises/practice/binary-search-tree/src/test/scala/BstTest.scala
+++ b/exercises/practice/binary-search-tree/src/test/scala/BstTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version created manually **/
-class BstTest extends FlatSpec with Matchers {
+class BstTest extends AnyFlatSpec with Matchers {
   val bst4 = Bst(4)
 
   it should "retain data" in {
diff --git a/exercises/practice/binary-search/build.sbt b/exercises/practice/binary-search/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/binary-search/build.sbt
+++ b/exercises/practice/binary-search/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/binary-search/src/test/scala/BinarySearchTest.scala b/exercises/practice/binary-search/src/test/scala/BinarySearchTest.scala
index a00ff72c..33a4d9a4 100644
--- a/exercises/practice/binary-search/src/test/scala/BinarySearchTest.scala
+++ b/exercises/practice/binary-search/src/test/scala/BinarySearchTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class BinarySearchTest extends FunSuite with Matchers {
+class BinarySearchTest extends AnyFunSuite with Matchers {
 
   test("finds a value in an array with one element") {
     BinarySearch.find(List(6), 6) should be(Some(0))
diff --git a/exercises/practice/binary/build.sbt b/exercises/practice/binary/build.sbt
index 7c1b06c2..5c3f1f1a 100644
--- a/exercises/practice/binary/build.sbt
+++ b/exercises/practice/binary/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
 libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
diff --git a/exercises/practice/binary/src/test/scala/BinaryTest.scala b/exercises/practice/binary/src/test/scala/BinaryTest.scala
index 61f8114c..baa5323e 100644
--- a/exercises/practice/binary/src/test/scala/BinaryTest.scala
+++ b/exercises/practice/binary/src/test/scala/BinaryTest.scala
@@ -1,6 +1,8 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 
-class BinaryTest extends FunSuite with Matchers {
+
+class BinaryTest extends AnyFunSuite with Matchers {
   test("empty string") {
     Binary("").toDecimal should be (0)
   }
diff --git a/exercises/practice/bob/build.sbt b/exercises/practice/bob/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/bob/build.sbt
+++ b/exercises/practice/bob/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/bob/src/test/scala/BobTest.scala b/exercises/practice/bob/src/test/scala/BobTest.scala
index 79793936..d9b38d9c 100644
--- a/exercises/practice/bob/src/test/scala/BobTest.scala
+++ b/exercises/practice/bob/src/test/scala/BobTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.4.0 */
-class BobTest extends FunSuite with Matchers {
+class BobTest extends AnyFunSuite with Matchers {
 
   test("stating something") {
     Bob.response("Tom-ay-to, tom-aaaah-to.") should be("Whatever.")
diff --git a/exercises/practice/book-store/build.sbt b/exercises/practice/book-store/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/book-store/build.sbt
+++ b/exercises/practice/book-store/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/book-store/src/test/scala/BookStoreTest.scala b/exercises/practice/book-store/src/test/scala/BookStoreTest.scala
index 271c7e00..ab38ec73 100644
--- a/exercises/practice/book-store/src/test/scala/BookStoreTest.scala
+++ b/exercises/practice/book-store/src/test/scala/BookStoreTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.4.0 */
-class BookStoreTest extends FunSuite with Matchers {
+class BookStoreTest extends AnyFunSuite with Matchers {
 
 
   test("Only a single book") {
diff --git a/exercises/practice/bowling/build.sbt b/exercises/practice/bowling/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/bowling/build.sbt
+++ b/exercises/practice/bowling/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/bowling/src/test/scala/BowlingTest.scala b/exercises/practice/bowling/src/test/scala/BowlingTest.scala
index 88103cac..f328cebe 100644
--- a/exercises/practice/bowling/src/test/scala/BowlingTest.scala
+++ b/exercises/practice/bowling/src/test/scala/BowlingTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.0.1 */
-class BowlingTest extends FunSuite with Matchers {
+class BowlingTest extends AnyFunSuite with Matchers {
 
   test("should be able to score a game with all zeros") {
     val score = List(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0).foldLeft(Bowling())((acc, roll) => acc.roll(roll)).score()
diff --git a/exercises/practice/change/build.sbt b/exercises/practice/change/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/change/build.sbt
+++ b/exercises/practice/change/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/change/src/test/scala/ChangeTest.scala b/exercises/practice/change/src/test/scala/ChangeTest.scala
index bac9aa5f..b2c0aac1 100644
--- a/exercises/practice/change/src/test/scala/ChangeTest.scala
+++ b/exercises/practice/change/src/test/scala/ChangeTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class ChangeTest extends FunSuite with Matchers {
+class ChangeTest extends AnyFunSuite with Matchers {
   
   test("single coin change") {
     Change.findFewestCoins(25, List(1, 5, 10, 25, 100)) should be (Some(List(25)))
diff --git a/exercises/practice/clock/build.sbt b/exercises/practice/clock/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/clock/build.sbt
+++ b/exercises/practice/clock/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/clock/src/test/scala/ClockTest.scala b/exercises/practice/clock/src/test/scala/ClockTest.scala
index dc065395..9f82bcdf 100644
--- a/exercises/practice/clock/src/test/scala/ClockTest.scala
+++ b/exercises/practice/clock/src/test/scala/ClockTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.2.1 */
-class ClockTest extends FunSuite with Matchers {
+class ClockTest extends AnyFunSuite with Matchers {
 
   test("on the hour") {
     Clock(8, 0) should be(Clock(8, 0))
diff --git a/exercises/practice/collatz-conjecture/build.sbt b/exercises/practice/collatz-conjecture/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/collatz-conjecture/build.sbt
+++ b/exercises/practice/collatz-conjecture/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/collatz-conjecture/src/test/scala/CollatzConjectureTest.scala b/exercises/practice/collatz-conjecture/src/test/scala/CollatzConjectureTest.scala
index 134e7724..2484fad3 100644
--- a/exercises/practice/collatz-conjecture/src/test/scala/CollatzConjectureTest.scala
+++ b/exercises/practice/collatz-conjecture/src/test/scala/CollatzConjectureTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class CollatzConjectureTest extends FunSuite with Matchers {
+class CollatzConjectureTest extends AnyFunSuite with Matchers {
 
   test("zero steps for one") {
     CollatzConjecture.steps(1) should be (Some(0))
diff --git a/exercises/practice/complex-numbers/build.sbt b/exercises/practice/complex-numbers/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/complex-numbers/build.sbt
+++ b/exercises/practice/complex-numbers/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/complex-numbers/src/test/scala/ComplexNumberTest.scala b/exercises/practice/complex-numbers/src/test/scala/ComplexNumberTest.scala
index 2973924f..f18ecc38 100644
--- a/exercises/practice/complex-numbers/src/test/scala/ComplexNumberTest.scala
+++ b/exercises/practice/complex-numbers/src/test/scala/ComplexNumberTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class ComplexNumberTest extends FunSuite with Matchers {
+class ComplexNumberTest extends AnyFunSuite with Matchers {
 
   private val equalityEpsilon = 1e-15
 
diff --git a/exercises/practice/connect/build.sbt b/exercises/practice/connect/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/connect/build.sbt
+++ b/exercises/practice/connect/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/connect/src/test/scala/ConnectTest.scala b/exercises/practice/connect/src/test/scala/ConnectTest.scala
index 7ace0f2b..bc7a5507 100644
--- a/exercises/practice/connect/src/test/scala/ConnectTest.scala
+++ b/exercises/practice/connect/src/test/scala/ConnectTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class ConnectTest extends FunSuite with Matchers {
+class ConnectTest extends AnyFunSuite with Matchers {
 
   // Filter readable board into valid input
   private def mkBoard(lines: List[String]): List[String] =
diff --git a/exercises/practice/crypto-square/build.sbt b/exercises/practice/crypto-square/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/crypto-square/build.sbt
+++ b/exercises/practice/crypto-square/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/crypto-square/src/test/scala/CryptoSquareTest.scala b/exercises/practice/crypto-square/src/test/scala/CryptoSquareTest.scala
index d8cfae78..7f0eda8f 100644
--- a/exercises/practice/crypto-square/src/test/scala/CryptoSquareTest.scala
+++ b/exercises/practice/crypto-square/src/test/scala/CryptoSquareTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 3.2.0 */
-class CryptoSquareTest extends FunSuite with Matchers {
+class CryptoSquareTest extends AnyFunSuite with Matchers {
 
   test("empty plaintext results in an empty ciphertext") {
     CryptoSquare.ciphertext("") should be("")
diff --git a/exercises/practice/custom-set/build.sbt b/exercises/practice/custom-set/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/custom-set/build.sbt
+++ b/exercises/practice/custom-set/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/custom-set/src/test/scala/CustomSetTest.scala b/exercises/practice/custom-set/src/test/scala/CustomSetTest.scala
index 67771df2..341f36ed 100644
--- a/exercises/practice/custom-set/src/test/scala/CustomSetTest.scala
+++ b/exercises/practice/custom-set/src/test/scala/CustomSetTest.scala
@@ -1,7 +1,8 @@
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 
 /** @version 1.3.0 */
-class CustomSetTest extends FunSuite with Matchers {
+class CustomSetTest extends AnyFunSuite with Matchers {
 
   // Empty test cases - Returns true if the set contains no elements
   test("sets with no elements are empty") {
diff --git a/exercises/practice/darts/build.sbt b/exercises/practice/darts/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/darts/build.sbt
+++ b/exercises/practice/darts/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/darts/src/test/scala/DartsTest.scala b/exercises/practice/darts/src/test/scala/DartsTest.scala
index 43c4390b..06ba6e98 100644
--- a/exercises/practice/darts/src/test/scala/DartsTest.scala
+++ b/exercises/practice/darts/src/test/scala/DartsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.0.0 */
-class DartsTest extends FunSuite with Matchers {
+class DartsTest extends AnyFunSuite with Matchers {
 
   test("A dart lands outside the target") {
     Darts.score(15.3, 13.2) should be (0)
diff --git a/exercises/practice/diamond/build.sbt b/exercises/practice/diamond/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/diamond/build.sbt
+++ b/exercises/practice/diamond/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/diamond/src/test/scala/DiamondTest.scala b/exercises/practice/diamond/src/test/scala/DiamondTest.scala
index 8ee47c6e..50088994 100644
--- a/exercises/practice/diamond/src/test/scala/DiamondTest.scala
+++ b/exercises/practice/diamond/src/test/scala/DiamondTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class DiamondTest extends FunSuite with Matchers {
+class DiamondTest extends AnyFunSuite with Matchers {
 
   test("Degenerate case with a single 'A' row") {
     Diamond.rows('A') should be(List("A"))
diff --git a/exercises/practice/difference-of-squares/build.sbt b/exercises/practice/difference-of-squares/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/difference-of-squares/build.sbt
+++ b/exercises/practice/difference-of-squares/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/difference-of-squares/src/test/scala/DifferenceOfSquaresTest.scala b/exercises/practice/difference-of-squares/src/test/scala/DifferenceOfSquaresTest.scala
index a4f9eaed..8777fc1b 100644
--- a/exercises/practice/difference-of-squares/src/test/scala/DifferenceOfSquaresTest.scala
+++ b/exercises/practice/difference-of-squares/src/test/scala/DifferenceOfSquaresTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class DifferenceOfSquaresTest extends FunSuite with Matchers {
+class DifferenceOfSquaresTest extends AnyFunSuite with Matchers {
 
   test("square of sum 1") {
     DifferenceOfSquares.squareOfSum(1) should be (1)
diff --git a/exercises/practice/dominoes/build.sbt b/exercises/practice/dominoes/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/dominoes/build.sbt
+++ b/exercises/practice/dominoes/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/dominoes/src/test/scala/DominoesTest.scala b/exercises/practice/dominoes/src/test/scala/DominoesTest.scala
index 6ae9a3ee..4022c5ed 100644
--- a/exercises/practice/dominoes/src/test/scala/DominoesTest.scala
+++ b/exercises/practice/dominoes/src/test/scala/DominoesTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.1.0 */
-class DominoesTest extends FunSuite with Matchers {
+class DominoesTest extends AnyFunSuite with Matchers {
 
   private def check(input: List[(Int, Int)], hasResult: Boolean): Unit = {
     val result = Dominoes.chain(input)
diff --git a/exercises/practice/etl/build.sbt b/exercises/practice/etl/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/etl/build.sbt
+++ b/exercises/practice/etl/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/etl/src/test/scala/EtlTest.scala b/exercises/practice/etl/src/test/scala/EtlTest.scala
index 0aa98318..55bd7db5 100644
--- a/exercises/practice/etl/src/test/scala/EtlTest.scala
+++ b/exercises/practice/etl/src/test/scala/EtlTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.0.0 */
-class EtlTest extends FunSuite with Matchers {
+class EtlTest extends AnyFunSuite with Matchers {
 
   test("a single letter") {
     Etl.transform(Map(1 -> Seq("A"))) should be(Map("a" -> 1))
diff --git a/exercises/practice/flatten-array/build.sbt b/exercises/practice/flatten-array/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/flatten-array/build.sbt
+++ b/exercises/practice/flatten-array/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/flatten-array/src/test/scala/FlattenArrayTest.scala b/exercises/practice/flatten-array/src/test/scala/FlattenArrayTest.scala
index 12ed133d..61b32425 100644
--- a/exercises/practice/flatten-array/src/test/scala/FlattenArrayTest.scala
+++ b/exercises/practice/flatten-array/src/test/scala/FlattenArrayTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class FlattenArrayTest extends FunSuite with Matchers {
+class FlattenArrayTest extends AnyFunSuite with Matchers {
 
   test("no nesting") {
     FlattenArray.flatten(List(0, 1, 2)) should be(List(0, 1, 2))
diff --git a/exercises/practice/food-chain/build.sbt b/exercises/practice/food-chain/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/food-chain/build.sbt
+++ b/exercises/practice/food-chain/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/food-chain/src/test/scala/FoodChainTest.scala b/exercises/practice/food-chain/src/test/scala/FoodChainTest.scala
index 43dc142f..3b53d350 100644
--- a/exercises/practice/food-chain/src/test/scala/FoodChainTest.scala
+++ b/exercises/practice/food-chain/src/test/scala/FoodChainTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.1.0 */
-class FoodChainTest extends FunSuite with Matchers {
+class FoodChainTest extends AnyFunSuite with Matchers {
 
   test("fly") {
     FoodChain.recite(1, 1) should be ("""I know an old lady who swallowed a fly.
diff --git a/exercises/practice/forth/build.sbt b/exercises/practice/forth/build.sbt
index d3b522ac..8be9abc9 100644
--- a/exercises/practice/forth/build.sbt
+++ b/exercises/practice/forth/build.sbt
@@ -1,5 +1,5 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
diff --git a/exercises/practice/forth/src/test/scala/ForthTest.scala b/exercises/practice/forth/src/test/scala/ForthTest.scala
index 357d3df8..bf037ef8 100644
--- a/exercises/practice/forth/src/test/scala/ForthTest.scala
+++ b/exercises/practice/forth/src/test/scala/ForthTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.6.0 */
-class ForthTest extends FunSuite with Matchers {
+class ForthTest extends AnyFunSuite with Matchers {
 
   private val forth = new Forth
 
diff --git a/exercises/practice/gigasecond/build.sbt b/exercises/practice/gigasecond/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/gigasecond/build.sbt
+++ b/exercises/practice/gigasecond/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/gigasecond/src/test/scala/GigasecondTest.scala b/exercises/practice/gigasecond/src/test/scala/GigasecondTest.scala
index f38d2c70..128c6d3a 100644
--- a/exercises/practice/gigasecond/src/test/scala/GigasecondTest.scala
+++ b/exercises/practice/gigasecond/src/test/scala/GigasecondTest.scala
@@ -2,10 +2,12 @@ import java.time.LocalDate
 import java.time.LocalDateTime
 import java.time.format.DateTimeFormatter
 
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class GigasecondTest extends FunSuite with Matchers {
+class GigasecondTest extends AnyFunSuite with Matchers {
 
   private def dateTime(str: String): LocalDateTime =
     LocalDateTime.from(DateTimeFormatter.ISO_DATE_TIME.parse(str))
diff --git a/exercises/practice/grade-school/build.sbt b/exercises/practice/grade-school/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/grade-school/build.sbt
+++ b/exercises/practice/grade-school/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/grade-school/src/test/scala/GradeSchoolTest.scala b/exercises/practice/grade-school/src/test/scala/GradeSchoolTest.scala
index 1858024d..ca3033af 100644
--- a/exercises/practice/grade-school/src/test/scala/GradeSchoolTest.scala
+++ b/exercises/practice/grade-school/src/test/scala/GradeSchoolTest.scala
@@ -1,7 +1,10 @@
-import org.scalatest._
+import org.scalatest.matchers.should.Matchers
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.OneInstancePerTest
 
 /** @version created manually **/
-class GradeSchoolTest extends FunSuite with Matchers with OneInstancePerTest {
+class GradeSchoolTest extends AnyFunSuite with Matchers with OneInstancePerTest {
+
   val school = new School
 
   test ("empty school") {
diff --git a/exercises/practice/grains/build.sbt b/exercises/practice/grains/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/grains/build.sbt
+++ b/exercises/practice/grains/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/grains/src/test/scala/GrainsTest.scala b/exercises/practice/grains/src/test/scala/GrainsTest.scala
index 0d1b87da..83a99756 100644
--- a/exercises/practice/grains/src/test/scala/GrainsTest.scala
+++ b/exercises/practice/grains/src/test/scala/GrainsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class GrainsTest extends FunSuite with Matchers {
+class GrainsTest extends AnyFunSuite with Matchers {
 
   test("1") {
     Grains.square(1) should be(Some(1))
diff --git a/exercises/practice/hamming/build.sbt b/exercises/practice/hamming/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/hamming/build.sbt
+++ b/exercises/practice/hamming/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/hamming/src/test/scala/HammingTest.scala b/exercises/practice/hamming/src/test/scala/HammingTest.scala
index f52346e7..81d16014 100644
--- a/exercises/practice/hamming/src/test/scala/HammingTest.scala
+++ b/exercises/practice/hamming/src/test/scala/HammingTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.1.0 */
-class HammingTest extends FunSuite with Matchers {
+class HammingTest extends AnyFunSuite with Matchers {
   
   test("empty strands") {
     Hamming.distance("", "") should be (Some(0))
diff --git a/exercises/practice/hello-world/build.sbt b/exercises/practice/hello-world/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/hello-world/build.sbt
+++ b/exercises/practice/hello-world/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/hello-world/src/test/scala/HelloWorldTest.scala b/exercises/practice/hello-world/src/test/scala/HelloWorldTest.scala
index 8af5c4d7..7ac8b58d 100644
--- a/exercises/practice/hello-world/src/test/scala/HelloWorldTest.scala
+++ b/exercises/practice/hello-world/src/test/scala/HelloWorldTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class HelloWorldTest extends FunSuite with Matchers {
+class HelloWorldTest extends AnyFunSuite with Matchers {
 
   test("Say Hi!") {
     HelloWorld.hello() should be ("Hello, World!")
diff --git a/exercises/practice/hexadecimal/build.sbt b/exercises/practice/hexadecimal/build.sbt
index 7c1b06c2..5c3f1f1a 100644
--- a/exercises/practice/hexadecimal/build.sbt
+++ b/exercises/practice/hexadecimal/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
 libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
diff --git a/exercises/practice/hexadecimal/src/test/scala/HexadecimalTest.scala b/exercises/practice/hexadecimal/src/test/scala/HexadecimalTest.scala
index e98949a9..3e404082 100644
--- a/exercises/practice/hexadecimal/src/test/scala/HexadecimalTest.scala
+++ b/exercises/practice/hexadecimal/src/test/scala/HexadecimalTest.scala
@@ -1,6 +1,8 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should.Matchers
 
-class HexadecimalTest extends FlatSpec with Matchers {
+
+class HexadecimalTest extends AnyFlatSpec with Matchers {
   it should "handle empty" in {
     Hexadecimal.hexToInt("") should equal(0)
   }
diff --git a/exercises/practice/high-scores/build.sbt b/exercises/practice/high-scores/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/high-scores/build.sbt
+++ b/exercises/practice/high-scores/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/high-scores/src/test/scala/HighScoresTest.scala b/exercises/practice/high-scores/src/test/scala/HighScoresTest.scala
index ef6e93fe..061b52cf 100644
--- a/exercises/practice/high-scores/src/test/scala/HighScoresTest.scala
+++ b/exercises/practice/high-scores/src/test/scala/HighScoresTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.0.0 */
-class HighScoresTest extends FunSuite with Matchers {
+class HighScoresTest extends AnyFunSuite with Matchers {
 
   test("Latest score") {
     HighScores.latest(List(100, 0, 90, 30)) should be(30)
diff --git a/exercises/practice/house/build.sbt b/exercises/practice/house/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/house/build.sbt
+++ b/exercises/practice/house/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/house/src/test/scala/HouseTest.scala b/exercises/practice/house/src/test/scala/HouseTest.scala
index a00bbdf9..0c7cc98e 100644
--- a/exercises/practice/house/src/test/scala/HouseTest.scala
+++ b/exercises/practice/house/src/test/scala/HouseTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.2.0 */
-class HouseTest extends FunSuite with Matchers {
+class HouseTest extends AnyFunSuite with Matchers {
 
   test("verse one - the house that jack built") {
     House.recite(1, 1) should be("""This is the house that Jack built.
diff --git a/exercises/practice/isogram/build.sbt b/exercises/practice/isogram/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/isogram/build.sbt
+++ b/exercises/practice/isogram/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/isogram/src/test/scala/IsogramTest.scala b/exercises/practice/isogram/src/test/scala/IsogramTest.scala
index dd4ec5e8..c6e2f8e4 100644
--- a/exercises/practice/isogram/src/test/scala/IsogramTest.scala
+++ b/exercises/practice/isogram/src/test/scala/IsogramTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.4.0 */
-class IsogramTest extends FunSuite with Matchers {
+class IsogramTest extends AnyFunSuite with Matchers {
 
   test("empty string") {
     Isogram.isIsogram("") should be(true)
diff --git a/exercises/practice/kindergarten-garden/build.sbt b/exercises/practice/kindergarten-garden/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/kindergarten-garden/build.sbt
+++ b/exercises/practice/kindergarten-garden/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/kindergarten-garden/src/test/scala/GardenTest.scala b/exercises/practice/kindergarten-garden/src/test/scala/GardenTest.scala
index 0661ae15..ca7817bb 100644
--- a/exercises/practice/kindergarten-garden/src/test/scala/GardenTest.scala
+++ b/exercises/practice/kindergarten-garden/src/test/scala/GardenTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.1 */
-class KindergartenGardenTest extends FunSuite with Matchers {
+class KindergartenGardenTest extends AnyFunSuite with Matchers {
 
   test("partial garden - garden with single student") {
     Garden.defaultGarden("RC\nGG").plants("Alice") should be(
diff --git a/exercises/practice/largest-series-product/build.sbt b/exercises/practice/largest-series-product/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/largest-series-product/build.sbt
+++ b/exercises/practice/largest-series-product/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/largest-series-product/src/test/scala/SeriesTest.scala b/exercises/practice/largest-series-product/src/test/scala/SeriesTest.scala
index 7f3bea3e..7773e3dc 100644
--- a/exercises/practice/largest-series-product/src/test/scala/SeriesTest.scala
+++ b/exercises/practice/largest-series-product/src/test/scala/SeriesTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class LargestSeriesProductTest extends FunSuite with Matchers {
+class LargestSeriesProductTest extends AnyFunSuite with Matchers {
 
   test("finds the largest product if span equals length") {
     Series.largestProduct(2, "29") should be(Some(18))
diff --git a/exercises/practice/leap/build.sbt b/exercises/practice/leap/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/leap/build.sbt
+++ b/exercises/practice/leap/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/leap/src/test/scala/LeapTest.scala b/exercises/practice/leap/src/test/scala/LeapTest.scala
index 9bead9cf..04e4757c 100644
--- a/exercises/practice/leap/src/test/scala/LeapTest.scala
+++ b/exercises/practice/leap/src/test/scala/LeapTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class LeapTest extends FunSuite with Matchers {
+class LeapTest extends AnyFunSuite with Matchers {
 
   test("year not divisible by 4: common year") {
     Leap.leapYear(2015) should be (false)
diff --git a/exercises/practice/lens-person/build.sbt b/exercises/practice/lens-person/build.sbt
index 855c87a9..4608fed4 100644
--- a/exercises/practice/lens-person/build.sbt
+++ b/exercises/practice/lens-person/build.sbt
@@ -1,6 +1,6 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
 val monocleVersion = "2.0.0"
 
diff --git a/exercises/practice/lens-person/src/test/scala/LensPersonTest.scala b/exercises/practice/lens-person/src/test/scala/LensPersonTest.scala
index 2eb9c054..8074a922 100644
--- a/exercises/practice/lens-person/src/test/scala/LensPersonTest.scala
+++ b/exercises/practice/lens-person/src/test/scala/LensPersonTest.scala
@@ -1,9 +1,10 @@
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 import java.time.LocalDate
 import LensPerson._
 
 /** @version created manually **/
-class LensPersonTest extends FunSuite with Matchers {
+class LensPersonTest extends AnyFunSuite with Matchers {
   val testPerson =
     Person(
         _name = Name(
diff --git a/exercises/practice/linked-list/build.sbt b/exercises/practice/linked-list/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/linked-list/build.sbt
+++ b/exercises/practice/linked-list/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/linked-list/src/test/scala/DequeTest.scala b/exercises/practice/linked-list/src/test/scala/DequeTest.scala
index d56151f5..1d1238b5 100644
--- a/exercises/practice/linked-list/src/test/scala/DequeTest.scala
+++ b/exercises/practice/linked-list/src/test/scala/DequeTest.scala
@@ -1,4 +1,6 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version created manually **/
 class DequeTest extends FlatSpec with Matchers {
diff --git a/exercises/practice/luhn/build.sbt b/exercises/practice/luhn/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/luhn/build.sbt
+++ b/exercises/practice/luhn/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/luhn/src/test/scala/LuhnTest.scala b/exercises/practice/luhn/src/test/scala/LuhnTest.scala
index dfb0140e..5e44adf1 100644
--- a/exercises/practice/luhn/src/test/scala/LuhnTest.scala
+++ b/exercises/practice/luhn/src/test/scala/LuhnTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class LuhnTest extends FunSuite with Matchers {
+class LuhnTest extends AnyFunSuite with Matchers {
 
   test("single digit strings can not be valid") {
     Luhn.valid("1") should be(false)
diff --git a/exercises/practice/matching-brackets/build.sbt b/exercises/practice/matching-brackets/build.sbt
index 83ac8038..5be54b0f 100644
--- a/exercises/practice/matching-brackets/build.sbt
+++ b/exercises/practice/matching-brackets/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.5"
diff --git a/exercises/practice/matching-brackets/src/test/scala/MatchingBracketsTest.scala b/exercises/practice/matching-brackets/src/test/scala/MatchingBracketsTest.scala
index b8014942..b030e0de 100644
--- a/exercises/practice/matching-brackets/src/test/scala/MatchingBracketsTest.scala
+++ b/exercises/practice/matching-brackets/src/test/scala/MatchingBracketsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class MatchingBracketsTest extends FunSuite with Matchers {
+class MatchingBracketsTest extends AnyFunSuite with Matchers {
 
   test("paired square brackets") {
     MatchingBrackets.isPaired("[]") should be(true)
diff --git a/exercises/practice/matrix/build.sbt b/exercises/practice/matrix/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/matrix/build.sbt
+++ b/exercises/practice/matrix/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/matrix/src/test/scala/MatrixTest.scala b/exercises/practice/matrix/src/test/scala/MatrixTest.scala
index 59410713..56cc09b8 100644
--- a/exercises/practice/matrix/src/test/scala/MatrixTest.scala
+++ b/exercises/practice/matrix/src/test/scala/MatrixTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.0.0 */
-class MatrixTest extends FunSuite with Matchers {
+class MatrixTest extends AnyFunSuite with Matchers {
 
   test("extract row from one number matrix") {
     Matrix("1").row(0) should be(Vector(1))
diff --git a/exercises/practice/meetup/build.sbt b/exercises/practice/meetup/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/meetup/build.sbt
+++ b/exercises/practice/meetup/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/meetup/src/test/scala/MeetupTest.scala b/exercises/practice/meetup/src/test/scala/MeetupTest.scala
index e25e1a15..7447cb53 100644
--- a/exercises/practice/meetup/src/test/scala/MeetupTest.scala
+++ b/exercises/practice/meetup/src/test/scala/MeetupTest.scala
@@ -1,9 +1,11 @@
 import java.time.LocalDate
 
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class MeetupTest extends FunSuite with Matchers {
+class MeetupTest extends AnyFunSuite with Matchers {
 
   test("monteenth of May 2013") {
     Meetup(5, 2013).day(Meetup.Mon, Schedule.Teenth) should be(
diff --git a/exercises/practice/minesweeper/build.sbt b/exercises/practice/minesweeper/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/minesweeper/build.sbt
+++ b/exercises/practice/minesweeper/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/minesweeper/src/test/scala/MinesweeperTest.scala b/exercises/practice/minesweeper/src/test/scala/MinesweeperTest.scala
index cbc304de..1a8bef4f 100644
--- a/exercises/practice/minesweeper/src/test/scala/MinesweeperTest.scala
+++ b/exercises/practice/minesweeper/src/test/scala/MinesweeperTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class MinesweeperTest extends FunSuite with Matchers {
+class MinesweeperTest extends AnyFunSuite with Matchers {
 
   test("no rows") {
     Minesweeper.annotate(List()) should be(List())
diff --git a/exercises/practice/nth-prime/build.sbt b/exercises/practice/nth-prime/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/nth-prime/build.sbt
+++ b/exercises/practice/nth-prime/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/nth-prime/src/test/scala/NthPrimeTest.scala b/exercises/practice/nth-prime/src/test/scala/NthPrimeTest.scala
index f793dd3b..04e8865c 100644
--- a/exercises/practice/nth-prime/src/test/scala/NthPrimeTest.scala
+++ b/exercises/practice/nth-prime/src/test/scala/NthPrimeTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.1.0 */
-class NthPrimeTest extends FunSuite with Matchers {
+class NthPrimeTest extends AnyFunSuite with Matchers {
   
   test("first prime") {
     NthPrime.prime(1) should be (Some(2))
diff --git a/exercises/practice/nucleotide-count/build.sbt b/exercises/practice/nucleotide-count/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/nucleotide-count/build.sbt
+++ b/exercises/practice/nucleotide-count/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/nucleotide-count/src/test/scala/NucleotideCountTest.scala b/exercises/practice/nucleotide-count/src/test/scala/NucleotideCountTest.scala
index 7113ff60..2cc94af1 100644
--- a/exercises/practice/nucleotide-count/src/test/scala/NucleotideCountTest.scala
+++ b/exercises/practice/nucleotide-count/src/test/scala/NucleotideCountTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class NucleotideCountTest extends FunSuite with Matchers {
+class NucleotideCountTest extends AnyFunSuite with Matchers {
 
   test("empty strand") {
     new DNA("").nucleotideCounts should be(
diff --git a/exercises/practice/ocr-numbers/build.sbt b/exercises/practice/ocr-numbers/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/ocr-numbers/build.sbt
+++ b/exercises/practice/ocr-numbers/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/ocr-numbers/src/test/scala/OcrNumbersTest.scala b/exercises/practice/ocr-numbers/src/test/scala/OcrNumbersTest.scala
index e3b6b0ce..2c39557f 100644
--- a/exercises/practice/ocr-numbers/src/test/scala/OcrNumbersTest.scala
+++ b/exercises/practice/ocr-numbers/src/test/scala/OcrNumbersTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class OcrNumbersTest extends FunSuite with Matchers {
+class OcrNumbersTest extends AnyFunSuite with Matchers {
 
   test("Recognizes 0") {
     OcrNumbers.convert(List(" _ ",
diff --git a/exercises/practice/octal/build.sbt b/exercises/practice/octal/build.sbt
index 7c1b06c2..5c3f1f1a 100644
--- a/exercises/practice/octal/build.sbt
+++ b/exercises/practice/octal/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
 libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
diff --git a/exercises/practice/octal/src/test/scala/OctalTest.scala b/exercises/practice/octal/src/test/scala/OctalTest.scala
index 0b4dea20..b464dd27 100644
--- a/exercises/practice/octal/src/test/scala/OctalTest.scala
+++ b/exercises/practice/octal/src/test/scala/OctalTest.scala
@@ -1,6 +1,8 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should.Matchers
 
-class OctalTest extends FlatSpec with Matchers {
+
+class OctalTest extends AnyFlatSpec with Matchers {
   it should "empty string should error" in {
     intercept[IllegalArgumentException] {
       Octal.octalToInt("")
diff --git a/exercises/practice/palindrome-products/build.sbt b/exercises/practice/palindrome-products/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/palindrome-products/build.sbt
+++ b/exercises/practice/palindrome-products/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/palindrome-products/src/test/scala/PalindromeProductsTest.scala b/exercises/practice/palindrome-products/src/test/scala/PalindromeProductsTest.scala
index 0550f1f7..89589560 100644
--- a/exercises/practice/palindrome-products/src/test/scala/PalindromeProductsTest.scala
+++ b/exercises/practice/palindrome-products/src/test/scala/PalindromeProductsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class PalindromeProductsTest extends FunSuite with Matchers {
+class PalindromeProductsTest extends AnyFunSuite with Matchers {
 
   // PalindromeProducts largest call is expecting a return type of
   // Option[(Int, Set[(Int, Int)])] - None is expected for error cases.
diff --git a/exercises/practice/pangram/build.sbt b/exercises/practice/pangram/build.sbt
index ef6916fc..f9b3bb69 100644
--- a/exercises/practice/pangram/build.sbt
+++ b/exercises/practice/pangram/build.sbt
@@ -1,5 +1,5 @@
 
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/pangram/src/test/scala/PangramTest.scala b/exercises/practice/pangram/src/test/scala/PangramTest.scala
index bbb200f5..d89e0332 100644
--- a/exercises/practice/pangram/src/test/scala/PangramTest.scala
+++ b/exercises/practice/pangram/src/test/scala/PangramTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.4.0 */
-class PangramTest extends FunSuite with Matchers {
+class PangramTest extends AnyFunSuite with Matchers {
 
   test("sentence empty") {
     Pangrams.isPangram("") should be (false)
diff --git a/exercises/practice/parallel-letter-frequency/build.sbt b/exercises/practice/parallel-letter-frequency/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/parallel-letter-frequency/build.sbt
+++ b/exercises/practice/parallel-letter-frequency/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/parallel-letter-frequency/src/test/scala/FrequencyTest.scala b/exercises/practice/parallel-letter-frequency/src/test/scala/FrequencyTest.scala
index 615df500..38416f22 100644
--- a/exercises/practice/parallel-letter-frequency/src/test/scala/FrequencyTest.scala
+++ b/exercises/practice/parallel-letter-frequency/src/test/scala/FrequencyTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version created manually **/
-class FrequencyTest extends FunSuite with Matchers {
+class FrequencyTest extends AnyFunSuite with Matchers {
 
   // Poem by Friedrich Schiller. The corresponding music is the European
   // Anthem.
diff --git a/exercises/practice/pascals-triangle/build.sbt b/exercises/practice/pascals-triangle/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/pascals-triangle/build.sbt
+++ b/exercises/practice/pascals-triangle/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/pascals-triangle/src/test/scala/PascalsTriangleTest.scala b/exercises/practice/pascals-triangle/src/test/scala/PascalsTriangleTest.scala
index 59718dc5..d4dab3ed 100644
--- a/exercises/practice/pascals-triangle/src/test/scala/PascalsTriangleTest.scala
+++ b/exercises/practice/pascals-triangle/src/test/scala/PascalsTriangleTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.3.0 */
-class PascalsTriangleTest extends FunSuite with Matchers {
+class PascalsTriangleTest extends AnyFunSuite with Matchers {
 
   test("zero rows") {
     PascalsTriangle.rows(0) should be(List())
diff --git a/exercises/practice/perfect-numbers/build.sbt b/exercises/practice/perfect-numbers/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/perfect-numbers/build.sbt
+++ b/exercises/practice/perfect-numbers/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/perfect-numbers/src/test/scala/PerfectNumbersTest.scala b/exercises/practice/perfect-numbers/src/test/scala/PerfectNumbersTest.scala
index b6fa185a..ca98bd53 100644
--- a/exercises/practice/perfect-numbers/src/test/scala/PerfectNumbersTest.scala
+++ b/exercises/practice/perfect-numbers/src/test/scala/PerfectNumbersTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class PerfectNumbersTest extends FunSuite with Matchers {
+class PerfectNumbersTest extends AnyFunSuite with Matchers {
 
   test("Smallest perfect number is classified correctly") {
     PerfectNumbers.classify(6) should be(Right(NumberType.Perfect))
diff --git a/exercises/practice/phone-number/build.sbt b/exercises/practice/phone-number/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/phone-number/build.sbt
+++ b/exercises/practice/phone-number/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/phone-number/src/test/scala/PhoneNumberTest.scala b/exercises/practice/phone-number/src/test/scala/PhoneNumberTest.scala
index 69a313fc..e7c2f048 100644
--- a/exercises/practice/phone-number/src/test/scala/PhoneNumberTest.scala
+++ b/exercises/practice/phone-number/src/test/scala/PhoneNumberTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.4.0 */
-class PhoneNumberTest extends FunSuite with Matchers {
+class PhoneNumberTest extends AnyFunSuite with Matchers {
 
   test("cleans the number") {
     PhoneNumber.clean("(223) 456-7890") should be(Some("2234567890"))
diff --git a/exercises/practice/pig-latin/build.sbt b/exercises/practice/pig-latin/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/pig-latin/build.sbt
+++ b/exercises/practice/pig-latin/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/pig-latin/src/test/scala/PigLatinTest.scala b/exercises/practice/pig-latin/src/test/scala/PigLatinTest.scala
index 2d1854b9..d36e094b 100644
--- a/exercises/practice/pig-latin/src/test/scala/PigLatinTest.scala
+++ b/exercises/practice/pig-latin/src/test/scala/PigLatinTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class PigLatinTest extends FunSuite with Matchers {
+class PigLatinTest extends AnyFunSuite with Matchers {
 
   test("word beginning with a") {
     PigLatin.translate("apple") should be("appleay")
diff --git a/exercises/practice/prime-factors/build.sbt b/exercises/practice/prime-factors/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/prime-factors/build.sbt
+++ b/exercises/practice/prime-factors/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/prime-factors/src/test/scala/PrimefactorsTest.scala b/exercises/practice/prime-factors/src/test/scala/PrimefactorsTest.scala
index d28ff80d..5cff0ba1 100644
--- a/exercises/practice/prime-factors/src/test/scala/PrimefactorsTest.scala
+++ b/exercises/practice/prime-factors/src/test/scala/PrimefactorsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class PrimeFactorsTest extends FunSuite with Matchers {
+class PrimeFactorsTest extends AnyFunSuite with Matchers {
 
   test("no factors") {
     PrimeFactors.factors(1) should be(List())
diff --git a/exercises/practice/protein-translation/build.sbt b/exercises/practice/protein-translation/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/protein-translation/build.sbt
+++ b/exercises/practice/protein-translation/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/protein-translation/src/test/scala/ProteinTranslationTest.scala b/exercises/practice/protein-translation/src/test/scala/ProteinTranslationTest.scala
index 9c717e0d..91500476 100644
--- a/exercises/practice/protein-translation/src/test/scala/ProteinTranslationTest.scala
+++ b/exercises/practice/protein-translation/src/test/scala/ProteinTranslationTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class ProteinTranslationTest extends FunSuite with Matchers {
+class ProteinTranslationTest extends AnyFunSuite with Matchers {
 
   test("Methionine RNA sequence") {
     ProteinTranslation.proteins("AUG") should be(Seq("Methionine"))
diff --git a/exercises/practice/pythagorean-triplet/build.sbt b/exercises/practice/pythagorean-triplet/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/pythagorean-triplet/build.sbt
+++ b/exercises/practice/pythagorean-triplet/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala b/exercises/practice/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala
index dac81563..70793777 100644
--- a/exercises/practice/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala
+++ b/exercises/practice/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala
@@ -1,7 +1,8 @@
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 
 /** @version created manually **/
-class PythagoreanTripletTest extends FunSuite with Matchers {
+class PythagoreanTripletTest extends AnyFunSuite with Matchers {
   test("isPythagorean") {
     PythagoreanTriplet.isPythagorean((3, 4, 5)) should be (true)
     PythagoreanTriplet.isPythagorean((3, 5, 4)) should be (true)
diff --git a/exercises/practice/queen-attack/build.sbt b/exercises/practice/queen-attack/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/queen-attack/build.sbt
+++ b/exercises/practice/queen-attack/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/queen-attack/src/test/scala/QueenAttackTest.scala b/exercises/practice/queen-attack/src/test/scala/QueenAttackTest.scala
index 6e0b8ad5..fdab8242 100644
--- a/exercises/practice/queen-attack/src/test/scala/QueenAttackTest.scala
+++ b/exercises/practice/queen-attack/src/test/scala/QueenAttackTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.1.0 */
-class QueenAttackTest extends FunSuite with Matchers {
+class QueenAttackTest extends AnyFunSuite with Matchers {
 
   private def create(x: Int, y: Int): Queen = {
     Queen.create(x, y) match {
diff --git a/exercises/practice/rail-fence-cipher/build.sbt b/exercises/practice/rail-fence-cipher/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/rail-fence-cipher/build.sbt
+++ b/exercises/practice/rail-fence-cipher/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/rail-fence-cipher/src/test/scala/RailFenceCipherTest.scala b/exercises/practice/rail-fence-cipher/src/test/scala/RailFenceCipherTest.scala
index 1857b88b..cd2f6c9d 100644
--- a/exercises/practice/rail-fence-cipher/src/test/scala/RailFenceCipherTest.scala
+++ b/exercises/practice/rail-fence-cipher/src/test/scala/RailFenceCipherTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class RailFenceCipherTest extends FunSuite with Matchers {
+class RailFenceCipherTest extends AnyFunSuite with Matchers {
 
   test("encode with two rails") {
     RailFenceCipher.encode("XOXOXOXOXOXOXOXOXO", 2) should be(
diff --git a/exercises/practice/raindrops/build.sbt b/exercises/practice/raindrops/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/raindrops/build.sbt
+++ b/exercises/practice/raindrops/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/raindrops/src/test/scala/RaindropsTest.scala b/exercises/practice/raindrops/src/test/scala/RaindropsTest.scala
index 733308a3..141db3de 100644
--- a/exercises/practice/raindrops/src/test/scala/RaindropsTest.scala
+++ b/exercises/practice/raindrops/src/test/scala/RaindropsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class RaindropsTest extends FunSuite with Matchers {
+class RaindropsTest extends AnyFunSuite with Matchers {
   
   test("the sound for 1 is 1") {
     Raindrops.convert(1) should be ("1")
diff --git a/exercises/practice/rna-transcription/build.sbt b/exercises/practice/rna-transcription/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/rna-transcription/build.sbt
+++ b/exercises/practice/rna-transcription/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/rna-transcription/src/test/scala/RnaTranscriptionTest.scala b/exercises/practice/rna-transcription/src/test/scala/RnaTranscriptionTest.scala
index c22ecd5c..c45783c7 100644
--- a/exercises/practice/rna-transcription/src/test/scala/RnaTranscriptionTest.scala
+++ b/exercises/practice/rna-transcription/src/test/scala/RnaTranscriptionTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class RnaTranscriptionTest extends FunSuite with Matchers {
+class RnaTranscriptionTest extends AnyFunSuite with Matchers {
 
   test("RNA complement of cytosine is guanine") {
     RnaTranscription.toRna("C") should be(Some("G"))
diff --git a/exercises/practice/robot-name/build.sbt b/exercises/practice/robot-name/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/robot-name/build.sbt
+++ b/exercises/practice/robot-name/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/robot-name/src/test/scala/RobotNameTest.scala b/exercises/practice/robot-name/src/test/scala/RobotNameTest.scala
index 53be0e3b..76a9a1ce 100644
--- a/exercises/practice/robot-name/src/test/scala/RobotNameTest.scala
+++ b/exercises/practice/robot-name/src/test/scala/RobotNameTest.scala
@@ -1,9 +1,10 @@
-import org.scalatest._
+import org.scalatest.funspec.AnyFunSpec
+import org.scalatest.matchers.should.Matchers
 
 import collection.mutable
 
 /** @version created manually **/
-class RobotNameSpecs extends FunSpec with Matchers {
+class RobotNameTest extends AnyFunSpec with Matchers {
   val nameRegex = """[A-Z]{2}\d{3}"""
 
   it ("has a name") {
diff --git a/exercises/practice/robot-simulator/build.sbt b/exercises/practice/robot-simulator/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/robot-simulator/build.sbt
+++ b/exercises/practice/robot-simulator/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/robot-simulator/src/test/scala/RobotSimulatorTest.scala b/exercises/practice/robot-simulator/src/test/scala/RobotSimulatorTest.scala
index d8a7a0e4..e51ea6dc 100644
--- a/exercises/practice/robot-simulator/src/test/scala/RobotSimulatorTest.scala
+++ b/exercises/practice/robot-simulator/src/test/scala/RobotSimulatorTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 2.2.0 */
-class RobotSimulatorTest extends FunSuite with Matchers {
+class RobotSimulatorTest extends AnyFunSuite with Matchers {
 
   test(
     "A robot is created with a position and a direction - Robots are created with a position and direction") {
diff --git a/exercises/practice/roman-numerals/build.sbt b/exercises/practice/roman-numerals/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/roman-numerals/build.sbt
+++ b/exercises/practice/roman-numerals/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/roman-numerals/src/test/scala/RomanNumeralsTest.scala b/exercises/practice/roman-numerals/src/test/scala/RomanNumeralsTest.scala
index ec72515d..50960268 100644
--- a/exercises/practice/roman-numerals/src/test/scala/RomanNumeralsTest.scala
+++ b/exercises/practice/roman-numerals/src/test/scala/RomanNumeralsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class RomanNumeralsTest extends FunSuite with Matchers {
+class RomanNumeralsTest extends AnyFunSuite with Matchers {
 
   test("1 is a single I") {
     RomanNumerals.roman(1) should be ("I")
diff --git a/exercises/practice/rotational-cipher/build.sbt b/exercises/practice/rotational-cipher/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/rotational-cipher/build.sbt
+++ b/exercises/practice/rotational-cipher/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/rotational-cipher/src/test/scala/RotationalCipherTest.scala b/exercises/practice/rotational-cipher/src/test/scala/RotationalCipherTest.scala
index 1fef2e5b..04d5089d 100644
--- a/exercises/practice/rotational-cipher/src/test/scala/RotationalCipherTest.scala
+++ b/exercises/practice/rotational-cipher/src/test/scala/RotationalCipherTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class RotationalCipherTest extends FunSuite with Matchers {
+class RotationalCipherTest extends AnyFunSuite with Matchers {
 
   test("rotate a by 0, same output as input") {
     RotationalCipher.rotate("a", 0) should be("a")
diff --git a/exercises/practice/run-length-encoding/build.sbt b/exercises/practice/run-length-encoding/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/run-length-encoding/build.sbt
+++ b/exercises/practice/run-length-encoding/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/run-length-encoding/src/test/scala/RunLengthEncodingTest.scala b/exercises/practice/run-length-encoding/src/test/scala/RunLengthEncodingTest.scala
index ba81fde3..dbd74713 100644
--- a/exercises/practice/run-length-encoding/src/test/scala/RunLengthEncodingTest.scala
+++ b/exercises/practice/run-length-encoding/src/test/scala/RunLengthEncodingTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.0.0 */
-class RunLengthEncodingTest extends FunSuite with Matchers {
+class RunLengthEncodingTest extends AnyFunSuite with Matchers {
 
   test("encode - empty string") {
     RunLengthEncoding.encode("") should be ("")
diff --git a/exercises/practice/saddle-points/build.sbt b/exercises/practice/saddle-points/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/saddle-points/build.sbt
+++ b/exercises/practice/saddle-points/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/saddle-points/src/test/scala/SaddlePointsTest.scala b/exercises/practice/saddle-points/src/test/scala/SaddlePointsTest.scala
index 089f5640..db96c1a1 100644
--- a/exercises/practice/saddle-points/src/test/scala/SaddlePointsTest.scala
+++ b/exercises/practice/saddle-points/src/test/scala/SaddlePointsTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class SaddlePointsTest extends FunSuite with Matchers {
+class SaddlePointsTest extends AnyFunSuite with Matchers {
 
   test("Can identify single saddle point") {
     Matrix(List(List(9, 8, 7), List(5, 3, 2), List(6, 6, 7))).saddlePoints should be(
diff --git a/exercises/practice/say/build.sbt b/exercises/practice/say/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/say/build.sbt
+++ b/exercises/practice/say/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/say/src/test/scala/SayTest.scala b/exercises/practice/say/src/test/scala/SayTest.scala
index e769b8a1..50c1c7f8 100644
--- a/exercises/practice/say/src/test/scala/SayTest.scala
+++ b/exercises/practice/say/src/test/scala/SayTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class SayTest extends FunSuite with Matchers {
+class SayTest extends AnyFunSuite with Matchers {
 
   test("zero") {
     Say.inEnglish(0) should be(Some("zero"))
diff --git a/exercises/practice/scrabble-score/build.sbt b/exercises/practice/scrabble-score/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/scrabble-score/build.sbt
+++ b/exercises/practice/scrabble-score/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/scrabble-score/src/test/scala/ScrabbleScoreTest.scala b/exercises/practice/scrabble-score/src/test/scala/ScrabbleScoreTest.scala
index 0c2852b6..2c6711ee 100644
--- a/exercises/practice/scrabble-score/src/test/scala/ScrabbleScoreTest.scala
+++ b/exercises/practice/scrabble-score/src/test/scala/ScrabbleScoreTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class ScrabbleScoreTest extends FunSuite with Matchers {
+class ScrabbleScoreTest extends AnyFunSuite with Matchers {
 
   test("lowercase letter") {
     ScrabbleScore.score("a") should be(1)
diff --git a/exercises/practice/secret-handshake/build.sbt b/exercises/practice/secret-handshake/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/secret-handshake/build.sbt
+++ b/exercises/practice/secret-handshake/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/secret-handshake/src/test/scala/SecretHandshakeTest.scala b/exercises/practice/secret-handshake/src/test/scala/SecretHandshakeTest.scala
index bab6136c..163ef672 100644
--- a/exercises/practice/secret-handshake/src/test/scala/SecretHandshakeTest.scala
+++ b/exercises/practice/secret-handshake/src/test/scala/SecretHandshakeTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class SecretHandshakeTest extends FunSuite with Matchers {
+class SecretHandshakeTest extends AnyFunSuite with Matchers {
 
   test("wink for 1") {
     SecretHandshake.commands(1) should be (List("wink"))
diff --git a/exercises/practice/series/build.sbt b/exercises/practice/series/build.sbt
index e5385774..3acb69f8 100644
--- a/exercises/practice/series/build.sbt
+++ b/exercises/practice/series/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 
diff --git a/exercises/practice/series/src/test/scala/SeriesTest.scala b/exercises/practice/series/src/test/scala/SeriesTest.scala
index 726c9a09..50185f45 100644
--- a/exercises/practice/series/src/test/scala/SeriesTest.scala
+++ b/exercises/practice/series/src/test/scala/SeriesTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version created manually **/
-class SeriesTest extends FunSuite with Matchers {
+class SeriesTest extends AnyFunSuite with Matchers {
 
   test("slices of one") {
     Series.slices(1, "") should be (List())
diff --git a/exercises/practice/sgf-parsing/build.sbt b/exercises/practice/sgf-parsing/build.sbt
index 04f69d29..8566d83c 100644
--- a/exercises/practice/sgf-parsing/build.sbt
+++ b/exercises/practice/sgf-parsing/build.sbt
@@ -1,6 +1,6 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
 
 
diff --git a/exercises/practice/sgf-parsing/src/test/scala/SgfTest.scala b/exercises/practice/sgf-parsing/src/test/scala/SgfTest.scala
index 00112e20..e7be5c6a 100644
--- a/exercises/practice/sgf-parsing/src/test/scala/SgfTest.scala
+++ b/exercises/practice/sgf-parsing/src/test/scala/SgfTest.scala
@@ -1,8 +1,9 @@
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 import Sgf._
 
 /** @version created manually **/
-class SgfTest extends FunSuite with Matchers {
+class SgfTest extends AnyFunSuite with Matchers {
   test("parse \"\"") {
     Sgf.parseSgf("") should be (None)
   }
diff --git a/exercises/practice/sieve/build.sbt b/exercises/practice/sieve/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/sieve/build.sbt
+++ b/exercises/practice/sieve/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/sieve/src/test/scala/SieveTest.scala b/exercises/practice/sieve/src/test/scala/SieveTest.scala
index 450977b4..3ba04b59 100644
--- a/exercises/practice/sieve/src/test/scala/SieveTest.scala
+++ b/exercises/practice/sieve/src/test/scala/SieveTest.scala
@@ -1,7 +1,8 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.matchers.should.Matchers
+import org.scalatest.funsuite.AnyFunSuite
 
 /** @version 1.1.0 */
-class SieveTest extends FunSuite with Matchers {
+class SieveTest extends AnyFunSuite with Matchers {
 
   test("no primes under two") {
     Sieve.primes(1) should be(List())
diff --git a/exercises/practice/simple-cipher/build.sbt b/exercises/practice/simple-cipher/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/simple-cipher/build.sbt
+++ b/exercises/practice/simple-cipher/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/simple-cipher/src/test/scala/CipherTest.scala b/exercises/practice/simple-cipher/src/test/scala/CipherTest.scala
index 3264666c..5385211d 100644
--- a/exercises/practice/simple-cipher/src/test/scala/CipherTest.scala
+++ b/exercises/practice/simple-cipher/src/test/scala/CipherTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version created manually **/
-class CipherTest extends FunSuite with Matchers {
+class CipherTest extends AnyFunSuite with Matchers {
 
   test("Random key cipher - can encode/decode") {
     // Here we take advantage of the fact that plaintext of "aaa..."
diff --git a/exercises/practice/simple-linked-list/build.sbt b/exercises/practice/simple-linked-list/build.sbt
index 5eaf9717..1171bb79 100644
--- a/exercises/practice/simple-linked-list/build.sbt
+++ b/exercises/practice/simple-linked-list/build.sbt
@@ -1,6 +1,6 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
-
-libraryDependencies += "org.scalacheck" %% "scalacheck" % "1.13.4" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
+libraryDependencies += "org.scalacheck" %% "scalacheck" % "1.14.1" % "test"
+libraryDependencies += "org.scalatestplus" %% "scalacheck-1-15" % "3.2.9.0" % "test" 
 
diff --git a/exercises/practice/simple-linked-list/src/test/scala/SimpleLinkedListTest.scala b/exercises/practice/simple-linked-list/src/test/scala/SimpleLinkedListTest.scala
index 831ced66..a90acd13 100644
--- a/exercises/practice/simple-linked-list/src/test/scala/SimpleLinkedListTest.scala
+++ b/exercises/practice/simple-linked-list/src/test/scala/SimpleLinkedListTest.scala
@@ -1,9 +1,10 @@
-import org.scalacheck.{Arbitrary}
-import org.scalatest.prop.GeneratorDrivenPropertyChecks
-import org.scalatest.{FlatSpec, Matchers}
+import org.scalacheck.Arbitrary
+import org.scalatest.flatspec.AnyFlatSpec
+import org.scalatest.matchers.should.Matchers
+import org.scalatestplus.scalacheck.ScalaCheckDrivenPropertyChecks
 
 /** @version created manually **/
-class SimpleLinkedListTest extends FlatSpec with Matchers with GeneratorDrivenPropertyChecks {
+class SimpleLinkedListTest extends AnyFlatSpec with Matchers with ScalaCheckDrivenPropertyChecks {
 
   private implicit def arbitrarySimpleLinkedList[T](implicit arbitraryTs: Arbitrary[Array[T]]): Arbitrary[SimpleLinkedList[T]] =
     Arbitrary {
diff --git a/exercises/practice/space-age/build.sbt b/exercises/practice/space-age/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/space-age/build.sbt
+++ b/exercises/practice/space-age/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/space-age/src/test/scala/SpaceAgeTest.scala b/exercises/practice/space-age/src/test/scala/SpaceAgeTest.scala
index 06f6d395..cc7ae4a7 100644
--- a/exercises/practice/space-age/src/test/scala/SpaceAgeTest.scala
+++ b/exercises/practice/space-age/src/test/scala/SpaceAgeTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class SpaceAgeTest extends FunSuite with Matchers {
+class SpaceAgeTest extends AnyFunSuite with Matchers {
 
   test("age on Earth") {
     SpaceAge.onEarth(1000000000) should be (31.69 +- 0.01)
diff --git a/exercises/practice/spiral-matrix/build.sbt b/exercises/practice/spiral-matrix/build.sbt
index a330461f..6b92ed9c 100644
--- a/exercises/practice/spiral-matrix/build.sbt
+++ b/exercises/practice/spiral-matrix/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
\ No newline at end of file
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/spiral-matrix/src/test/scala/SpiralMatrixTest.scala b/exercises/practice/spiral-matrix/src/test/scala/SpiralMatrixTest.scala
index 69e7a00f..3a6ed478 100644
--- a/exercises/practice/spiral-matrix/src/test/scala/SpiralMatrixTest.scala
+++ b/exercises/practice/spiral-matrix/src/test/scala/SpiralMatrixTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class SpiralMatrixTest extends FunSuite with Matchers {
+class SpiralMatrixTest extends AnyFunSuite with Matchers {
 
   test("empty spiral") {
     SpiralMatrix.spiralMatrix(0) should be(List())
diff --git a/exercises/practice/strain/build.sbt b/exercises/practice/strain/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/strain/build.sbt
+++ b/exercises/practice/strain/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/strain/src/test/scala/StrainTest.scala b/exercises/practice/strain/src/test/scala/StrainTest.scala
index e521302f..683fab20 100644
--- a/exercises/practice/strain/src/test/scala/StrainTest.scala
+++ b/exercises/practice/strain/src/test/scala/StrainTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.matchers.should.Matchers
+import org.scalatest.flatspec.AnyFlatSpec
+
 
 /** @version created manually **/
-class StrainTest extends FlatSpec with Matchers {
+class StrainTest extends AnyFlatSpec with Matchers {
 
   it should "handle empty keep" in {
     val result = Strain.keep[Int](List(), x => x < 10)
diff --git a/exercises/practice/sublist/build.sbt b/exercises/practice/sublist/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/sublist/build.sbt
+++ b/exercises/practice/sublist/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/sublist/src/test/scala/SublistTest.scala b/exercises/practice/sublist/src/test/scala/SublistTest.scala
index 57d354f2..db24a247 100644
--- a/exercises/practice/sublist/src/test/scala/SublistTest.scala
+++ b/exercises/practice/sublist/src/test/scala/SublistTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class SublistTest extends FunSuite with Matchers {
+class SublistTest extends AnyFunSuite with Matchers {
 
   test("empty lists") {
     Sublist.sublist(List(), List()) should be(Sublist.Equal)
diff --git a/exercises/practice/sum-of-multiples/build.sbt b/exercises/practice/sum-of-multiples/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/sum-of-multiples/build.sbt
+++ b/exercises/practice/sum-of-multiples/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/sum-of-multiples/src/test/scala/SumOfMultiplesTest.scala b/exercises/practice/sum-of-multiples/src/test/scala/SumOfMultiplesTest.scala
index 4edac821..2db2ed30 100644
--- a/exercises/practice/sum-of-multiples/src/test/scala/SumOfMultiplesTest.scala
+++ b/exercises/practice/sum-of-multiples/src/test/scala/SumOfMultiplesTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class SumOfMultiplesTest extends FunSuite with Matchers {
+class SumOfMultiplesTest extends AnyFunSuite with Matchers {
 
   test("multiples of 3 or 5 up to 1") {
     SumOfMultiples.sum(Set(3, 5), 1) should be(0)
diff --git a/exercises/practice/triangle/build.sbt b/exercises/practice/triangle/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/triangle/build.sbt
+++ b/exercises/practice/triangle/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/triangle/src/test/scala/TriangleTest.scala b/exercises/practice/triangle/src/test/scala/TriangleTest.scala
index 5d8bf3fa..b346686a 100644
--- a/exercises/practice/triangle/src/test/scala/TriangleTest.scala
+++ b/exercises/practice/triangle/src/test/scala/TriangleTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class TriangleTest extends FunSuite with Matchers {
+class TriangleTest extends AnyFunSuite with Matchers {
 
   test("equilateral - true if all sides are equal") {
     Triangle(2, 2, 2).equilateral should be (true)
diff --git a/exercises/practice/trinary/build.sbt b/exercises/practice/trinary/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/trinary/build.sbt
+++ b/exercises/practice/trinary/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/trinary/src/test/scala/TrinaryTest.scala b/exercises/practice/trinary/src/test/scala/TrinaryTest.scala
index 840ecb82..7c32e14d 100644
--- a/exercises/practice/trinary/src/test/scala/TrinaryTest.scala
+++ b/exercises/practice/trinary/src/test/scala/TrinaryTest.scala
@@ -1,6 +1,8 @@
-import org.scalatest.{Matchers, FlatSpec}
+import org.scalatest.matchers.should.Matchers
+import org.scalatest.flatspec.AnyFlatSpec
 
-class TrinaryTest extends FlatSpec with Matchers {
+
+class TrinaryTest extends AnyFlatSpec with Matchers {
   it should "empty string should error" in {
     intercept[IllegalArgumentException] {
       Trinary.trinaryToInt("")
diff --git a/exercises/practice/two-fer/build.sbt b/exercises/practice/two-fer/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/two-fer/build.sbt
+++ b/exercises/practice/two-fer/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/two-fer/src/test/scala/TwoferTest.scala b/exercises/practice/two-fer/src/test/scala/TwoferTest.scala
index 8b88aca8..5c707558 100644
--- a/exercises/practice/two-fer/src/test/scala/TwoferTest.scala
+++ b/exercises/practice/two-fer/src/test/scala/TwoferTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class TwoferTest extends FunSuite with Matchers {
+class TwoferTest extends AnyFunSuite with Matchers {
 
   test("no name given") {
     Twofer.twofer() should be ("One for you, one for me.")
diff --git a/exercises/practice/variable-length-quantity/build.sbt b/exercises/practice/variable-length-quantity/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/variable-length-quantity/build.sbt
+++ b/exercises/practice/variable-length-quantity/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/variable-length-quantity/src/test/scala/VariableLengthQuantityTest.scala b/exercises/practice/variable-length-quantity/src/test/scala/VariableLengthQuantityTest.scala
index 91dade6b..23394235 100644
--- a/exercises/practice/variable-length-quantity/src/test/scala/VariableLengthQuantityTest.scala
+++ b/exercises/practice/variable-length-quantity/src/test/scala/VariableLengthQuantityTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class VariableLengthQuantityTest extends FunSuite with Matchers {
+class VariableLengthQuantityTest extends AnyFunSuite with Matchers {
 
   test("zero") {
     VariableLengthQuantity.encode(List(0x0)) should be(List(0x0))
diff --git a/exercises/practice/word-count/build.sbt b/exercises/practice/word-count/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/word-count/build.sbt
+++ b/exercises/practice/word-count/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/word-count/src/test/scala/WordCountTest.scala b/exercises/practice/word-count/src/test/scala/WordCountTest.scala
index aecc8602..faafd052 100644
--- a/exercises/practice/word-count/src/test/scala/WordCountTest.scala
+++ b/exercises/practice/word-count/src/test/scala/WordCountTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.2.0 */
-class WordCountTest extends FunSuite with Matchers {
+class WordCountTest extends AnyFunSuite with Matchers {
 
   test("count one word") {
     WordCount("word").countWords should be(Map(("word", 1)))
diff --git a/exercises/practice/wordy/build.sbt b/exercises/practice/wordy/build.sbt
index 83ac8038..5be54b0f 100644
--- a/exercises/practice/wordy/build.sbt
+++ b/exercises/practice/wordy/build.sbt
@@ -1,4 +1,4 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
 libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.5"
diff --git a/exercises/practice/wordy/src/test/scala/WordyTest.scala b/exercises/practice/wordy/src/test/scala/WordyTest.scala
index 535ca6e8..f296df02 100644
--- a/exercises/practice/wordy/src/test/scala/WordyTest.scala
+++ b/exercises/practice/wordy/src/test/scala/WordyTest.scala
@@ -1,7 +1,9 @@
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
+
 
 /** @version 1.1.0 */
-class WordyTest extends FunSuite with Matchers {
+class WordyTest extends AnyFunSuite with Matchers {
 
   test("addition") {
     Wordy.answer("What is 1 plus 1?") should be(Some(2))
diff --git a/exercises/practice/zebra-puzzle/build.sbt b/exercises/practice/zebra-puzzle/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/zebra-puzzle/build.sbt
+++ b/exercises/practice/zebra-puzzle/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/zebra-puzzle/src/test/scala/ZebraPuzzleTest.scala b/exercises/practice/zebra-puzzle/src/test/scala/ZebraPuzzleTest.scala
index 7d1ea7e7..64f89ef8 100644
--- a/exercises/practice/zebra-puzzle/src/test/scala/ZebraPuzzleTest.scala
+++ b/exercises/practice/zebra-puzzle/src/test/scala/ZebraPuzzleTest.scala
@@ -1,9 +1,10 @@
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 
 import ZebraPuzzle._
 
 /** @version created manually **/
-class ZebraPuzzleTest extends FunSuite with Matchers {
+class ZebraPuzzleTest extends AnyFunSuite with Matchers {
   test("solve the Zebra Puzzle") {
     ZebraPuzzle.solve should be (
         Solution(waterDrinker = Norwegian,
diff --git a/exercises/practice/zipper/build.sbt b/exercises/practice/zipper/build.sbt
index b4d14d4b..6b92ed9c 100644
--- a/exercises/practice/zipper/build.sbt
+++ b/exercises/practice/zipper/build.sbt
@@ -1,3 +1,3 @@
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
 
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
diff --git a/exercises/practice/zipper/src/test/scala/ZipperTest.scala b/exercises/practice/zipper/src/test/scala/ZipperTest.scala
index 196deaa3..faf5b018 100644
--- a/exercises/practice/zipper/src/test/scala/ZipperTest.scala
+++ b/exercises/practice/zipper/src/test/scala/ZipperTest.scala
@@ -1,7 +1,8 @@
-import org.scalatest.{FunSuite, Matchers}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 
 /** @version created manually **/
-class ZipperTest extends FunSuite with Matchers {
+class ZipperTest extends AnyFunSuite with Matchers {
   def empty[A]: Option[BinTree[A]] = None
 
   def bt[A](v: A, l: Option[BinTree[A]], r: Option[BinTree[A]]): Option[BinTree[A]] =
diff --git a/testgen/build.sbt b/testgen/build.sbt
index e2c580c2..812c3ead 100644
--- a/testgen/build.sbt
+++ b/testgen/build.sbt
@@ -1,14 +1,17 @@
 name := "ExcercismScalaTestGenerator"
 
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.6"
+
+ThisBuild / scalacOptions ++= Seq("-deprecation")
 
 lazy val root = (project in file("."))
   .enablePlugins(SbtTwirl)
   .settings(
-    sourceDirectories in (Compile, TwirlKeys.compileTemplates) += (baseDirectory.value.getParentFile / "src" / "main" / "twirl"))
+    Compile / TwirlKeys.compileTemplates / sourceDirectories
+        += (baseDirectory.value.getParentFile / "src" / "main" / "twirl"))
 
-libraryDependencies += "com.typesafe.play" % "play-json_2.11" % "2.5.3"
+libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.2"
 
-libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"
+libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "2.1.0"
 
-libraryDependencies += "com.typesafe.play" %% "twirl-api" % "1.3.0"
+libraryDependencies += "com.typesafe.play" %% "twirl-api" % "1.5.0"
diff --git a/testgen/project/build.properties b/testgen/project/build.properties
index 24be09b2..13ecfea5 100644
--- a/testgen/project/build.properties
+++ b/testgen/project/build.properties
@@ -1,2 +1,2 @@
-sbt.version=0.13.13
+sbt.version=1.6.1
 
diff --git a/testgen/project/plugins.sbt b/testgen/project/plugins.sbt
index 57c7b4f6..8675a4d9 100644
--- a/testgen/project/plugins.sbt
+++ b/testgen/project/plugins.sbt
@@ -1,2 +1,2 @@
-addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.3.0")
+addSbtPlugin("com.typesafe.sbt" % "sbt-twirl" % "1.5.1")
 
diff --git a/testgen/src/main/scala/FoodChainTestGenerator.scala b/testgen/src/main/scala/FoodChainTestGenerator.scala
index 0ede43ac..7fd3942d 100644
--- a/testgen/src/main/scala/FoodChainTestGenerator.scala
+++ b/testgen/src/main/scala/FoodChainTestGenerator.scala
@@ -25,7 +25,7 @@ object FoodChainTestGenerator {
           val sutFunction = labeledTest.property
           val args = sutArgsFromInput(labeledTest.result, argNames: _*)
           val sutCall = s"$sut.$sutFunction(${args})"
-          val expectedLines = labeledTest.expected.right.get.asInstanceOf[List[String]]
+          val expectedLines = labeledTest.expected.getOrElse(List()).asInstanceOf[List[String]]
           val expected = expectedLines mkString ("", "\n", "\n\n")
 
           TestCaseData(labeledTest.description, sutCall, asRawString(expected))
diff --git a/testgen/src/main/scala/MatrixTestGenerator.scala b/testgen/src/main/scala/MatrixTestGenerator.scala
index 28f39899..9f2a6912 100644
--- a/testgen/src/main/scala/MatrixTestGenerator.scala
+++ b/testgen/src/main/scala/MatrixTestGenerator.scala
@@ -3,6 +3,8 @@ import java.io.File
 import testgen.{CanonicalDataParser, TestCaseData, TestSuiteBuilder}
 import testgen.TestSuiteBuilder.{ToTestCaseData, quote, withLabeledTest}
 
+import scala.language.postfixOps
+
 object MatrixTestGenerator {
   def toString(expected: CanonicalDataParser.Expected): String = {
     expected match {
@@ -15,7 +17,7 @@ object MatrixTestGenerator {
     withLabeledTest { sut =>
       labeledTest =>
         val input = labeledTest.result("input").asInstanceOf[Map[String, Any]]
-        val matrix = input("string").asInstanceOf[String].lines.map(l => s""""$l""").mkString("\\n\" +") + "\""
+        val matrix = input("string").asInstanceOf[String].lines.map(l => s""""$l""").toString.mkString("\\n\" +") + "\""
         val index = input("index").toString
         val property = labeledTest.property
         val sutCall =
diff --git a/testgen/src/main/scala/TestBuilder.scala b/testgen/src/main/scala/TestBuilder.scala
index 693e4210..7e9c3685 100644
--- a/testgen/src/main/scala/TestBuilder.scala
+++ b/testgen/src/main/scala/TestBuilder.scala
@@ -1,3 +1,4 @@
+import scala.language.postfixOps
 import java.io.FileWriter
 import java.io.File
 
@@ -37,7 +38,7 @@ class TestBuilder(testName: String) {
   def build: String =
 s"""$printImports
 $printVersion
-class $testName extends FunSuite with Matchers {
+class $testName extends AnyFunSuite with Matchers {
 $printTestCases
 }
 """
@@ -49,7 +50,8 @@ $printTestCases
     }
 
   private lazy val printImports: String =
-    "import org.scalatest.{FunSuite, Matchers}\n" +
+    "import org.scalatest.funsuite.AnyFunSuite\n" +
+    "import org.scalatest.matchers.should.Matchers\n" +
     (imports map (imp => s"import $imp\n") mkString)
 
   private lazy val printTestCases: String = {
@@ -93,4 +95,4 @@ object TestBuilder {
     println("-----")
     tb.toFile
   }
-}
\ No newline at end of file
+}
diff --git a/testgen/src/main/scala/TriangleTestGenerator.scala b/testgen/src/main/scala/TriangleTestGenerator.scala
index 7c159684..31351317 100644
--- a/testgen/src/main/scala/TriangleTestGenerator.scala
+++ b/testgen/src/main/scala/TriangleTestGenerator.scala
@@ -1,4 +1,5 @@
 import java.io.File
+import scala.language.postfixOps
 
 import testgen.TestSuiteBuilder.{toString, _}
 import testgen._
diff --git a/testgen/src/main/scala/testgen/CanonicalDataParser.scala b/testgen/src/main/scala/testgen/CanonicalDataParser.scala
index 76f0389f..4b9bb302 100644
--- a/testgen/src/main/scala/testgen/CanonicalDataParser.scala
+++ b/testgen/src/main/scala/testgen/CanonicalDataParser.scala
@@ -1,7 +1,7 @@
 package testgen
 
 import scala.io.Source
-import scala.util.parsing.json.JSON
+import play.api.libs.json.Json
 import CanonicalDataParser._
 import scala.util.Try
 import scala.Left
@@ -28,9 +28,9 @@ object CanonicalDataParser {
   def parse(file: File): Exercise = {
     val fileContents = Source.fromFile(file).getLines.mkString
     val rawParseResult =
-      JSON.parseFull(fileContents).get.asInstanceOf[ParseResult]
+      Json.parse(fileContents).asInstanceOf[ParseResult]
     val parseResult = rawParseResult mapValues restoreInts
-    parseResult
+    Exercise.fromParseResult(parseResult.toMap)
   }
 
   private def restoreInts(any: Any): Any =
diff --git a/testgen/src/main/scala/testgen/TestSuiteBuilder.scala b/testgen/src/main/scala/testgen/TestSuiteBuilder.scala
index ba41af96..c916e656 100644
--- a/testgen/src/main/scala/testgen/TestSuiteBuilder.scala
+++ b/testgen/src/main/scala/testgen/TestSuiteBuilder.scala
@@ -7,6 +7,7 @@ import play.twirl.api.Txt
 import play.twirl.api.Template1
 import TestSuiteBuilder._
 import testgen.CanonicalDataParser.ParseResult
+import scala.language.postfixOps
 
 object TestSuiteBuilder {
 
diff --git a/testgen/src/main/twirl/funSuiteTemplate.scala.txt b/testgen/src/main/twirl/funSuiteTemplate.scala.txt
index a008a617..71f81483 100644
--- a/testgen/src/main/twirl/funSuiteTemplate.scala.txt
+++ b/testgen/src/main/twirl/funSuiteTemplate.scala.txt
@@ -1,11 +1,12 @@
 @(data: testgen.TestSuiteData)@for(imp <- data.imports) {
 import @imp}
 
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 @import testgen.TestSuiteBuilder._
 
 /** @@version @data.version */
-class @data.name extends FunSuite with Matchers {
+class @data.name extends AnyFunSuite with Matchers {
 @for(statement <- data.statements) {
   @statement}
 @for(testCase <- data.testCases) {
@@ -13,4 +14,4 @@ class @data.name extends FunSuite with Matchers {
     pending}
     @testCase.sutCall should be (@testCase.expected)
   }
-}}
\ No newline at end of file
+}}
diff --git a/testgen/src/main/twirl/funSuiteTemplateIgnoreExpected.scala.txt b/testgen/src/main/twirl/funSuiteTemplateIgnoreExpected.scala.txt
index 5460a975..d6a338d0 100644
--- a/testgen/src/main/twirl/funSuiteTemplateIgnoreExpected.scala.txt
+++ b/testgen/src/main/twirl/funSuiteTemplateIgnoreExpected.scala.txt
@@ -1,11 +1,12 @@
 @(data: testgen.TestSuiteData)@for(imp <- data.imports) {
 import @imp}
 
-import org.scalatest.{Matchers, FunSuite}
+import org.scalatest.funsuite.AnyFunSuite
+import org.scalatest.matchers.should.Matchers
 @import testgen.TestSuiteBuilder._
 
 /** @@version @data.version */
-class @data.name extends FunSuite with Matchers {
+class @data.name extends AnyFunSuite with Matchers {
 @for(statement <- data.statements) {
   @statement}
 @for(testCase <- data.testCases) {
@@ -13,4 +14,4 @@ class @data.name extends FunSuite with Matchers {
     pending}
     @testCase.sutCall
   }
-}}
\ No newline at end of file
+}}