diff --git a/build.sbt b/build.sbt
index e0078963c4fbed682e0a56579191e4580115fd1c..679206fb94104033f799e53bdce288d9a5e10db7 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,7 +1,7 @@
 name := "short-exercises"
 organization := "de.uniwue.fp"
 version := "0.1-SNAPSHOT"
-scalaVersion := "2.12.8"
+scalaVersion := "2.13.1"
 
 scalacOptions ++= Seq(
   "-deprecation",
@@ -9,29 +9,22 @@ scalacOptions ++= Seq(
   "-feature",
   "-unchecked",
   "-Xlint",
-  "-Yno-adapted-args",
-  "-Ywarn-dead-code",
-  "-Ywarn-numeric-widen",
-  "-Ywarn-value-discard",
-  "-Ypartial-unification",
-  "-Xfuture",
-  "-Ywarn-unused-import",
-  "-Ywarn-unused:implicits",
-  "-Ywarn-unused:locals",
-  "-Ywarn-unused:params",
-  "-Ywarn-unused:patvars",
-  "-Ywarn-unused:privates",
+  "-Wdead-code",
+  "-Wnumeric-widen",
+  "-Wvalue-discard",
+  "-Wunused:patvars,privates,locals,params,-imports",
   "-Ypatmat-exhaust-depth", "40",
   "-language:higherKinds",
+  "-language:implicitConversions",
 )
 
 resolvers += Resolver.sonatypeRepo("releases")
-addCompilerPlugin("org.spire-math" %% "kind-projector" % "0.9.3")
+addCompilerPlugin("org.typelevel" %% "kind-projector" % "0.11.0" cross CrossVersion.full)
 
 
 // Disallow some language construcs
 // your bonus exercises will have to compile with these options
-addCompilerPlugin("org.wartremover" %% "wartremover" % "2.4.1")
+addCompilerPlugin("org.wartremover" %% "wartremover" % "2.4.2")
 scalacOptions ++= Seq(
   "-P:wartremover:traverser:org.wartremover.warts.AsInstanceOf",
   "-P:wartremover:traverser:org.wartremover.warts.IsInstanceOf",
@@ -43,5 +36,5 @@ scalacOptions ++= Seq(
   "-P:wartremover:traverser:org.wartremover.warts.While",
 )
 
-libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.5"
-libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test"
+libraryDependencies += "org.scalactic" %% "scalactic" % "3.1.1"
+libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test"
diff --git a/project/build.properties b/project/build.properties
new file mode 100644
index 0000000000000000000000000000000000000000..6624da70bf7d766a89dd9999acc2201572d7c225
--- /dev/null
+++ b/project/build.properties
@@ -0,0 +1 @@
+sbt.version=1.3.5
diff --git a/src/main/scala/applicative/Applicative.scala b/src/main/scala/applicative/Applicative.scala
index 10a35fe163247eb6fe152ad3bb4c0a20b1042525..31faa13d1144ba2c82c881a6efb88a4413622bec 100644
--- a/src/main/scala/applicative/Applicative.scala
+++ b/src/main/scala/applicative/Applicative.scala
@@ -1,7 +1,5 @@
 package applicative
 
-import scala.language.higherKinds
-
 trait Applicative[F[_]] {
   def pure[A](a: A): F[A]
 
diff --git a/src/main/scala/applicative/Monad.scala b/src/main/scala/applicative/Monad.scala
index d01043db9d0c9fc51ffdb2d81abd2d69e9cbdf8b..b14f6e8ee762d0d69d36765dc55f558c54ce7cb8 100644
--- a/src/main/scala/applicative/Monad.scala
+++ b/src/main/scala/applicative/Monad.scala
@@ -1,7 +1,5 @@
 package applicative
 
-import scala.language.higherKinds
-
 trait Monad[F[_]] extends Applicative[F] {
   def flatMap[A, B](fa: F[A])(f: A => F[B]): F[B] = flatten(map(fa)(f))
 
diff --git a/src/main/scala/monads/MonadFunctor.scala b/src/main/scala/monads/MonadFunctor.scala
index d8e4e41e3f7306c15df274d0b999c58e6e31be78..9c3f78cff737f42161656844419b373ddf01fe2e 100644
--- a/src/main/scala/monads/MonadFunctor.scala
+++ b/src/main/scala/monads/MonadFunctor.scala
@@ -1,5 +1,4 @@
 package monads
-import scala.language.higherKinds
 
 trait Monad[F[_]] {
   def pure[A](a: A): F[A]
diff --git a/src/main/scala/parsers/lib/ParserOps.scala b/src/main/scala/parsers/lib/ParserOps.scala
index 0fd27ec9ad32dcf36583b880605d11a8d937857e..f019baea63b6f64feba37299bc7654135d73c0d2 100644
--- a/src/main/scala/parsers/lib/ParserOps.scala
+++ b/src/main/scala/parsers/lib/ParserOps.scala
@@ -1,7 +1,5 @@
 package parsers.lib
 
-import scala.language.implicitConversions
-
 trait ParserOps[A] {
   val self: Parser[A]
 
diff --git a/src/main/scala/typeclasses/FunctorOption.scala b/src/main/scala/typeclasses/FunctorOption.scala
index 1c1e778c524302fc2db61b24a9e2aa903b472dd4..131cf431878772b7d0f69d23bef7243e30391208 100644
--- a/src/main/scala/typeclasses/FunctorOption.scala
+++ b/src/main/scala/typeclasses/FunctorOption.scala
@@ -1,7 +1,5 @@
 package typeclasses
 
-import scala.language.higherKinds
-
 object FunctorOption {
   trait Functor[F[_]] {
     def map[A, B](fa: F[A])(f: A => B): F[B]
diff --git a/src/main/scala/util/package.scala b/src/main/scala/util/package.scala
index 81f7365163f8ecacac41a0224f197d1b4c263863..d002876f0539bc641ba0e5d9288dc39fbb2de812 100644
--- a/src/main/scala/util/package.scala
+++ b/src/main/scala/util/package.scala
@@ -1,7 +1,5 @@
 import applicative.Monad
 
-import scala.language.higherKinds
-
 package object util {
   implicit class MonadOps[F[_] : Monad, A](fa: F[A]) {
     def flatMap[B](f: A => F[B]): F[B] = implicitly[Monad[F]].flatMap(fa)(f)