Repository: http4s/http4s
Pull request #4601 (2021-03-07 02:53:48)

case-insensitive-1.1.0
Utilize the new `ci` interpolator and extractor.  Makes things look a little nicer.


Patch:
diff --git a/blaze-server/src/main/scala/org/http4s/server/blaze/Http1ServerStage.scala b/blaze-server/src/main/scala/org/http4s/server/blaze/Http1ServerStage.scala
index bc1dd1a201..1ba25860a9 100644
--- a/blaze-server/src/main/scala/org/http4s/server/blaze/Http1ServerStage.scala
+++ b/blaze-server/src/main/scala/org/http4s/server/blaze/Http1ServerStage.scala
@@ -34,7 +34,7 @@ import org.http4s.blazecore.util.{BodylessWriter, Http1Writer}
 import org.http4s.headers.{Connection, `Content-Length`, `Transfer-Encoding`}
 import org.http4s.internal.unsafeRunAsync
 import org.http4s.util.StringWriter
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.vault._
 
 import scala.concurrent.{ExecutionContext, Future}
@@ -326,7 +326,7 @@ private[blaze] class Http1ServerStage[F[_]](
       req: Request[F]): Unit = {
     logger.debug(t)(s"Bad Request: $debugMessage")
     val resp = Response[F](Status.BadRequest)
-      .withHeaders(Connection(CIString("close")), `Content-Length`.zero)
+      .withHeaders(Connection(ci"close"), `Content-Length`.zero)
     renderResponse(req, resp, () => Future.successful(emptyBuffer))
   }
 
@@ -338,7 +338,7 @@ private[blaze] class Http1ServerStage[F[_]](
       bodyCleanup: () => Future[ByteBuffer]): Unit = {
     logger.error(t)(errorMsg)
     val resp = Response[F](Status.InternalServerError)
-      .withHeaders(Connection(CIString("close")), `Content-Length`.zero)
+      .withHeaders(Connection(ci"close"), `Content-Length`.zero)
     renderResponse(
       req,
       resp,
diff --git a/blaze-server/src/main/scala/org/http4s/server/blaze/WebSocketSupport.scala b/blaze-server/src/main/scala/org/http4s/server/blaze/WebSocketSupport.scala
index 3b9753b366..2669f052c3 100644
--- a/blaze-server/src/main/scala/org/http4s/server/blaze/WebSocketSupport.scala
+++ b/blaze-server/src/main/scala/org/http4s/server/blaze/WebSocketSupport.scala
@@ -28,7 +28,7 @@ import org.http4s.blazecore.websocket.Http4sWSStage
 import org.http4s.headers._
 import org.http4s.internal.unsafeRunAsync
 import org.http4s.websocket.WebSocketHandshake
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.Future
 import scala.util.{Failure, Success}
 
@@ -54,7 +54,7 @@ private[blaze] trait WebSocketSupport[F[_]] extends Http1ServerStage[F] {
                 wsContext.failureResponse
                   .map(
                     _.withHeaders(
-                      Connection(CIString("close")),
+                      Connection(ci"close"),
                       "Sec-WebSocket-Version" -> "13"
                     ))
               } {
diff --git a/circe/src/main/scala/org/http4s/circe/middleware/JsonDebugErrorHandler.scala b/circe/src/main/scala/org/http4s/circe/middleware/JsonDebugErrorHandler.scala
index 977f45b9ec..781067bdf0 100644
--- a/circe/src/main/scala/org/http4s/circe/middleware/JsonDebugErrorHandler.scala
+++ b/circe/src/main/scala/org/http4s/circe/middleware/JsonDebugErrorHandler.scala
@@ -23,7 +23,7 @@ import io.circe.syntax._
 import org.http4s._
 import org.http4s.headers.Connection
 import org.http4s.circe._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object JsonDebugErrorHandler {
   private[this] val messageFailureLogger =
@@ -64,7 +64,7 @@ object JsonDebugErrorHandler {
               Status.InternalServerError,
               req.httpVersion,
               Headers(
-                Connection(CIString("close"))
+                Connection(ci"close")
               ))
               .withEntity(JsonErrorHandlerResponse[G](req, t))
               .pure[F]
diff --git a/client/src/main/scala/org/http4s/client/middleware/GZip.scala b/client/src/main/scala/org/http4s/client/middleware/GZip.scala
index 61bcc2d7db..aca5a30125 100644
--- a/client/src/main/scala/org/http4s/client/middleware/GZip.scala
+++ b/client/src/main/scala/org/http4s/client/middleware/GZip.scala
@@ -22,7 +22,7 @@ import cats.data.NonEmptyList
 import cats.effect.{BracketThrow, Sync}
 import fs2.{Pipe, Pull, Stream}
 import org.http4s.headers.{`Accept-Encoding`, `Content-Encoding`}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.util.control.NoStackTrace
 
 /** Client middleware for enabling gzip.
@@ -86,8 +86,8 @@ object GZip {
       }
 
   private def nonCompressionHeader(header: Header.Raw): Boolean =
-    header.name != CIString("Content-Encoding") &&
-      header.name != CIString("Content-Length")
+    header.name != ci"Content-Encoding" &&
+      header.name != ci"Content-Length"
 
   private object EmptyBodyException extends Throwable with NoStackTrace
 }
diff --git a/client/src/main/scala/org/http4s/client/oauth1/oauth1.scala b/client/src/main/scala/org/http4s/client/oauth1/oauth1.scala
index a53f651af7..347468af7e 100644
--- a/client/src/main/scala/org/http4s/client/oauth1/oauth1.scala
+++ b/client/src/main/scala/org/http4s/client/oauth1/oauth1.scala
@@ -34,7 +34,7 @@ import org.http4s.client.oauth1.ProtocolParameter.{
   Version
 }
 import org.http4s.headers.Authorization
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.collection.immutable
 import scala.collection.mutable.ListBuffer
 
@@ -147,7 +147,7 @@ package object oauth1 {
         (headers ++ queryParams).sorted.map(Show[ProtocolParameter].show).mkString("&"))
       val sig = makeSHASig(baseStr, consumer.secret, token.map(_.secret))
       val creds = Credentials.AuthParams(
-        CIString("OAuth"),
+        ci"OAuth",
         NonEmptyList(
           "oauth_signature" -> encode(sig),
           realm.fold(headers.map(_.toTuple))(_.toTuple +: headers.map(_.toTuple)).toList)
@@ -190,9 +190,7 @@ package object oauth1 {
       })
     val sig = makeSHASig(baseString, consumer, token)
     val creds =
-      Credentials.AuthParams(
-        CIString("OAuth"),
-        NonEmptyList("oauth_signature" -> encode(sig), params))
+      Credentials.AuthParams(ci"OAuth", NonEmptyList("oauth_signature" -> encode(sig), params))
 
     Authorization(creds)
   }
diff --git a/core/src/main/scala/org/http4s/AuthScheme.scala b/core/src/main/scala/org/http4s/AuthScheme.scala
index c7cf4bc12e..418f12ce03 100644
--- a/core/src/main/scala/org/http4s/AuthScheme.scala
+++ b/core/src/main/scala/org/http4s/AuthScheme.scala
@@ -16,10 +16,10 @@
 
 package org.http4s
 
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object AuthScheme {
-  val Basic = CIString("Basic")
-  val Digest = CIString("Digest")
-  val Bearer = CIString("Bearer")
+  val Basic = ci"Basic"
+  val Digest = ci"Digest"
+  val Bearer = ci"Bearer"
 }
diff --git a/core/src/main/scala/org/http4s/Headers.scala b/core/src/main/scala/org/http4s/Headers.scala
index 206d7f4be7..d4ee950159 100644
--- a/core/src/main/scala/org/http4s/Headers.scala
+++ b/core/src/main/scala/org/http4s/Headers.scala
@@ -19,7 +19,7 @@ package org.http4s
 import cats.{Monoid, Order, Show}
 import cats.data.NonEmptyList
 import cats.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.collection.mutable
 
 /** A collection of HTTP Headers */
@@ -115,15 +115,15 @@ object Headers {
   }
 
   private val PayloadHeaderKeys = Set(
-    CIString("Content-Length"),
-    CIString("Content-Range"),
-    CIString("Trailer"),
-    CIString("Transfer-Encoding")
+    ci"Content-Length",
+    ci"Content-Range",
+    ci"Trailer",
+    ci"Transfer-Encoding"
   )
 
   val SensitiveHeaders = Set(
-    CIString("Authorization"),
-    CIString("Cookie"),
-    CIString("Set-Cookie")
+    ci"Authorization",
+    ci"Cookie",
+    ci"Set-Cookie"
   )
 }
diff --git a/core/src/main/scala/org/http4s/headers/Accept-Charset.scala b/core/src/main/scala/org/http4s/headers/Accept-Charset.scala
index 7f977c25e6..c14a40def3 100644
--- a/core/src/main/scala/org/http4s/headers/Accept-Charset.scala
+++ b/core/src/main/scala/org/http4s/headers/Accept-Charset.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.parse.Parser
 import cats.syntax.all._
 import org.http4s.CharsetRange.{Atom, `*`}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Accept-Charset` {
   def apply(head: CharsetRange, tail: CharsetRange*): `Accept-Charset` =
@@ -54,7 +54,7 @@ object `Accept-Charset` {
 
   implicit val headerInstance: Header[`Accept-Charset`, Header.Recurring] =
     Header.createRendered(
-      CIString("Accept-Charset"),
+      ci"Accept-Charset",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Accept-Encoding.scala b/core/src/main/scala/org/http4s/headers/Accept-Encoding.scala
index 40e142f289..79add1a481 100644
--- a/core/src/main/scala/org/http4s/headers/Accept-Encoding.scala
+++ b/core/src/main/scala/org/http4s/headers/Accept-Encoding.scala
@@ -17,7 +17,7 @@
 package org.http4s
 package headers
 
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 import cats.data.NonEmptyList
 import cats.parse.Parser
@@ -38,7 +38,7 @@ object `Accept-Encoding` {
 
   implicit val headerInstance: Header[`Accept-Encoding`, Header.Recurring] =
     Header.createRendered(
-      CIString("Accept-Encoding"),
+      ci"Accept-Encoding",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Accept-Language.scala b/core/src/main/scala/org/http4s/headers/Accept-Language.scala
index 0f41eb0cef..315dff0754 100644
--- a/core/src/main/scala/org/http4s/headers/Accept-Language.scala
+++ b/core/src/main/scala/org/http4s/headers/Accept-Language.scala
@@ -20,7 +20,7 @@ package headers
 import cats.data.NonEmptyList
 import cats.parse.Parser
 import org.http4s.internal.parsing.Rfc7230
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Accept-Language` {
   def apply(head: LanguageTag, tail: LanguageTag*): `Accept-Language` =
@@ -44,7 +44,7 @@ object `Accept-Language` {
 
   implicit val headerInstance: Header[`Accept-Language`, Header.Recurring] =
     Header.createRendered(
-      CIString("Accept-Language"),
+      ci"Accept-Language",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Accept-Patch.scala b/core/src/main/scala/org/http4s/headers/Accept-Patch.scala
index 59af056df2..50a6a8887b 100644
--- a/core/src/main/scala/org/http4s/headers/Accept-Patch.scala
+++ b/core/src/main/scala/org/http4s/headers/Accept-Patch.scala
@@ -20,7 +20,7 @@ package headers
 
 import cats.data.NonEmptyList
 import org.http4s.internal.parsing.Rfc7230
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Accept-Patch` {
   def apply(head: MediaType, tail: MediaType*): `Accept-Patch` =
@@ -34,7 +34,7 @@ object `Accept-Patch` {
 
   implicit val headerInstance: Header[`Accept-Patch`, Header.Recurring] =
     Header.createRendered(
-      CIString("Accept-Patch"),
+      ci"Accept-Patch",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Accept-Ranges.scala b/core/src/main/scala/org/http4s/headers/Accept-Ranges.scala
index 6a1a86520c..1f5ac11847 100644
--- a/core/src/main/scala/org/http4s/headers/Accept-Ranges.scala
+++ b/core/src/main/scala/org/http4s/headers/Accept-Ranges.scala
@@ -20,7 +20,7 @@ import cats.parse.{Parser, Parser0 => P0}
 import org.http4s.internal.parsing.Rfc7230
 import cats.syntax.all._
 import org.http4s.util.Renderer
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Accept-Ranges` {
   def apply(first: RangeUnit, more: RangeUnit*): `Accept-Ranges` = apply((first +: more).toList)
@@ -55,7 +55,7 @@ object `Accept-Ranges` {
 
   implicit val headerInstance: Header[`Accept-Ranges`, Header.Single] =
     Header.create(
-      CIString("Accept-Ranges"),
+      ci"Accept-Ranges",
       _.rangeUnits.toNel match {
         case None => "none"
         case Some(nel) => Renderer.renderString(nel)
diff --git a/core/src/main/scala/org/http4s/headers/Accept.scala b/core/src/main/scala/org/http4s/headers/Accept.scala
index c7c972d435..04dff25428 100644
--- a/core/src/main/scala/org/http4s/headers/Accept.scala
+++ b/core/src/main/scala/org/http4s/headers/Accept.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.parse.Parser
 import org.http4s.internal.parsing.Rfc7230.headerRep1
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Accept {
   def apply(head: MediaRangeAndQValue, tail: MediaRangeAndQValue*): Accept =
@@ -55,7 +55,7 @@ object Accept {
 
   implicit val headerInstance: Header[Accept, Header.Recurring] =
     Header.createRendered(
-      CIString("Accept"),
+      ci"Accept",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Credentials.scala b/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Credentials.scala
index 56f3eff921..db23d04ca8 100644
--- a/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Credentials.scala
+++ b/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Credentials.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Access-Control-Allow-Credentials` {
   def parse(s: String): ParseResult[`Access-Control-Allow-Credentials`] =
@@ -28,7 +28,7 @@ object `Access-Control-Allow-Credentials` {
 
   implicit val headerInstance: Header[`Access-Control-Allow-Credentials`, Header.Single] =
     Header.create(
-      CIString("Access-Control-Allow-Credentials"),
+      ci"Access-Control-Allow-Credentials",
       _.value,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Headers.scala b/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Headers.scala
index d5d21c9b81..e281feb800 100644
--- a/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Headers.scala
+++ b/core/src/main/scala/org/http4s/headers/Access-Control-Allow-Headers.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.http4s.internal.parsing.Rfc7230
 import cats.data.NonEmptyList
 
@@ -34,7 +34,7 @@ object `Access-Control-Allow-Headers` {
 
   implicit val headerInstance: Header[`Access-Control-Allow-Headers`, Header.Recurring] =
     Header.createRendered(
-      CIString("Access-Control-Allow-Headers"),
+      ci"Access-Control-Allow-Headers",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Access-Control-Expose-Headers.scala b/core/src/main/scala/org/http4s/headers/Access-Control-Expose-Headers.scala
index 1c357b6deb..ed8b417747 100644
--- a/core/src/main/scala/org/http4s/headers/Access-Control-Expose-Headers.scala
+++ b/core/src/main/scala/org/http4s/headers/Access-Control-Expose-Headers.scala
@@ -17,10 +17,9 @@
 package org.http4s
 package headers
 
-import org.typelevel.ci.CIString
-import org.http4s.Header
 import cats.data.NonEmptyList
 import org.http4s.internal.parsing.Rfc7230
+import org.typelevel.ci._
 
 object `Access-Control-Expose-Headers` {
 
@@ -35,7 +34,7 @@ object `Access-Control-Expose-Headers` {
 
   implicit val headerInstance: Header[`Access-Control-Expose-Headers`, Header.Recurring] =
     Header.createRendered(
-      CIString("Access-Control-Expose-Headers"),
+      ci"Access-Control-Expose-Headers",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Age.scala b/core/src/main/scala/org/http4s/headers/Age.scala
index 5f58b173c2..1e50670ffa 100644
--- a/core/src/main/scala/org/http4s/headers/Age.scala
+++ b/core/src/main/scala/org/http4s/headers/Age.scala
@@ -20,7 +20,7 @@ package headers
 import org.http4s.parser.AdditionalRules
 import scala.concurrent.duration._
 import scala.util.Try
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Age {
   def fromLong(age: Long): ParseResult[Age] =
@@ -42,7 +42,7 @@ object Age {
 
   implicit val headerInstance: Header[Age, Header.Single] =
     Header.createRendered(
-      CIString("Age"),
+      ci"Age",
       _.age,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Allow.scala b/core/src/main/scala/org/http4s/headers/Allow.scala
index ed752c24e2..30f3a5733e 100644
--- a/core/src/main/scala/org/http4s/headers/Allow.scala
+++ b/core/src/main/scala/org/http4s/headers/Allow.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import org.http4s.internal.parsing.Rfc7230
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Allow {
   def apply(ms: Method*): Allow = Allow(ms.toSet)
@@ -35,7 +35,7 @@ object Allow {
 
   implicit val headerInstance: Header[Allow, Header.Single] =
     Header.createRendered(
-      CIString("Allow"),
+      ci"Allow",
       _.methods,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Authorization.scala b/core/src/main/scala/org/http4s/headers/Authorization.scala
index 126e5bd916..a981fb5bd3 100644
--- a/core/src/main/scala/org/http4s/headers/Authorization.scala
+++ b/core/src/main/scala/org/http4s/headers/Authorization.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Authorization {
   //https://tools.ietf.org/html/rfc7235#section-4.2
@@ -35,7 +35,7 @@ object Authorization {
 
   implicit val headerInstance: Header[Authorization, Header.Single] =
     Header.createRendered(
-      CIString("Authorization"),
+      ci"Authorization",
       _.credentials,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Cache-Control.scala b/core/src/main/scala/org/http4s/headers/Cache-Control.scala
index e70919e9bb..7eaddbe6d3 100644
--- a/core/src/main/scala/org/http4s/headers/Cache-Control.scala
+++ b/core/src/main/scala/org/http4s/headers/Cache-Control.scala
@@ -18,12 +18,12 @@ package org.http4s
 package headers
 
 import cats.data.NonEmptyList
+import cats.parse._
 import java.util.concurrent.TimeUnit
 import org.http4s.CacheDirective._
-import org.typelevel.ci.CIString
-import cats.parse._
 import org.http4s.internal.parsing.{Rfc2616, Rfc7230}
 import org.http4s.parser.{AdditionalRules}
+import org.typelevel.ci._
 import scala.concurrent.duration._
 
 object `Cache-Control` {
@@ -71,7 +71,7 @@ object `Cache-Control` {
 
   implicit val headerInstance: Header[`Cache-Control`, Header.Recurring] =
     Header.createRendered(
-      CIString("Cache-Control"),
+      ci"Cache-Control",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Connection.scala b/core/src/main/scala/org/http4s/headers/Connection.scala
index 5498727bed..9022f1ac70 100644
--- a/core/src/main/scala/org/http4s/headers/Connection.scala
+++ b/core/src/main/scala/org/http4s/headers/Connection.scala
@@ -20,7 +20,7 @@ package headers
 import cats.data.NonEmptyList
 import cats.syntax.all._
 import org.http4s.internal.parsing.{Rfc2616, Rfc7230}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 // values should be case insensitive
 //http://stackoverflow.com/questions/10953635/are-the-http-connection-header-values-case-sensitive
@@ -37,7 +37,7 @@ object Connection {
 
   implicit val headerInstance: Header[Connection, Header.Recurring] =
     Header.createRendered(
-      CIString("Connection"),
+      ci"Connection",
       _.values,
       parse
     )
@@ -47,6 +47,6 @@ object Connection {
 }
 
 final case class Connection(values: NonEmptyList[CIString]) {
-  def hasClose: Boolean = values.contains_(CIString("close"))
-  def hasKeepAlive: Boolean = values.contains_(CIString("keep-alive"))
+  def hasClose: Boolean = values.contains_(ci"close")
+  def hasKeepAlive: Boolean = values.contains_(ci"keep-alive")
 }
diff --git a/core/src/main/scala/org/http4s/headers/Content-Disposition.scala b/core/src/main/scala/org/http4s/headers/Content-Disposition.scala
index 3c314ef693..d9266cbd48 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Disposition.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Disposition.scala
@@ -22,7 +22,7 @@ import org.http4s.internal.CharPredicate
 import org.http4s.internal.parsing.{Rfc2616, Rfc3986, Rfc7230}
 import org.http4s.util.{Renderable, Writer}
 import java.nio.charset.StandardCharsets
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Content-Disposition` {
   def parse(s: String): ParseResult[`Content-Disposition`] =
@@ -74,7 +74,7 @@ object `Content-Disposition` {
 
   implicit val headerInstance: Header[`Content-Disposition`, Header.Single] =
     Header.createRendered(
-      CIString("Content-Disposition"),
+      ci"Content-Disposition",
       v =>
         new Renderable {
           def render(writer: Writer): writer.type = {
diff --git a/core/src/main/scala/org/http4s/headers/Content-Encoding.scala b/core/src/main/scala/org/http4s/headers/Content-Encoding.scala
index 10e14c2f5d..a462cde189 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Encoding.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Encoding.scala
@@ -17,7 +17,7 @@
 package org.http4s
 package headers
 
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Content-Encoding` {
   def parse(s: String): ParseResult[`Content-Encoding`] =
@@ -27,7 +27,7 @@ object `Content-Encoding` {
 
   implicit val headerInstance: Header[`Content-Encoding`, Header.Single] =
     Header.createRendered(
-      CIString("Content-Encoding"),
+      ci"Content-Encoding",
       _.contentCoding,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Content-Language.scala b/core/src/main/scala/org/http4s/headers/Content-Language.scala
index c7016421d8..0ae7bd256e 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Language.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Language.scala
@@ -20,7 +20,7 @@ package headers
 import cats.data.NonEmptyList
 import cats.parse.{Parser, Rfc5234}
 import org.http4s.internal.parsing.{Rfc2616, Rfc7230}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Content-Language` {
   def apply(head: LanguageTag, tail: LanguageTag*): `Content-Language` =
@@ -42,7 +42,7 @@ object `Content-Language` {
 
   implicit val headerInstance: Header[`Content-Language`, Header.Recurring] =
     Header.createRendered(
-      CIString("Content-Language"),
+      ci"Content-Language",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Content-Length.scala b/core/src/main/scala/org/http4s/headers/Content-Length.scala
index 953d93dc50..30153d1c12 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Length.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Length.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import org.http4s.parser.AdditionalRules
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 /** Constructs a `Content-Length` header.
   *
@@ -47,7 +47,7 @@ object `Content-Length` {
 
   private[http4s] val parser = AdditionalRules.NonNegativeLong.map(fromLong).mapFilter(_.toOption)
 
-  val name: CIString = CIString("Content-Length")
+  val name: CIString = ci"Content-Length"
 
   implicit val headerInstance: Header[`Content-Length`, Header.Single] =
     Header.createRendered(
diff --git a/core/src/main/scala/org/http4s/headers/Content-Location.scala b/core/src/main/scala/org/http4s/headers/Content-Location.scala
index 368ee97abd..6d662ccb64 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Location.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Location.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import java.nio.charset.StandardCharsets
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Content-Location` {
   def parse(s: String): ParseResult[`Content-Location`] =
@@ -31,7 +31,7 @@ object `Content-Location` {
 
   implicit val headerInstance: Header[`Content-Location`, Header.Single] =
     Header.create(
-      CIString("Content-Location"),
+      ci"Content-Location",
       _.uri.toString,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Content-Range.scala b/core/src/main/scala/org/http4s/headers/Content-Range.scala
index 928f1429e5..d510ccc431 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Range.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Range.scala
@@ -21,7 +21,7 @@ import cats.parse.{Numbers, Parser => P}
 import org.http4s.headers.Range.SubRange
 import org.http4s.internal.parsing.Rfc7230
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Content-Range` {
   def apply(range: Range.SubRange, length: Option[Long] = None): `Content-Range` =
@@ -64,7 +64,7 @@ object `Content-Range` {
 
   implicit val headerInstance: Header[`Content-Range`, Header.Single] =
     Header.createRendered(
-      CIString("Content-Range"),
+      ci"Content-Range",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type = {
diff --git a/core/src/main/scala/org/http4s/headers/Content-Type.scala b/core/src/main/scala/org/http4s/headers/Content-Type.scala
index a8cde56a90..ba50aac671 100644
--- a/core/src/main/scala/org/http4s/headers/Content-Type.scala
+++ b/core/src/main/scala/org/http4s/headers/Content-Type.scala
@@ -19,7 +19,7 @@ package headers
 
 import cats.parse.Parser
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Content-Type` {
   def apply(mediaType: MediaType, charset: Charset): `Content-Type` =
@@ -52,7 +52,7 @@ object `Content-Type` {
 
   implicit val headerInstance: Header[`Content-Type`, Header.Single] =
     Header.createRendered(
-      CIString("Content-Type"),
+      ci"Content-Type",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/Cookie.scala b/core/src/main/scala/org/http4s/headers/Cookie.scala
index d1e101574d..2a0b9b9eeb 100644
--- a/core/src/main/scala/org/http4s/headers/Cookie.scala
+++ b/core/src/main/scala/org/http4s/headers/Cookie.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.parse.Parser
 import org.http4s.util.{Renderable, Writer}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Cookie {
   def apply(head: RequestCookie, tail: RequestCookie*): `Cookie` =
@@ -46,7 +46,7 @@ object Cookie {
 
   implicit val headerInstance: Header[Cookie, Header.Recurring] =
     Header.createRendered(
-      CIString("Cookie"),
+      ci"Cookie",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/Date.scala b/core/src/main/scala/org/http4s/headers/Date.scala
index fa0cd33862..56dba58189 100644
--- a/core/src/main/scala/org/http4s/headers/Date.scala
+++ b/core/src/main/scala/org/http4s/headers/Date.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Date {
   def parse(s: String): ParseResult[Date] =
@@ -30,7 +30,7 @@ object Date {
 
   implicit val headerInstance: Header[Date, Header.Single] =
     Header.createRendered(
-      CIString("Date"),
+      ci"Date",
       _.date,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/ETag.scala b/core/src/main/scala/org/http4s/headers/ETag.scala
index 5aa9e19bc1..5700df6c81 100644
--- a/core/src/main/scala/org/http4s/headers/ETag.scala
+++ b/core/src/main/scala/org/http4s/headers/ETag.scala
@@ -20,7 +20,7 @@ package headers
 import cats.parse.Parser
 import org.http4s
 import org.http4s.EntityTag.{Strong, Weakness, parser => entityTagParser}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object ETag {
 
@@ -42,7 +42,7 @@ object ETag {
 
   implicit val headerInstance: Header[ETag, Header.Single] =
     Header.create(
-      CIString("ETag"),
+      ci"ETag",
       _.tag.toString,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Expires.scala b/core/src/main/scala/org/http4s/headers/Expires.scala
index fa9063ef1f..8f949e7a38 100644
--- a/core/src/main/scala/org/http4s/headers/Expires.scala
+++ b/core/src/main/scala/org/http4s/headers/Expires.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.{Parser, Parser0}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Expires {
   def parse(s: String): ParseResult[Expires] =
@@ -40,7 +40,7 @@ object Expires {
 
   implicit val headerInstance: Header[Expires, Header.Single] =
     Header.createRendered(
-      CIString("Expires"),
+      ci"Expires",
       _.expirationDate,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Forwarded.scala b/core/src/main/scala/org/http4s/headers/Forwarded.scala
index 5998740d66..32710b3575 100644
--- a/core/src/main/scala/org/http4s/headers/Forwarded.scala
+++ b/core/src/main/scala/org/http4s/headers/Forwarded.scala
@@ -28,7 +28,7 @@ import org.http4s.util.{Renderable, Writer}
 import org.http4s.internal.parsing.{Rfc3986, Rfc7230}
 import org.http4s.Header
 import scala.util.Try
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Forwarded extends ForwardedRenderers {
 
@@ -357,7 +357,7 @@ object Forwarded extends ForwardedRenderers {
       .map(Forwarded.apply)
   }
 
-  val name = CIString("Forwarded")
+  val name = ci"Forwarded"
 
   implicit val headerInstance: Header[Forwarded, Header.Recurring] =
     Header.createRendered(
diff --git a/core/src/main/scala/org/http4s/headers/Host.scala b/core/src/main/scala/org/http4s/headers/Host.scala
index 1550e66571..7557be8e6f 100644
--- a/core/src/main/scala/org/http4s/headers/Host.scala
+++ b/core/src/main/scala/org/http4s/headers/Host.scala
@@ -21,7 +21,7 @@ import cats.parse.Parser
 import org.http4s.internal.parsing.Rfc3986
 import org.http4s.util.{Renderable, Writer}
 import scala.util.Try
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Host {
   def apply(host: String, port: Int): Host = apply(host, Some(port))
@@ -40,7 +40,7 @@ object Host {
   }
   implicit val headerInstance: Header[Host, Header.Single] =
     Header.createRendered(
-      CIString("Host"),
+      ci"Host",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type = {
diff --git a/core/src/main/scala/org/http4s/headers/If-Match.scala b/core/src/main/scala/org/http4s/headers/If-Match.scala
index 607fdb748b..a53ad73c5e 100644
--- a/core/src/main/scala/org/http4s/headers/If-Match.scala
+++ b/core/src/main/scala/org/http4s/headers/If-Match.scala
@@ -22,7 +22,7 @@ import cats.parse._
 import cats.syntax.foldable._
 import org.http4s.internal.parsing.Rfc7230
 
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `If-Match` {
 
@@ -44,7 +44,7 @@ object `If-Match` {
 
   implicit val headerInstance: Header[`If-Match`, Header.Single] =
     Header.create(
-      CIString("If-Match"),
+      ci"If-Match",
       _.tags match {
         case None => "*"
         case Some(nel) => nel.mkString_("", ",", "")
diff --git a/core/src/main/scala/org/http4s/headers/If-Modified-Since.scala b/core/src/main/scala/org/http4s/headers/If-Modified-Since.scala
index 958c582bec..4966e2062e 100644
--- a/core/src/main/scala/org/http4s/headers/If-Modified-Since.scala
+++ b/core/src/main/scala/org/http4s/headers/If-Modified-Since.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `If-Modified-Since` {
   def parse(s: String): ParseResult[`If-Modified-Since`] =
@@ -30,7 +30,7 @@ object `If-Modified-Since` {
 
   implicit val headerInstance: Header[`If-Modified-Since`, Header.Single] =
     Header.createRendered(
-      CIString("If-Modified-Since"),
+      ci"If-Modified-Since",
       _.date,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/If-None-Match.scala b/core/src/main/scala/org/http4s/headers/If-None-Match.scala
index dbca71b133..8fce2ac757 100644
--- a/core/src/main/scala/org/http4s/headers/If-None-Match.scala
+++ b/core/src/main/scala/org/http4s/headers/If-None-Match.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.syntax.foldable._
 import cats.parse._
 import org.http4s.internal.parsing.Rfc7230
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 /** {{{
   *  The "If-None-Match" header field makes the request method conditional
@@ -53,7 +53,7 @@ object `If-None-Match` {
 
   implicit val headerInstance: Header[`If-None-Match`, Header.Single] =
     Header.create(
-      CIString("If-None-Match"),
+      ci"If-None-Match",
       _.tags match {
         case None => "*"
         case Some(tags) => tags.mkString_("", ",", "")
diff --git a/core/src/main/scala/org/http4s/headers/If-Unmodified-Since.scala b/core/src/main/scala/org/http4s/headers/If-Unmodified-Since.scala
index 4599af1f5a..efcc872e28 100644
--- a/core/src/main/scala/org/http4s/headers/If-Unmodified-Since.scala
+++ b/core/src/main/scala/org/http4s/headers/If-Unmodified-Since.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `If-Unmodified-Since` {
   def parse(s: String): ParseResult[`If-Unmodified-Since`] =
@@ -30,7 +30,7 @@ object `If-Unmodified-Since` {
 
   implicit val headerInstance: Header[`If-Unmodified-Since`, Header.Single] =
     Header.createRendered(
-      CIString("If-Unmodified-Since"),
+      ci"If-Unmodified-Since",
       _.date,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Last-Event-Id.scala b/core/src/main/scala/org/http4s/headers/Last-Event-Id.scala
index 6e4e1c100b..d545c007fc 100644
--- a/core/src/main/scala/org/http4s/headers/Last-Event-Id.scala
+++ b/core/src/main/scala/org/http4s/headers/Last-Event-Id.scala
@@ -20,7 +20,7 @@ package headers
 import cats.parse.Parser
 import org.http4s.internal.CharPredicate
 import org.http4s.ServerSentEvent._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 final case class `Last-Event-Id`(id: EventId)
 
@@ -34,7 +34,7 @@ object `Last-Event-Id` {
 
   implicit val headerInstance: Header[`Last-Event-Id`, Header.Single] =
     Header.create(
-      CIString("Last-Event-Id"),
+      ci"Last-Event-Id",
       _.id.value,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Last-Modified.scala b/core/src/main/scala/org/http4s/headers/Last-Modified.scala
index 78441e5721..b3f8d15f64 100644
--- a/core/src/main/scala/org/http4s/headers/Last-Modified.scala
+++ b/core/src/main/scala/org/http4s/headers/Last-Modified.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Last-Modified` {
 
@@ -31,7 +31,7 @@ object `Last-Modified` {
 
   implicit val headerInstance: Header[`Last-Modified`, Header.Single] =
     Header.createRendered(
-      CIString("Last-Modified"),
+      ci"Last-Modified",
       _.date,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Link.scala b/core/src/main/scala/org/http4s/headers/Link.scala
index 17bd332bd8..8a4d9cb821 100644
--- a/core/src/main/scala/org/http4s/headers/Link.scala
+++ b/core/src/main/scala/org/http4s/headers/Link.scala
@@ -23,7 +23,7 @@ import org.http4s.internal.parsing.Rfc7230.{headerRep1, ows, quotedString, token
 
 import java.nio.charset.StandardCharsets
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Link {
 
@@ -90,7 +90,7 @@ object Link {
 
   implicit val headerInstance: Header[Link, Header.Recurring] =
     Header.createRendered(
-      CIString("Link"),
+      ci"Link",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Location.scala b/core/src/main/scala/org/http4s/headers/Location.scala
index c1a589c8c3..16c92671ec 100644
--- a/core/src/main/scala/org/http4s/headers/Location.scala
+++ b/core/src/main/scala/org/http4s/headers/Location.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import java.nio.charset.StandardCharsets
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Location {
 
@@ -32,7 +32,7 @@ object Location {
 
   implicit val headerInstance: Header[Location, Header.Single] =
     Header.create(
-      CIString("Location"),
+      ci"Location",
       _.uri.toString,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Max-Forwards.scala b/core/src/main/scala/org/http4s/headers/Max-Forwards.scala
index 835fef3e1b..bd0141377f 100644
--- a/core/src/main/scala/org/http4s/headers/Max-Forwards.scala
+++ b/core/src/main/scala/org/http4s/headers/Max-Forwards.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import org.http4s.parser.AdditionalRules
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 /** Request header, used with the TRACE and OPTION request methods,
   * that gives an upper bound on how many times the request can be
@@ -47,7 +47,7 @@ object `Max-Forwards` {
 
   implicit val headerInstance: Header[`Max-Forwards`, Header.Single] =
     Header.createRendered(
-      CIString("Max-Forwards"),
+      ci"Max-Forwards",
       _.count,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Origin.scala b/core/src/main/scala/org/http4s/headers/Origin.scala
index 9bf7913e59..eeca09dcb9 100644
--- a/core/src/main/scala/org/http4s/headers/Origin.scala
+++ b/core/src/main/scala/org/http4s/headers/Origin.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.parse.{Parser, Parser0, Rfc5234}
 import org.http4s.Uri.RegName
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 sealed abstract class Origin
 
@@ -77,7 +77,7 @@ object Origin {
 
   implicit val headerInstance: Header[Origin, Header.Single] =
     Header.createRendered(
-      CIString("Origin"),
+      ci"Origin",
       v =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/Proxy-Authenticate.scala b/core/src/main/scala/org/http4s/headers/Proxy-Authenticate.scala
index 3e9d6cc050..a6b8ba3a76 100644
--- a/core/src/main/scala/org/http4s/headers/Proxy-Authenticate.scala
+++ b/core/src/main/scala/org/http4s/headers/Proxy-Authenticate.scala
@@ -37,7 +37,7 @@ import cats.data.NonEmptyList
 import cats.parse.Parser
 import org.http4s.internal.parsing.Rfc7235
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Proxy-Authenticate` {
 
@@ -52,7 +52,7 @@ object `Proxy-Authenticate` {
 
   implicit val headerInstance: Header[`Proxy-Authenticate`, Header.Recurring] =
     Header.createRendered(
-      CIString("Proxy-Authenticate"),
+      ci"Proxy-Authenticate",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Proxy-Authorization.scala b/core/src/main/scala/org/http4s/headers/Proxy-Authorization.scala
index 881df6bf98..916c72d240 100644
--- a/core/src/main/scala/org/http4s/headers/Proxy-Authorization.scala
+++ b/core/src/main/scala/org/http4s/headers/Proxy-Authorization.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 /** {{{
   *   The "Proxy-Authorization" header field allows the client to identify
@@ -41,7 +41,7 @@ object `Proxy-Authorization` {
 
   implicit val headerInstance: Header[`Proxy-Authorization`, Header.Single] =
     Header.createRendered(
-      CIString("Proxy-Authorization"),
+      ci"Proxy-Authorization",
       _.credentials,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Range.scala b/core/src/main/scala/org/http4s/headers/Range.scala
index 8b8adfe882..7afe48a2ec 100644
--- a/core/src/main/scala/org/http4s/headers/Range.scala
+++ b/core/src/main/scala/org/http4s/headers/Range.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.parse.{Numbers, Parser0 => P0, Parser => P}
 import org.http4s.internal.parsing.Rfc7230
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 // See https://tools.ietf.org/html/rfc7233
 
@@ -91,7 +91,7 @@ object Range {
 
   implicit val headerInstance: Header[Range, Header.Single] =
     Header.createRendered(
-      CIString("Range"),
+      ci"Range",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type = {
diff --git a/core/src/main/scala/org/http4s/headers/Referer.scala b/core/src/main/scala/org/http4s/headers/Referer.scala
index 01ddffa6ea..e6490780db 100644
--- a/core/src/main/scala/org/http4s/headers/Referer.scala
+++ b/core/src/main/scala/org/http4s/headers/Referer.scala
@@ -18,7 +18,7 @@ package org.http4s
 package headers
 
 import java.nio.charset.StandardCharsets
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Referer {
 
@@ -32,7 +32,7 @@ object Referer {
 
   implicit val headerInstance: Header[Referer, Header.Single] =
     Header.createRendered(
-      CIString("Referer"),
+      ci"Referer",
       _.uri,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Retry-After.scala b/core/src/main/scala/org/http4s/headers/Retry-After.scala
index 8b349803a8..1c81cb3dc7 100644
--- a/core/src/main/scala/org/http4s/headers/Retry-After.scala
+++ b/core/src/main/scala/org/http4s/headers/Retry-After.scala
@@ -20,7 +20,7 @@ package headers
 import cats.parse.{Parser, Rfc5234}
 import org.http4s.util.Renderable._
 import scala.concurrent.duration.FiniteDuration
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Retry-After` {
   private class RetryAfterImpl(retry: Either[HttpDate, Long]) extends `Retry-After`(retry)
@@ -57,7 +57,7 @@ object `Retry-After` {
 
   implicit val headerInstance: Header[`Retry-After`, Header.Single] =
     Header.createRendered(
-      CIString("Retry-After"),
+      ci"Retry-After",
       _.retry,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/Server.scala b/core/src/main/scala/org/http4s/headers/Server.scala
index 5bcc04c445..f6d2b79e5c 100644
--- a/core/src/main/scala/org/http4s/headers/Server.scala
+++ b/core/src/main/scala/org/http4s/headers/Server.scala
@@ -18,14 +18,14 @@ package org.http4s
 package headers
 
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object Server {
 
   def apply(id: ProductId, tail: ProductIdOrComment*): Server =
     apply(id, tail.toList)
 
-  val name = CIString("Server")
+  val name = ci"Server"
 
   def parse(s: String): ParseResult[Server] =
     ParseResult.fromParser(parser, "Invalid Server header")(s)
diff --git a/core/src/main/scala/org/http4s/headers/Set-Cookie.scala b/core/src/main/scala/org/http4s/headers/Set-Cookie.scala
index 2ce1831c35..f0bd69bf76 100644
--- a/core/src/main/scala/org/http4s/headers/Set-Cookie.scala
+++ b/core/src/main/scala/org/http4s/headers/Set-Cookie.scala
@@ -18,10 +18,10 @@ package org.http4s
 package headers
 
 import cats.parse.Parser
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Set-Cookie` {
-  val name = CIString("Set-Cookie")
+  val name = ci"Set-Cookie"
 
   def parse(s: String): ParseResult[`Set-Cookie`] =
     ParseResult.fromParser(parser, "Invalid Set-Cookie header")(s)
diff --git a/core/src/main/scala/org/http4s/headers/Strict-Transport-Security.scala b/core/src/main/scala/org/http4s/headers/Strict-Transport-Security.scala
index b8f2522cf7..79c0aae0f5 100644
--- a/core/src/main/scala/org/http4s/headers/Strict-Transport-Security.scala
+++ b/core/src/main/scala/org/http4s/headers/Strict-Transport-Security.scala
@@ -22,7 +22,7 @@ import org.http4s.internal.parsing.Rfc7230.ows
 import org.http4s.parser.AdditionalRules
 import org.http4s.util.{Renderable, Writer}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 import scala.concurrent.duration.FiniteDuration
 
@@ -87,7 +87,7 @@ object `Strict-Transport-Security` {
 
   implicit val headerInstance: Header[`Strict-Transport-Security`, Header.Single] =
     Header.createRendered(
-      CIString("Strict-Transport-Security"),
+      ci"Strict-Transport-Security",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type = {
diff --git a/core/src/main/scala/org/http4s/headers/Transfer-Encoding.scala b/core/src/main/scala/org/http4s/headers/Transfer-Encoding.scala
index 30b39c09b8..38fbb5683b 100644
--- a/core/src/main/scala/org/http4s/headers/Transfer-Encoding.scala
+++ b/core/src/main/scala/org/http4s/headers/Transfer-Encoding.scala
@@ -22,14 +22,14 @@ import cats.parse.Parser
 import cats.syntax.all._
 import org.http4s.internal.parsing.Rfc7230
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `Transfer-Encoding` {
 
   def apply(head: TransferCoding, tail: TransferCoding*): `Transfer-Encoding` =
     apply(NonEmptyList(head, tail.toList))
 
-  val name = CIString("Transfer-Encoding")
+  val name = ci"Transfer-Encoding"
 
   def parse(s: String): ParseResult[`Transfer-Encoding`] =
     ParseResult.fromParser(parser, "Invalid Transfer-Encoding header")(s)
diff --git a/core/src/main/scala/org/http4s/headers/User-Agent.scala b/core/src/main/scala/org/http4s/headers/User-Agent.scala
index 6257f6d23f..0d6d895a45 100644
--- a/core/src/main/scala/org/http4s/headers/User-Agent.scala
+++ b/core/src/main/scala/org/http4s/headers/User-Agent.scala
@@ -19,14 +19,14 @@ package headers
 
 import org.http4s.util.{Renderable, Renderer, Writer}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `User-Agent` {
 
   def apply(id: ProductId, tail: ProductIdOrComment*): `User-Agent` =
     apply(id, tail.toList)
 
-  val name = CIString("User-Agent")
+  val name = ci"User-Agent"
 
   def parse(s: String): ParseResult[`User-Agent`] =
     ParseResult.fromParser(parser, "Invalid User-Agent header")(s)
diff --git a/core/src/main/scala/org/http4s/headers/WWW-Authenticate.scala b/core/src/main/scala/org/http4s/headers/WWW-Authenticate.scala
index 612f4a396a..75ec378cf5 100644
--- a/core/src/main/scala/org/http4s/headers/WWW-Authenticate.scala
+++ b/core/src/main/scala/org/http4s/headers/WWW-Authenticate.scala
@@ -21,7 +21,7 @@ import cats.data.NonEmptyList
 import cats.parse.Parser
 import org.http4s.internal.parsing.Rfc7235
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `WWW-Authenticate` {
 
@@ -36,7 +36,7 @@ object `WWW-Authenticate` {
 
   implicit val headerInstance: Header[`WWW-Authenticate`, Header.Recurring] =
     Header.createRendered(
-      CIString("WWW-Authenticate"),
+      ci"WWW-Authenticate",
       _.values,
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/X-B3-Flags.scala b/core/src/main/scala/org/http4s/headers/X-B3-Flags.scala
index 79c9926140..b730ddbc0c 100644
--- a/core/src/main/scala/org/http4s/headers/X-B3-Flags.scala
+++ b/core/src/main/scala/org/http4s/headers/X-B3-Flags.scala
@@ -20,7 +20,7 @@ package headers
 import cats.parse.Parser0
 import cats.parse.Numbers
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `X-B3-Flags` {
 
@@ -72,7 +72,7 @@ object `X-B3-Flags` {
 
   implicit val headerInstance: Header[`X-B3-Flags`, Header.Single] =
     Header.createRendered(
-      CIString("X-B3-Flags"),
+      ci"X-B3-Flags",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/X-B3-ParentSpanId.scala b/core/src/main/scala/org/http4s/headers/X-B3-ParentSpanId.scala
index 7995cb5e1f..f092b7ea28 100644
--- a/core/src/main/scala/org/http4s/headers/X-B3-ParentSpanId.scala
+++ b/core/src/main/scala/org/http4s/headers/X-B3-ParentSpanId.scala
@@ -22,7 +22,7 @@ import cats.parse.{Parser0, Rfc5234}
 import org.http4s.parser.ZipkinHeader
 import org.http4s.util.{Renderable, Writer}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `X-B3-ParentSpanId` {
 
@@ -38,7 +38,7 @@ object `X-B3-ParentSpanId` {
 
   implicit val headerInstance: Header[`X-B3-ParentSpanId`, Header.Single] =
     Header.createRendered(
-      CIString("X-B3-ParentSpanId"),
+      ci"X-B3-ParentSpanId",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/X-B3-Sampled.scala b/core/src/main/scala/org/http4s/headers/X-B3-Sampled.scala
index b3427b62fb..23ed6ae609 100644
--- a/core/src/main/scala/org/http4s/headers/X-B3-Sampled.scala
+++ b/core/src/main/scala/org/http4s/headers/X-B3-Sampled.scala
@@ -19,7 +19,7 @@ package headers
 
 import cats.parse.{Parser, Rfc5234}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `X-B3-Sampled` {
 
@@ -31,7 +31,7 @@ object `X-B3-Sampled` {
 
   implicit val headerInstance: Header[`X-B3-Sampled`, Header.Single] =
     Header.create(
-      CIString("X-B3-Sampled"),
+      ci"X-B3-Sampled",
       v => if (v.sampled) "1" else "0",
       parse
     )
diff --git a/core/src/main/scala/org/http4s/headers/X-B3-SpanId.scala b/core/src/main/scala/org/http4s/headers/X-B3-SpanId.scala
index d67c08379f..14e4eb496e 100644
--- a/core/src/main/scala/org/http4s/headers/X-B3-SpanId.scala
+++ b/core/src/main/scala/org/http4s/headers/X-B3-SpanId.scala
@@ -22,7 +22,7 @@ import cats.parse.{Parser0, Rfc5234}
 import org.http4s.parser.ZipkinHeader
 import org.http4s.util.{Renderable, Writer}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `X-B3-SpanId` {
 
@@ -38,7 +38,7 @@ object `X-B3-SpanId` {
 
   implicit val headerInstance: Header[`X-B3-SpanId`, Header.Single] =
     Header.createRendered(
-      CIString("X-B3-SpanId"),
+      ci"X-B3-SpanId",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/X-B3-TraceId.scala b/core/src/main/scala/org/http4s/headers/X-B3-TraceId.scala
index 450b72b898..51ea739178 100644
--- a/core/src/main/scala/org/http4s/headers/X-B3-TraceId.scala
+++ b/core/src/main/scala/org/http4s/headers/X-B3-TraceId.scala
@@ -24,7 +24,7 @@ import cats.syntax.all._
 import java.util.UUID
 import org.http4s.parser.ZipkinHeader
 import org.http4s.util.{Renderable, Writer}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `X-B3-TraceId` {
 
@@ -40,7 +40,7 @@ object `X-B3-TraceId` {
 
   implicit val headerInstance: Header[`X-B3-TraceId`, Header.Single] =
     Header.createRendered(
-      CIString("X-B3-TraceId"),
+      ci"X-B3-TraceId",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type =
diff --git a/core/src/main/scala/org/http4s/headers/X-Forwarded-For.scala b/core/src/main/scala/org/http4s/headers/X-Forwarded-For.scala
index 0b36da4456..5ef9b33ad7 100644
--- a/core/src/main/scala/org/http4s/headers/X-Forwarded-For.scala
+++ b/core/src/main/scala/org/http4s/headers/X-Forwarded-For.scala
@@ -23,7 +23,7 @@ import com.comcast.ip4s.IpAddress
 import org.http4s.internal.parsing.{Rfc3986, Rfc7230}
 import org.http4s.util.{Renderable, Writer}
 import org.http4s.Header
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object `X-Forwarded-For` {
 
@@ -42,7 +42,7 @@ object `X-Forwarded-For` {
 
   implicit val headerInstance: Header[`X-Forwarded-For`, Header.Single] =
     Header.createRendered(
-      CIString("X-Forwarded-For"),
+      ci"X-Forwarded-For",
       h =>
         new Renderable {
           def render(writer: Writer): writer.type = {
diff --git a/docs/src/main/mdoc/middleware.md b/docs/src/main/mdoc/middleware.md
index adbbe9d9ad..ac55bb2b3c 100644
--- a/docs/src/main/mdoc/middleware.md
+++ b/docs/src/main/mdoc/middleware.md
@@ -230,11 +230,11 @@ as to why this header is useful.
 
 ```scala mdoc:silent
 import org.http4s.server.middleware.RequestId
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 val requestIdService = RequestId.httpRoutes(HttpRoutes.of[IO] {
   case req =>
-    val reqId = req.headers.get(CIString("X-Request-ID")).fold("null")(_.head.value)
+    val reqId = req.headers.get(ci"X-Request-ID").fold("null")(_.head.value)
     // use request id to correlate logs with the request
     IO(println(s"request received, cid=$reqId")) *> Ok()
 })
diff --git a/ember-client/src/main/scala/org/http4s/ember/client/internal/ClientHelpers.scala b/ember-client/src/main/scala/org/http4s/ember/client/internal/ClientHelpers.scala
index 744dc0c193..d767ecee5c 100644
--- a/ember-client/src/main/scala/org/http4s/ember/client/internal/ClientHelpers.scala
+++ b/ember-client/src/main/scala/org/http4s/ember/client/internal/ClientHelpers.scala
@@ -28,7 +28,7 @@ import scala.concurrent.duration._
 import java.net.InetSocketAddress
 import org.http4s._
 import org.http4s.client.RequestKey
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import _root_.org.http4s.ember.core.{Encoder, Parser}
 import _root_.fs2.io.tcp.SocketGroup
 import _root_.fs2.io.tls._
@@ -123,7 +123,7 @@ private[client] object ClientHelpers {
       userAgent: Option[`User-Agent`]): F[Request[F]] = {
     val connection = req.headers
       .get[Connection]
-      .fold(Connection(NonEmptyList.of(CIString("keep-alive"))))(identity)
+      .fold(Connection(NonEmptyList.of(ci"keep-alive")))(identity)
     val userAgentHeader: Option[`User-Agent`] = req.headers.get[`User-Agent`].orElse(userAgent)
     for {
       date <- req.headers.get[Date].fold(HttpDate.current[F].map(Date(_)))(_.pure[F])
diff --git a/ember-server/src/main/scala/org/http4s/ember/server/internal/ServerHelpers.scala b/ember-server/src/main/scala/org/http4s/ember/server/internal/ServerHelpers.scala
index 78a933d340..378fac6b45 100644
--- a/ember-server/src/main/scala/org/http4s/ember/server/internal/ServerHelpers.scala
+++ b/ember-server/src/main/scala/org/http4s/ember/server/internal/ServerHelpers.scala
@@ -33,7 +33,7 @@ import org.http4s.ember.core.{Encoder, Parser}
 import org.http4s.headers.{Connection, Date}
 import org.http4s.internal.tls.{deduceKeyLength, getCertChain}
 import org.http4s.server.{SecureSession, ServerRequestKeys}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.log4cats.Logger
 import org.typelevel.vault.Vault
 import scala.concurrent.duration._
@@ -41,11 +41,11 @@ import scodec.bits.ByteVector
 
 private[server] object ServerHelpers {
 
-  private val closeCi = CIString("close")
+  private val closeCi = ci"close"
 
-  private val connectionCi = CIString("connection")
+  private val connectionCi = ci"connection"
   private val close = Connection(NonEmptyList.of(closeCi))
-  private val keepAlive = Connection(NonEmptyList.one(CIString("keep-alive")))
+  private val keepAlive = Connection(NonEmptyList.one(ci"keep-alive"))
 
   private val serverFailure =
     Response(Status.InternalServerError).putHeaders(org.http4s.headers.`Content-Length`.zero)
diff --git a/examples/src/main/scala/com/example/http4s/HeaderExamples.scala b/examples/src/main/scala/com/example/http4s/HeaderExamples.scala
index d2fc655b59..3bc855750f 100644
--- a/examples/src/main/scala/com/example/http4s/HeaderExamples.scala
+++ b/examples/src/main/scala/com/example/http4s/HeaderExamples.scala
@@ -20,7 +20,7 @@ import cats.Semigroup
 import cats.data.NonEmptyList
 import cats.syntax.all._
 import org.http4s._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 // TODO migrate to a proper mdoc. This is to keep it compiling.
 
@@ -29,13 +29,13 @@ object HeaderExamples {
   case class Foo(v: String)
   object Foo {
     implicit def headerFoo: Header[Foo, Header.Single] = new Header[Foo, Header.Single] {
-      def name = CIString("foo")
+      def name = ci"foo"
       def value(f: Foo) = f.v
       def parse(s: String) = Foo(s).asRight
     }
 
   }
-  def baz = Header.Raw(CIString("baz"), "bbb")
+  def baz = Header.Raw(ci"baz", "bbb")
 
   val myHeaders = Headers(
     Foo("hello"),
@@ -47,7 +47,7 @@ object HeaderExamples {
   object Bar {
     implicit val headerBar: Header[Bar, Header.Recurring] with Semigroup[Bar] =
       new Header[Bar, Header.Recurring] with Semigroup[Bar] {
-        def name = CIString("Bar")
+        def name = ci"Bar"
         def value(b: Bar) = b.v.toList.mkString(",")
         def parse(s: String) = Bar(NonEmptyList.one(s)).asRight
         def combine(a: Bar, b: Bar) = Bar(a.v |+| b.v)
@@ -58,7 +58,7 @@ object HeaderExamples {
   object SetCookie {
     implicit val headerCookie: Header[SetCookie, Header.Recurring] =
       new Header[SetCookie, Header.Recurring] {
-        def name = CIString("Set-Cookie")
+        def name = ci"Set-Cookie"
         def value(c: SetCookie) = s"${c.name}:${c.value}"
         def parse(s: String) =
           s.split(':').toList match {
diff --git a/project/Http4sPlugin.scala b/project/Http4sPlugin.scala
index 5b2ea384b0..7ba67792fd 100644
--- a/project/Http4sPlugin.scala
+++ b/project/Http4sPlugin.scala
@@ -275,7 +275,7 @@ object Http4sPlugin extends AutoPlugin {
     val asyncHttpClient = "2.12.2"
     val blaze = "0.15.0-M2"
     val boopickle = "1.3.3"
-    val caseInsensitive = "1.0.0"
+    val caseInsensitive = "1.1.0"
     val cats = "2.4.2"
     val catsEffect = "2.3.3"
     val catsParse = "0.3.1"
diff --git a/server/src/main/scala/org/http4s/server/middleware/CORS.scala b/server/src/main/scala/org/http4s/server/middleware/CORS.scala
index ef8f9f5dfb..1459d46f31 100644
--- a/server/src/main/scala/org/http4s/server/middleware/CORS.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/CORS.scala
@@ -23,7 +23,7 @@ import cats.data.{Kleisli, NonEmptyList}
 import cats.syntax.all._
 import org.http4s.Method.OPTIONS
 import org.log4s.getLogger
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.duration._
 
 /** CORS middleware config options.
@@ -44,7 +44,7 @@ final case class CORSConfig(
 object CORS {
   private[CORS] val logger = getLogger
 
-  val defaultVaryHeader = Header.Raw(CIString("Vary"), "Origin,Access-Control-Request-Method")
+  val defaultVaryHeader = Header.Raw(ci"Vary", "Origin,Access-Control-Request-Method")
 
   def DefaultCORSConfig =
     CORSConfig(anyOrigin = true, allowCredentials = true, maxAge = 1.day.toSeconds)
@@ -68,7 +68,7 @@ object CORS {
           config.exposedHeaders.map(headerFromStrings("Access-Control-Expose-Headers", _))
 
       def varyHeader(response: Response[G]): Response[G] =
-        response.headers.get(CIString("Vary")) match {
+        response.headers.get(ci"Vary") match {
           case None => response.putHeaders(defaultVaryHeader)
           case _ => response
         }
@@ -108,8 +108,8 @@ object CORS {
 
       (
         req.method,
-        req.headers.get(CIString("Origin")),
-        req.headers.get(CIString("Access-Control-Request-Method"))) match {
+        req.headers.get(ci"Origin"),
+        req.headers.get(ci"Access-Control-Request-Method")) match {
         case (OPTIONS, Some(NonEmptyList(origin, _)), Some(NonEmptyList(acrm, _)))
             if allowCORS(origin, acrm) =>
           logger.debug(s"Serving OPTIONS with CORS headers for $acrm ${req.uri}")
@@ -117,7 +117,7 @@ object CORS {
         case (_, Some(NonEmptyList(origin, _)), _) =>
           if (allowCORS(
               origin,
-              Header.Raw(CIString("Access-Control-Request-Method"), req.method.renderString)))
+              Header.Raw(ci"Access-Control-Request-Method", req.method.renderString)))
             http(req).map { resp =>
               logger.debug(s"Adding CORS headers to ${req.method} ${req.uri}")
               corsHeaders(origin.value, req.method.renderString, isPreflight = false)(resp)
diff --git a/server/src/main/scala/org/http4s/server/middleware/CSRF.scala b/server/src/main/scala/org/http4s/server/middleware/CSRF.scala
index 84944bc9fa..1735df21ce 100644
--- a/server/src/main/scala/org/http4s/server/middleware/CSRF.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/CSRF.scala
@@ -32,7 +32,7 @@ import org.http4s.headers.{Cookie => HCookie}
 import org.http4s.headers.{Host, Referer, `Content-Type`, `X-Forwarded-For`}
 import org.http4s.internal.{decodeHexString, encodeHexString}
 import org.http4s.Uri.Scheme
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.util.control.NoStackTrace
 
 /** Middleware to avoid Cross-site request forgery attacks.
@@ -256,7 +256,7 @@ object CSRF {
       headerCheck: Request[G] => Boolean
   ): CSRFBuilder[F, G] =
     new CSRFBuilder[F, G](
-      headerName = CIString("X-Csrf-Token"),
+      headerName = ci"X-Csrf-Token",
       cookieSettings = CookieSettings(
         cookieName = "csrf-token",
         secure = false,
@@ -438,7 +438,7 @@ object CSRF {
       sc: Scheme,
       port: Option[Int]): Boolean =
     r.headers
-      .get(CIString("Origin"))
+      .get(ci"Origin")
       .flatMap(o =>
         //Hack to get around 2.11 compat
         Uri.fromString(o.head.value) match {
diff --git a/server/src/main/scala/org/http4s/server/middleware/ChunkAggregator.scala b/server/src/main/scala/org/http4s/server/middleware/ChunkAggregator.scala
index 8ee4bb9385..eace2ceb81 100644
--- a/server/src/main/scala/org/http4s/server/middleware/ChunkAggregator.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/ChunkAggregator.scala
@@ -25,7 +25,7 @@ import cats.effect.Sync
 import cats.syntax.all._
 import fs2._
 import org.http4s.headers._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.collection.mutable.ListBuffer
 
 object ChunkAggregator {
@@ -53,8 +53,8 @@ object ChunkAggregator {
   private[this] def removeChunkedTransferEncoding(len: Long)(headers: Headers): Headers = {
     val hh: ListBuffer[Header.ToRaw] = ListBuffer.empty[Header.ToRaw]
     headers.headers.foreach {
-      case h if h.name == CIString("Transfer-Encoding") =>
-        `Transfer-Encoding`.parse(h.value) match {
+      case h @ Header.Raw(ci"Transfer-Encoding", value) =>
+        `Transfer-Encoding`.parse(value) match {
           case Right(te) =>
             te.values.filterNot(_ === TransferCoding.chunked) match {
               case v :: vs =>
@@ -65,7 +65,7 @@ object ChunkAggregator {
           case Left(_) =>
             hh += h
         }
-      case h if h.name == CIString("Content-Length") => // do nothing
+      case Header.Raw(ci"Content-Length", _) => // do nothing
       case header => hh += header
     }
     if (len > 0L)
diff --git a/server/src/main/scala/org/http4s/server/middleware/HttpMethodOverrider.scala b/server/src/main/scala/org/http4s/server/middleware/HttpMethodOverrider.scala
index 76b8f4011e..f6028a8438 100644
--- a/server/src/main/scala/org/http4s/server/middleware/HttpMethodOverrider.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/HttpMethodOverrider.scala
@@ -26,7 +26,7 @@ import cats.syntax.flatMap._
 import cats.syntax.alternative._
 import cats.{Monad, ~>}
 import org.http4s.Http
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.vault.Key
 
 object HttpMethodOverrider {
@@ -70,7 +70,7 @@ object HttpMethodOverrider {
 
   def defaultConfig[F[_], G[_]]: HttpMethodOverriderConfig[F, G] =
     HttpMethodOverriderConfig[F, G](
-      HeaderOverrideStrategy(CIString("X-HTTP-Method-Override")),
+      HeaderOverrideStrategy(ci"X-HTTP-Method-Override"),
       Set(Method.POST))
 
   val overriddenMethodAttrKey: Key[Method] = Key.newKey[IO, Method].unsafeRunSync()
@@ -101,7 +101,7 @@ object HttpMethodOverrider {
       }
 
     def updateVaryHeader(resp: Response[G]): Response[G] = {
-      val varyHeaderName = CIString("Vary")
+      val varyHeaderName = ci"Vary"
       config.overrideStrategy match {
         case HeaderOverrideStrategy(headerName) =>
           val updatedVaryHeader =
diff --git a/server/src/main/scala/org/http4s/server/middleware/HttpsRedirect.scala b/server/src/main/scala/org/http4s/server/middleware/HttpsRedirect.scala
index 3a8ccb4fc5..d6a9844031 100644
--- a/server/src/main/scala/org/http4s/server/middleware/HttpsRedirect.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/HttpsRedirect.scala
@@ -25,7 +25,7 @@ import org.http4s.Status.MovedPermanently
 import org.http4s.Uri.{Authority, RegName, Scheme}
 import org.http4s.headers.{Host, Location, `Content-Type`}
 import org.http4s.syntax.header._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 import org.log4s.getLogger
 
@@ -40,7 +40,7 @@ object HttpsRedirect {
 
   def apply[F[_], G[_]](http: Http[F, G])(implicit F: Applicative[F]): Http[F, G] =
     Kleisli { req =>
-      (req.headers.get(CIString("X-Forwarded-Proto")), req.headers.get[Host]) match {
+      (req.headers.get(ci"X-Forwarded-Proto"), req.headers.get[Host]) match {
         case (Some(NonEmptyList(proto, _)), Some(host))
             if Scheme.fromString(proto.value).contains(Scheme.http) =>
           logger.debug(s"Redirecting ${req.method} ${req.uri} to https on $host")
diff --git a/server/src/main/scala/org/http4s/server/middleware/RequestId.scala b/server/src/main/scala/org/http4s/server/middleware/RequestId.scala
index c5f3dd32d4..bcddd348d7 100644
--- a/server/src/main/scala/org/http4s/server/middleware/RequestId.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/RequestId.scala
@@ -24,7 +24,7 @@ import cats.arrow.FunctionK
 import cats.data.{Kleisli, NonEmptyList, OptionT}
 import cats.effect.{IO, Sync}
 import cats.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.vault.Key
 import java.util.UUID
 
@@ -34,7 +34,7 @@ import java.util.UUID
   */
 object RequestId {
 
-  private[this] val requestIdHeader = CIString("X-Request-ID")
+  private[this] val requestIdHeader = ci"X-Request-ID"
 
   val requestIdAttrKey: Key[String] = Key.newKey[IO, String].unsafeRunSync()
 
diff --git a/server/src/main/scala/org/http4s/server/middleware/ResponseTiming.scala b/server/src/main/scala/org/http4s/server/middleware/ResponseTiming.scala
index 67750da346..594580c2cf 100644
--- a/server/src/main/scala/org/http4s/server/middleware/ResponseTiming.scala
+++ b/server/src/main/scala/org/http4s/server/middleware/ResponseTiming.scala
@@ -21,7 +21,7 @@ package middleware
 import cats.data.Kleisli
 import cats.effect._
 import cats.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.duration._
 
 object ResponseTiming {
@@ -39,7 +39,7 @@ object ResponseTiming {
   def apply[F[_]](
       http: HttpApp[F],
       timeUnit: TimeUnit = MILLISECONDS,
-      headerName: CIString = CIString("X-Response-Time"))(implicit
+      headerName: CIString = ci"X-Response-Time")(implicit
       F: Sync[F],
       clock: Clock[F]): HttpApp[F] =
     Kleisli { req =>
diff --git a/server/src/main/scala/org/http4s/server/package.scala b/server/src/main/scala/org/http4s/server/package.scala
index 248f3109a6..1dab14cecb 100644
--- a/server/src/main/scala/org/http4s/server/package.scala
+++ b/server/src/main/scala/org/http4s/server/package.scala
@@ -24,7 +24,7 @@ import org.typelevel.vault._
 import java.net.{InetAddress, InetSocketAddress}
 import org.http4s.headers.{Connection, `Content-Length`}
 import org.log4s.getLogger
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.duration._
 import scala.util.control.NonFatal
 
@@ -162,7 +162,7 @@ package object server {
             Status.InternalServerError,
             req.httpVersion,
             Headers(
-              Connection(CIString("close")),
+              Connection(ci"close"),
               `Content-Length`.zero
             )))
     }
diff --git a/server/src/main/scala/org/http4s/server/staticcontent/FileService.scala b/server/src/main/scala/org/http4s/server/staticcontent/FileService.scala
index d23bcf7f77..f3a1e6ce27 100644
--- a/server/src/main/scala/org/http4s/server/staticcontent/FileService.scala
+++ b/server/src/main/scala/org/http4s/server/staticcontent/FileService.scala
@@ -28,7 +28,7 @@ import org.http4s.headers.Range.SubRange
 import org.http4s.headers._
 import org.http4s.server.middleware.TranslateUri
 import org.log4s.getLogger
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.util.control.NoStackTrace
 import scala.util.{Failure, Success, Try}
 
@@ -171,7 +171,7 @@ object FileService {
           }
         else nope
       case _ =>
-        req.headers.get(CIString("Range")) match {
+        req.headers.get(ci"Range") match {
           case Some(_) =>
             // It exists, but it didn't parse
             nope
diff --git a/servlet/src/main/scala/org/http4s/servlet/Http4sServlet.scala b/servlet/src/main/scala/org/http4s/servlet/Http4sServlet.scala
index cff2dd7618..515b5485a1 100644
--- a/servlet/src/main/scala/org/http4s/servlet/Http4sServlet.scala
+++ b/servlet/src/main/scala/org/http4s/servlet/Http4sServlet.scala
@@ -27,7 +27,7 @@ import org.http4s.internal.CollectionCompat.CollectionConverters._
 import org.http4s.server.SecureSession
 import org.http4s.server.ServerRequestKeys
 import org.log4s.getLogger
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.vault._
 
 abstract class Http4sServlet[F[_]](service: HttpApp[F], servletIo: ServletIo[F])(implicit
@@ -71,7 +71,7 @@ abstract class Http4sServlet[F[_]](service: HttpApp[F], servletIo: ServletIo[F])
     // a body and a status reason.  We sacrifice the status reason.
     F.delay {
       servletResponse.setStatus(response.status.code)
-      for (header <- response.headers.headers if header.name != CIString("Transfer-Encoding"))
+      for (header <- response.headers.headers if header.name != ci"Transfer-Encoding")
         servletResponse.addHeader(header.name.toString, header.value)
     }.attempt
       .flatMap {


Test patch:
diff --git a/blaze-core/src/test/scala/org/http4s/blazecore/util/Http1WriterSpec.scala b/blaze-core/src/test/scala/org/http4s/blazecore/util/Http1WriterSpec.scala
index b624b2916c..93fdf92aad 100644
--- a/blaze-core/src/test/scala/org/http4s/blazecore/util/Http1WriterSpec.scala
+++ b/blaze-core/src/test/scala/org/http4s/blazecore/util/Http1WriterSpec.scala
@@ -28,7 +28,7 @@ import java.nio.ByteBuffer
 import java.nio.charset.StandardCharsets
 import org.http4s.blaze.pipeline.{LeafBuilder, TailStage}
 import org.http4s.util.StringWriter
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.{ExecutionContext, Future}
 
 class Http1WriterSpec extends Http4sSuite {
@@ -297,7 +297,7 @@ class Http1WriterSpec extends Http4sSuite {
     def builderWithTrailer(tail: TailStage[ByteBuffer]): FlushingChunkWriter[IO] =
       new FlushingChunkWriter[IO](
         tail,
-        IO.pure(Headers(Header.Raw(CIString("X-Trailer"), "trailer header value"))))
+        IO.pure(Headers(Header.Raw(ci"X-Trailer", "trailer header value"))))
 
     val p = eval(IO(messageBuffer)).flatMap(chunk(_).covary[IO])
 
diff --git a/blaze-server/src/test/scala/org/http4s/server/blaze/Http1ServerStageSpec.scala b/blaze-server/src/test/scala/org/http4s/server/blaze/Http1ServerStageSpec.scala
index 864f3857fc..e8a9d2e94c 100644
--- a/blaze-server/src/test/scala/org/http4s/server/blaze/Http1ServerStageSpec.scala
+++ b/blaze-server/src/test/scala/org/http4s/server/blaze/Http1ServerStageSpec.scala
@@ -34,7 +34,7 @@ import org.http4s.dsl.io._
 import org.http4s.headers.{Date, `Content-Length`, `Transfer-Encoding`}
 import org.http4s.syntax.all._
 import org.http4s.testing.ErrorReporting._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.vault._
 import scala.concurrent.ExecutionContext
 import scala.concurrent.duration._
@@ -152,7 +152,7 @@ class Http1ServerStageSpec extends Http4sSuite {
       .map(parseAndDropDate)
       .map { case (s, h, r) =>
         val close = h.exists { h =>
-          h.name == CIString("connection") && h.value == "close"
+          h.name == ci"connection" && h.value == "close"
         }
         (s, close, r)
       }
diff --git a/blaze-server/src/test/scala/org/http4s/server/blaze/ServerTestRoutes.scala b/blaze-server/src/test/scala/org/http4s/server/blaze/ServerTestRoutes.scala
index f0d0f2b99b..dd494ccde7 100644
--- a/blaze-server/src/test/scala/org/http4s/server/blaze/ServerTestRoutes.scala
+++ b/blaze-server/src/test/scala/org/http4s/server/blaze/ServerTestRoutes.scala
@@ -24,13 +24,13 @@ import org.http4s.Charset._
 import org.http4s.dsl.Http4sDsl
 import org.http4s.headers._
 import org.http4s.implicits._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 object ServerTestRoutes extends Http4sDsl[IO] {
   //TODO: bring back well-typed value once all headers are moved to new model
   val textPlain = `Content-Type`(MediaType.text.plain, `UTF-8`).toRaw
-  val connClose = Connection(CIString("close")).toRaw
-  val connKeep = Connection(CIString("keep-alive")).toRaw
+  val connClose = Connection(ci"close").toRaw
+  val connKeep = Connection(ci"keep-alive").toRaw
   val chunked = `Transfer-Encoding`(TransferCoding.chunked).toRaw
 
   def length(l: Long) = `Content-Length`.unsafeFromLong(l).toRaw
diff --git a/client/src/test/scala/org/http4s/client/middleware/FollowRedirectSuite.scala b/client/src/test/scala/org/http4s/client/middleware/FollowRedirectSuite.scala
index 0cfbec4475..b5909c85cb 100644
--- a/client/src/test/scala/org/http4s/client/middleware/FollowRedirectSuite.scala
+++ b/client/src/test/scala/org/http4s/client/middleware/FollowRedirectSuite.scala
@@ -26,7 +26,7 @@ import org.http4s.client.dsl.Http4sClientDsl
 import org.http4s.dsl.io._
 import org.http4s.syntax.all._
 import org.http4s.headers._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class FollowRedirectSuite extends Http4sSuite with Http4sClientDsl[IO] {
   private val loopCounter = new AtomicInteger(0)
@@ -75,7 +75,7 @@ class FollowRedirectSuite extends Http4sSuite with Http4sClientDsl[IO] {
     client
       .run(req)
       .use { case resp =>
-        resp.headers.get(CIString("X-Original-Content-Length")).map(_.head.value).pure[IO]
+        resp.headers.get(ci"X-Original-Content-Length").map(_.head.value).pure[IO]
       }
       .map(_.get)
       .assertEquals("0")
@@ -130,7 +130,7 @@ class FollowRedirectSuite extends Http4sSuite with Http4sClientDsl[IO] {
     client
       .run(req)
       .use { case resp =>
-        resp.headers.get(CIString("X-Original-Authorization")).map(_.head.value).pure[IO]
+        resp.headers.get(ci"X-Original-Authorization").map(_.head.value).pure[IO]
       }
       .assertEquals(Some(""))
   }
@@ -143,7 +143,7 @@ class FollowRedirectSuite extends Http4sSuite with Http4sClientDsl[IO] {
     client
       .run(req)
       .use { case resp =>
-        resp.headers.get(CIString("X-Original-Authorization")).map(_.head.value).pure[IO]
+        resp.headers.get(ci"X-Original-Authorization").map(_.head.value).pure[IO]
       }
       .assertEquals(Some("Bearer s3cr3t"))
   }
diff --git a/client/src/test/scala/org/http4s/client/oauth1/OAuthSuite.scala b/client/src/test/scala/org/http4s/client/oauth1/OAuthSuite.scala
index 0b9fd6c05a..174855bb2f 100644
--- a/client/src/test/scala/org/http4s/client/oauth1/OAuthSuite.scala
+++ b/client/src/test/scala/org/http4s/client/oauth1/OAuthSuite.scala
@@ -27,7 +27,7 @@ import org.http4s.client.oauth1.ProtocolParameter.{
   Timestamp,
   Version
 }
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class OAuthSuite extends Http4sSuite {
   // some params taken from http://oauth.net/core/1.0/#anchor30, others from
@@ -84,7 +84,7 @@ class OAuthSuite extends Http4sSuite {
     val auth =
       oauth1.genAuthHeader(Method.GET, uri, userParams, consumer, None, None, Some(token))
     val creds = auth.credentials
-    assert(creds.authScheme == CIString("OAuth"))
+    assert(creds.authScheme == ci"OAuth")
   }
 
   test("OAuth support should generate a Authorization header with config") {
@@ -105,7 +105,7 @@ class OAuthSuite extends Http4sSuite {
       )
       .map { auth =>
         val creds = auth.credentials
-        assert(creds.authScheme == CIString("OAuth"))
+        assert(creds.authScheme == ci"OAuth")
       }
   }
 
diff --git a/ember-client/src/test/scala/org/http4s/ember/client/internal/ClientHelpersSuite.scala b/ember-client/src/test/scala/org/http4s/ember/client/internal/ClientHelpersSuite.scala
index d68ef54df7..7555170f57 100644
--- a/ember-client/src/test/scala/org/http4s/ember/client/internal/ClientHelpersSuite.scala
+++ b/ember-client/src/test/scala/org/http4s/ember/client/internal/ClientHelpersSuite.scala
@@ -22,7 +22,7 @@ import cats.effect.concurrent._
 import org.http4s._
 import org.http4s.headers.{Connection, Date, `User-Agent`}
 import org.http4s.ember.client.EmberClientBuilder
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.typelevel.keypool.Reusable
 
 class ClientHelpersSuite extends Http4sSuite {
@@ -64,7 +64,7 @@ class ClientHelpersSuite extends Http4sSuite {
   test("Request Preprocessing should not add a connection header if already present") {
     ClientHelpers
       .preprocessRequest(
-        Request[IO](headers = Headers(Connection(NonEmptyList.of(CIString("close"))))),
+        Request[IO](headers = Headers(Connection(NonEmptyList.of(ci"close")))),
         None
       )
       .map { req =>
@@ -141,7 +141,7 @@ class ClientHelpersSuite extends Http4sSuite {
       reuse <- Ref[IO].of(Reusable.DontReuse: Reusable)
       _ <- ClientHelpers
         .postProcessResponse[IO](
-          Request[IO](headers = Headers(Connection(NonEmptyList.of(CIString("close"))))),
+          Request[IO](headers = Headers(Connection(NonEmptyList.of(ci"close")))),
           Response[IO](),
           IO.pure(Some(Array.emptyByteArray)),
           nextBytes,
@@ -160,7 +160,7 @@ class ClientHelpersSuite extends Http4sSuite {
       _ <- ClientHelpers
         .postProcessResponse[IO](
           Request[IO](),
-          Response[IO](headers = Headers(Connection(NonEmptyList.of(CIString("close"))))),
+          Response[IO](headers = Headers(Connection(NonEmptyList.of(ci"close")))),
           IO.pure(Some(Array.emptyByteArray)),
           nextBytes,
           reuse
diff --git a/ember-core/src/test/scala/org/http4s/ember/core/ParserSuite.scala b/ember-core/src/test/scala/org/http4s/ember/core/ParserSuite.scala
index 567de2f210..c909a4f374 100644
--- a/ember-core/src/test/scala/org/http4s/ember/core/ParserSuite.scala
+++ b/ember-core/src/test/scala/org/http4s/ember/core/ParserSuite.scala
@@ -28,7 +28,7 @@ import cats.syntax.all._
 import fs2.Chunk.ByteVectorChunk
 import org.http4s.ember.core.Parser.Request.ReqPrelude.ParsePreludeComplete
 import org.http4s.headers.Expires
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class ParsingSpec extends Http4sSuite {
   object Helpers {
@@ -374,8 +374,8 @@ class ParsingSpec extends Http4sSuite {
     assertEquals(
       headers.headers,
       List(
-        Header.Raw(CIString("Content-Type"), "text/plain; charset=UTF-8"),
-        Header.Raw(CIString("Content-Length"), "11"))
+        Header.Raw(ci"Content-Type", "text/plain; charset=UTF-8"),
+        Header.Raw(ci"Content-Length", "11"))
     )
     assert(
       rest.isEmpty
@@ -410,9 +410,9 @@ class ParsingSpec extends Http4sSuite {
 
     result.assertEquals(
       List(
-        Header.Raw(CIString("Content-Type"), "text/plain"),
-        Header.Raw(CIString("Transfer-Encoding"), "chunked"),
-        Header.Raw(CIString("Trailer"), "Expires")
+        Header.Raw(ci"Content-Type", "text/plain"),
+        Header.Raw(ci"Transfer-Encoding", "chunked"),
+        Header.Raw(ci"Trailer", "Expires")
       ))
   }
 
diff --git a/server/src/test/scala/org/http4s/server/middleware/CORSSuite.scala b/server/src/test/scala/org/http4s/server/middleware/CORSSuite.scala
index 15a8ca0175..a351894d2a 100644
--- a/server/src/test/scala/org/http4s/server/middleware/CORSSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/CORSSuite.scala
@@ -23,7 +23,7 @@ import cats.implicits._
 import org.http4s.dsl.io._
 import org.http4s.syntax.all._
 import org.http4s.Http4sSuite
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class CORSSuite extends Http4sSuite {
   val routes = HttpRoutes.of[IO] {
@@ -44,7 +44,7 @@ class CORSSuite extends Http4sSuite {
     )
   )
 
-  def headerCheck(h: Header.Raw): Boolean = h.name == CIString("Access-Control-Max-Age")
+  def headerCheck(h: Header.Raw): Boolean = h.name == ci"Access-Control-Max-Age"
 
   final def matchHeader(hs: Headers, name: CIString, expected: String): Boolean =
     hs.get(name).fold(false)(_.exists(_.value === expected))
@@ -63,12 +63,11 @@ class CORSSuite extends Http4sSuite {
     val req = buildRequest("/foo")
     cors1
       .orNotFound(req)
-      .map(resp => matchHeader(resp.headers, CIString("Access-Control-Allow-Credentials"), "true"))
+      .map(resp => matchHeader(resp.headers, ci"Access-Control-Allow-Credentials", "true"))
       .assert *>
       cors2
         .orNotFound(req)
-        .map(resp =>
-          matchHeader(resp.headers, CIString("Access-Control-Allow-Credentials"), "false"))
+        .map(resp => matchHeader(resp.headers, ci"Access-Control-Allow-Credentials", "false"))
         .assert
   }
 
@@ -79,7 +78,7 @@ class CORSSuite extends Http4sSuite {
       .map { resp =>
         matchHeader(
           resp.headers,
-          CIString("Access-Control-Allow-Headers"),
+          ci"Access-Control-Allow-Headers",
           "User-Agent, Keep-Alive, Content-Type")
       }
       .assert
@@ -90,7 +89,7 @@ class CORSSuite extends Http4sSuite {
     cors2
       .orNotFound(req)
       .map { resp =>
-        matchHeader(resp.headers, CIString("Access-Control-Expose-Headers"), "x-header")
+        matchHeader(resp.headers, ci"Access-Control-Expose-Headers", "x-header")
       }
       .assert
   }
@@ -102,7 +101,7 @@ class CORSSuite extends Http4sSuite {
       .map(resp =>
         resp.status.isSuccess && matchHeader(
           resp.headers,
-          CIString("Access-Control-Allow-Credentials"),
+          ci"Access-Control-Allow-Credentials",
           "true"))
       .assert *>
       cors2
@@ -110,7 +109,7 @@ class CORSSuite extends Http4sSuite {
         .map(resp =>
           resp.status.isSuccess && matchHeader(
             resp.headers,
-            CIString("Access-Control-Allow-Credentials"),
+            ci"Access-Control-Allow-Credentials",
             "false"))
         .assert
   }
@@ -148,7 +147,7 @@ class CORSSuite extends Http4sSuite {
     service
       .orNotFound(req)
       .map { resp =>
-        matchHeader(resp.headers, CIString("Vary"), "Origin,Accept")
+        matchHeader(resp.headers, ci"Vary", "Origin,Accept")
       }
       .assert
   }
@@ -159,7 +158,7 @@ class CORSSuite extends Http4sSuite {
 
     cors
       .orNotFound(req)
-      .map(resp => matchHeader(resp.headers, CIString("Access-Control-Allow-Credentials"), "true"))
+      .map(resp => matchHeader(resp.headers, ci"Access-Control-Allow-Credentials", "true"))
       .assert
   }
 
@@ -169,7 +168,7 @@ class CORSSuite extends Http4sSuite {
 
     cors
       .run(req)
-      .map(resp => matchHeader(resp.headers, CIString("Access-Control-Allow-Credentials"), "true"))
+      .map(resp => matchHeader(resp.headers, ci"Access-Control-Allow-Credentials", "true"))
       .assert
   }
 }
diff --git a/server/src/test/scala/org/http4s/server/middleware/CSRFSuite.scala b/server/src/test/scala/org/http4s/server/middleware/CSRFSuite.scala
index a36f2ff506..c48112388a 100644
--- a/server/src/test/scala/org/http4s/server/middleware/CSRFSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/CSRFSuite.scala
@@ -26,7 +26,7 @@ import org.http4s.syntax.all._
 import org.http4s.dsl.io._
 import org.http4s.headers.{Location, Referer}
 import org.http4s.server.middleware.CSRF.unlift
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class CSRFSuite extends Http4sSuite {
 
@@ -48,7 +48,7 @@ class CSRFSuite extends Http4sSuite {
   }
 
   private val cookieName = "csrf-token"
-  private val headerName = CIString("X-Csrf-Token")
+  private val headerName = ci"X-Csrf-Token"
 
   private val defaultOriginCheck: Request[IO] => Boolean =
     CSRF.defaultOriginCheck[IO](_, "localhost", Uri.Scheme.http, None)
diff --git a/server/src/test/scala/org/http4s/server/middleware/DefaultHeadSuite.scala b/server/src/test/scala/org/http4s/server/middleware/DefaultHeadSuite.scala
index 3e8fc60459..12b36b9abd 100644
--- a/server/src/test/scala/org/http4s/server/middleware/DefaultHeadSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/DefaultHeadSuite.scala
@@ -24,7 +24,7 @@ import cats.implicits._
 import fs2.Stream
 import org.http4s.dsl.io._
 import org.http4s.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class DefaultHeadSuite extends Http4sSuite {
   val httpRoutes = HttpRoutes.of[IO] {
@@ -42,7 +42,7 @@ class DefaultHeadSuite extends Http4sSuite {
   test("honor HEAD routes") {
     val req = Request[IO](Method.HEAD, uri = uri"/special")
     app(req)
-      .map(_.headers.get(CIString("X-Handled-By")).map(_.head.value))
+      .map(_.headers.get(ci"X-Handled-By").map(_.head.value))
       .assertEquals(Some("HEAD"))
   }
 
diff --git a/server/src/test/scala/org/http4s/server/middleware/HeaderEchoSuite.scala b/server/src/test/scala/org/http4s/server/middleware/HeaderEchoSuite.scala
index 192c3b3220..c46d46a8a3 100644
--- a/server/src/test/scala/org/http4s/server/middleware/HeaderEchoSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/HeaderEchoSuite.scala
@@ -22,7 +22,7 @@ import cats.effect.IO
 import org.http4s._
 import org.http4s.dsl.io._
 import org.http4s.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class HeaderEchoSuite extends Http4sSuite {
   val testService = HttpRoutes.of[IO] { case GET -> Root / "request" =>
@@ -47,7 +47,7 @@ class HeaderEchoSuite extends Http4sSuite {
 
   test("echo a single header in addition to the defaults") {
     testSingleHeader(
-      HeaderEcho(_ === CIString("someheaderkey"))(testService).orNotFound
+      HeaderEcho(_ === ci"someheaderkey")(testService).orNotFound
     ).assert
   }
 
@@ -58,7 +58,7 @@ class HeaderEchoSuite extends Http4sSuite {
         headers =
           Headers("someheaderkey" -> "someheadervalue", "anotherheaderkey" -> "anotherheadervalue"))
     val headersToEcho =
-      List(CIString("someheaderkey"), CIString("anotherheaderkey"))
+      List(ci"someheaderkey", ci"anotherheaderkey")
     val testee = HeaderEcho(headersToEcho.contains(_))(testService)
 
     testee
@@ -79,7 +79,7 @@ class HeaderEchoSuite extends Http4sSuite {
         uri = uri"/request",
         headers = Headers("someunmatchedheader" -> "someunmatchedvalue"))
 
-    val testee = HeaderEcho(_ == CIString("someheaderkey"))(testService)
+    val testee = HeaderEcho(_ == ci"someheaderkey")(testService)
     testee
       .orNotFound(requestMatchingNotPresentHeaderKey)
       .map { r =>
@@ -94,12 +94,11 @@ class HeaderEchoSuite extends Http4sSuite {
   test("be created via the httpRoutes constructor") {
     testSingleHeader(
       HeaderEcho
-        .httpRoutes(_ == CIString("someheaderkey"))(testService)
+        .httpRoutes(_ == ci"someheaderkey")(testService)
         .orNotFound).assert
   }
 
   test("be created via the httpApps constructor") {
-    testSingleHeader(
-      HeaderEcho.httpApp(_ == CIString("someheaderkey"))(testService.orNotFound)).assert
+    testSingleHeader(HeaderEcho.httpApp(_ == ci"someheaderkey")(testService.orNotFound)).assert
   }
 }
diff --git a/server/src/test/scala/org/http4s/server/middleware/RequestIdSuite.scala b/server/src/test/scala/org/http4s/server/middleware/RequestIdSuite.scala
index 82e00f3112..c351a96ebd 100644
--- a/server/src/test/scala/org/http4s/server/middleware/RequestIdSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/RequestIdSuite.scala
@@ -21,11 +21,11 @@ import cats.implicits._
 import org.http4s._
 import org.http4s.dsl.io._
 import org.http4s.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import java.util.UUID
 
 class RequestIdSuite extends Http4sSuite {
-  private def testService(headerKey: CIString = CIString("X-Request-ID")) =
+  private def testService(headerKey: CIString = ci"X-Request-ID") =
     HttpRoutes.of[IO] {
       case req @ GET -> Root / "request" =>
         Ok(show"request-id: ${req.headers.get(headerKey).fold("None")(_.head.value)}")
@@ -37,9 +37,7 @@ class RequestIdSuite extends Http4sSuite {
   private def requestIdFromBody(resp: Response[IO]) =
     resp.as[String].map(_.stripPrefix("request-id: "))
 
-  private def requestIdFromHeaders(
-      resp: Response[IO],
-      headerKey: CIString = CIString("X-Request-ID")) =
+  private def requestIdFromHeaders(resp: Response[IO], headerKey: CIString = ci"X-Request-ID") =
     resp.headers.get(headerKey).fold("None")(_.head.value)
 
   test("propagate X-Request-ID header from request to response") {
@@ -82,10 +80,10 @@ class RequestIdSuite extends Http4sSuite {
       uri = uri"/request",
       headers = Headers("X-Request-ID" -> "123", "X-Correlation-ID" -> "abc"))
     RequestId
-      .httpRoutes(CIString("X-Correlation-ID"))(testService(CIString("X-Correlation-ID")))
+      .httpRoutes(ci"X-Correlation-ID")(testService(ci"X-Correlation-ID"))
       .orNotFound(req)
       .flatMap { resp =>
-        requestIdFromBody(resp).map(_ -> requestIdFromHeaders(resp, CIString("X-Correlation-ID")))
+        requestIdFromBody(resp).map(_ -> requestIdFromHeaders(resp, ci"X-Correlation-ID"))
       }
       .map { case (reqReqId, respReqId) =>
         reqReqId === "abc" && respReqId === "abc"
@@ -97,10 +95,10 @@ class RequestIdSuite extends Http4sSuite {
     val req =
       Request[IO](uri = uri"/request", headers = Headers("X-Request-ID" -> "123"))
     RequestId
-      .httpRoutes(CIString("X-Correlation-ID"))(testService(CIString("X-Correlation-ID")))
+      .httpRoutes(ci"X-Correlation-ID")(testService(ci"X-Correlation-ID"))
       .orNotFound(req)
       .flatMap { resp =>
-        requestIdFromBody(resp).map(_ -> requestIdFromHeaders(resp, CIString("X-Correlation-ID")))
+        requestIdFromBody(resp).map(_ -> requestIdFromHeaders(resp, ci"X-Correlation-ID"))
       }
       .map { case (reqReqId, respReqId) =>
         reqReqId === respReqId && Either.catchNonFatal(UUID.fromString(respReqId)).isRight
diff --git a/server/src/test/scala/org/http4s/server/middleware/ResponseTimingSuite.scala b/server/src/test/scala/org/http4s/server/middleware/ResponseTimingSuite.scala
index 03e7492982..c4bf6d0c4f 100644
--- a/server/src/test/scala/org/http4s/server/middleware/ResponseTimingSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/ResponseTimingSuite.scala
@@ -21,7 +21,7 @@ import cats.effect._
 import cats.effect.concurrent.Ref
 import org.http4s._
 import org.http4s.dsl.io._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import org.http4s.syntax.all._
 
 import scala.concurrent.duration.TimeUnit
@@ -42,7 +42,7 @@ class ResponseTimingSuite extends Http4sSuite {
     val res = app(req)
 
     val header = res
-      .map(_.headers.headers.find(_.name == CIString("X-Response-Time")))
+      .map(_.headers.headers.find(_.name == ci"X-Response-Time"))
     header.map(_.map(_.value.toInt) === Some(artificialDelay)).assert
   }
 }
diff --git a/server/src/test/scala/org/http4s/server/middleware/authentication/AuthenticationSuite.scala b/server/src/test/scala/org/http4s/server/middleware/authentication/AuthenticationSuite.scala
index 1b930d6ee2..eee73548c6 100644
--- a/server/src/test/scala/org/http4s/server/middleware/authentication/AuthenticationSuite.scala
+++ b/server/src/test/scala/org/http4s/server/middleware/authentication/AuthenticationSuite.scala
@@ -23,7 +23,7 @@ import org.http4s._
 import org.http4s.dsl.io._
 import org.http4s.headers._
 import org.http4s.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.duration._
 
 class AuthenticationSuite extends Http4sSuite {
@@ -182,7 +182,7 @@ class AuthenticationSuite extends Http4sSuite {
         "response" -> response,
         "method" -> method
       )
-      val header = Authorization(Credentials.AuthParams(CIString("Digest"), params))
+      val header = Authorization(Credentials.AuthParams(ci"Digest", params))
 
       val req2 = Request[IO](uri = uri"/", headers = Headers(header))
       digest(req2).flatMap { res2 =>
@@ -289,7 +289,7 @@ class AuthenticationSuite extends Http4sSuite {
       val result = (0 to params.size).map { i =>
         val invalidParams = params.toList.take(i) ++ params.toList.drop(i + 1)
         val header = Authorization(
-          Credentials.AuthParams(CIString("Digest"), invalidParams.head, invalidParams.tail: _*))
+          Credentials.AuthParams(ci"Digest", invalidParams.head, invalidParams.tail: _*))
         val req = Request[IO](uri = uri"/", headers = Headers(header))
         digestAuthService.orNotFound(req).map(_.status)
       }
diff --git a/testing/src/test/scala/org/http4s/testing/ErrorReporting.scala b/testing/src/test/scala/org/http4s/testing/ErrorReporting.scala
index 553a0882b2..2db79eb721 100644
--- a/testing/src/test/scala/org/http4s/testing/ErrorReporting.scala
+++ b/testing/src/test/scala/org/http4s/testing/ErrorReporting.scala
@@ -14,7 +14,7 @@ import java.io.{ByteArrayOutputStream, PrintStream}
 import cats.syntax.all._
 import cats.Monad
 import org.http4s.headers.{Connection, `Content-Length`}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.util.control.NonFatal
 import java.net.URL
 import java.security.{
@@ -77,7 +77,7 @@ object ErrorReporting {
             Status.InternalServerError,
             req.httpVersion,
             Headers(
-              Connection(CIString("close")),
+              Connection(ci"close"),
               `Content-Length`.zero
             )))
     }
diff --git a/tests/src/test/scala/org/http4s/HeadersSpec.scala b/tests/src/test/scala/org/http4s/HeadersSpec.scala
index 7a59905788..fdb00981c3 100644
--- a/tests/src/test/scala/org/http4s/HeadersSpec.scala
+++ b/tests/src/test/scala/org/http4s/HeadersSpec.scala
@@ -21,11 +21,11 @@ import cats.kernel.laws.discipline.{MonoidTests, OrderTests}
 import org.http4s.headers._
 import org.http4s.laws.discipline.ArbitraryInstances._
 import org.http4s.syntax.header._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class HeadersSpec extends Http4sSuite {
   val clength = `Content-Length`.unsafeFromLong(10)
-  val raw = Header.Raw(CIString("raw-header"), "Raw value")
+  val raw = Header.Raw(ci"raw-header", "Raw value")
 
   val base = Headers(clength, raw)
 
@@ -35,7 +35,7 @@ class HeadersSpec extends Http4sSuite {
 
   test("Headers should Find an existing header and return its parsed form") {
     assertEquals(base.get[`Content-Length`], Some(clength))
-    assertEquals(base.get(CIString("raw-header")), Some(NonEmptyList.of(raw)))
+    assertEquals(base.get(ci"raw-header"), Some(NonEmptyList.of(raw)))
   }
 
   test("Headers should Replaces headers") {
@@ -46,14 +46,14 @@ class HeadersSpec extends Http4sSuite {
   test("Headers should also find headers created raw") {
     val headers: Headers = Headers(
       Cookie(RequestCookie("foo", "bar")),
-      Header.Raw(CIString("Cookie"), RequestCookie("baz", "quux").toString)
+      Header.Raw(ci"Cookie", RequestCookie("baz", "quux").toString)
     )
     assertEquals(headers.get[Cookie].map(_.values.length), Some(2))
   }
 
   test(
     "Headers should Remove duplicate headers which are not of type Recurring on concatenation (++)") {
-    val clength = Header.Raw(CIString("Content-Length"), "4")
+    val clength = Header.Raw(ci"Content-Length", "4")
     val hs = Headers(clength) ++ Headers(clength)
     assertEquals(hs.headers.length, 1)
     assertEquals(hs.headers.head, clength)
@@ -79,7 +79,7 @@ class HeadersSpec extends Http4sSuite {
   }
 
   test("Headers should Preserve original headers when processing") {
-    val rawAuth = Header.Raw(CIString("Authorization"), "test this")
+    val rawAuth = Header.Raw(ci"Authorization", "test this")
 
     // Mapping to strings because Header equality is based on the *parsed* version
     assert((Headers(rawAuth) ++ base).headers.map(_.toString).contains(rawAuth.toString))
diff --git a/tests/src/test/scala/org/http4s/ResponderSpec.scala b/tests/src/test/scala/org/http4s/ResponderSpec.scala
index 84d6c6dc76..45fd1d799e 100644
--- a/tests/src/test/scala/org/http4s/ResponderSpec.scala
+++ b/tests/src/test/scala/org/http4s/ResponderSpec.scala
@@ -19,7 +19,7 @@ package org.http4s
 import cats.effect.IO
 import org.http4s.Charset._
 import org.http4s.headers._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class ResponderSpec extends Http4sSuite {
   val resp = Response[IO](Status.Ok)
@@ -39,23 +39,23 @@ class ResponderSpec extends Http4sSuite {
       .withContentType(`Content-Type`(MediaType.text.plain))
       .putHeaders(Host("foo"))
 
-    assertEquals(c1.headers.headers.count(_.name == CIString("Content-Type")), 1)
-    assertEquals(c1.headers.headers.count(_.name == CIString("Content-Length")), 1)
+    assertEquals(c1.headers.headers.count(_.name == ci"Content-Type"), 1)
+    assertEquals(c1.headers.headers.count(_.name == ci"Content-Length"), 1)
     assertEquals(c1.headers.headers.length, 3)
     assertEquals(c1.contentType, Some(`Content-Type`(MediaType.text.plain)))
 
     val c2 = c1.withContentType(`Content-Type`(MediaType.application.json, `UTF-8`))
 
     assertEquals(c2.contentType, Some(`Content-Type`(MediaType.application.json, `UTF-8`)))
-    assertEquals(c2.headers.headers.count(_.name == CIString("Content-Type")), 1)
-    assertEquals(c2.headers.headers.count(_.name == CIString("Content-Length")), 1)
-    assertEquals(c2.headers.headers.count(_.name == CIString("Host")), 1)
+    assertEquals(c2.headers.headers.count(_.name == ci"Content-Type"), 1)
+    assertEquals(c2.headers.headers.count(_.name == ci"Content-Length"), 1)
+    assertEquals(c2.headers.headers.count(_.name == ci"Host"), 1)
   }
 
   test("Responder should Remove headers") {
-    val wHeader = resp.putHeaders(Connection(CIString("close")))
+    val wHeader = resp.putHeaders(Connection(ci"close"))
     val maybeHeaderT = wHeader.headers.get[Connection]
-    assertEquals(maybeHeaderT, Some(Connection(CIString("close"))))
+    assertEquals(maybeHeaderT, Some(Connection(ci"close")))
 
     val newHeaders = wHeader.removeHeader[Connection]
     assert(newHeaders.headers.get[Connection].isEmpty)
@@ -63,10 +63,7 @@ class ResponderSpec extends Http4sSuite {
 
   test("Responder should Replace all headers") {
     val wHeader =
-      resp.putHeaders(
-        Connection(CIString("close")),
-        `Content-Length`.unsafeFromLong(10),
-        Host("foo"))
+      resp.putHeaders(Connection(ci"close"), `Content-Length`.unsafeFromLong(10), Host("foo"))
     assertEquals(wHeader.headers.headers.length, 3)
 
     val newHeaders = wHeader.withHeaders(Date(HttpDate.Epoch))
@@ -76,10 +73,7 @@ class ResponderSpec extends Http4sSuite {
 
   test("Responder should Replace all headers II") {
     val wHeader =
-      resp.putHeaders(
-        Connection(CIString("close")),
-        `Content-Length`.unsafeFromLong(10),
-        Host("foo"))
+      resp.putHeaders(Connection(ci"close"), `Content-Length`.unsafeFromLong(10), Host("foo"))
     assertEquals(wHeader.headers.headers.length, 3)
 
     val newHeaders = wHeader.withHeaders(Headers(Date(HttpDate.Epoch)))
@@ -89,13 +83,10 @@ class ResponderSpec extends Http4sSuite {
 
   test("Responder should Filter headers") {
     val wHeader =
-      resp.putHeaders(
-        Connection(CIString("close")),
-        `Content-Length`.unsafeFromLong(10),
-        Host("foo"))
+      resp.putHeaders(Connection(ci"close"), `Content-Length`.unsafeFromLong(10), Host("foo"))
     assertEquals(wHeader.headers.headers.length, 3)
 
-    val newHeaders = wHeader.filterHeaders(_.name != CIString("Connection"))
+    val newHeaders = wHeader.filterHeaders(_.name != ci"Connection")
     assertEquals(newHeaders.headers.headers.length, 2)
     assert(newHeaders.headers.get[Connection].isEmpty)
   }
diff --git a/tests/src/test/scala/org/http4s/UriSpec.scala b/tests/src/test/scala/org/http4s/UriSpec.scala
index 33985bfe6c..a6ff6711e5 100644
--- a/tests/src/test/scala/org/http4s/UriSpec.scala
+++ b/tests/src/test/scala/org/http4s/UriSpec.scala
@@ -20,7 +20,7 @@ import org.http4s.Uri._
 import org.http4s.syntax.all._
 import org.scalacheck.Gen
 import org.scalacheck.Prop._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 // TODO: this needs some more filling out
 class UriSpec extends Http4sSuite {
@@ -235,7 +235,7 @@ class UriSpec extends Http4sSuite {
       assertEquals(
         Uri(
           Some(Scheme.http),
-          Some(Authority(host = RegName(CIString("www.foo.com")))),
+          Some(Authority(host = RegName(ci"www.foo.com"))),
           Uri.Path.unsafeFromString("/foo"),
           Query.fromPairs("bar" -> "baz")).toString,
         "http://www.foo.com/foo?bar=baz"
@@ -246,13 +246,13 @@ class UriSpec extends Http4sSuite {
       assertEquals(
         Uri(
           Some(Scheme.http),
-          Some(Authority(host = RegName(CIString("www.foo.com")), port = Some(80)))).toString,
+          Some(Authority(host = RegName(ci"www.foo.com"), port = Some(80)))).toString,
         "http://www.foo.com:80")
     }
 
     test("Uri toString should render URL without port") {
       assertEquals(
-        Uri(Some(Scheme.http), Some(Authority(host = RegName(CIString("www.foo.com"))))).toString,
+        Uri(Some(Scheme.http), Some(Authority(host = RegName(ci"www.foo.com")))).toString,
         "http://www.foo.com")
     }
 
diff --git a/tests/src/test/scala/org/http4s/UriTemplateSpec.scala b/tests/src/test/scala/org/http4s/UriTemplateSpec.scala
index 32f30628f1..f3a53fa17e 100644
--- a/tests/src/test/scala/org/http4s/UriTemplateSpec.scala
+++ b/tests/src/test/scala/org/http4s/UriTemplateSpec.scala
@@ -19,7 +19,7 @@ package org.http4s
 import com.comcast.ip4s._
 import org.http4s.Uri.{Authority, RegName, Scheme, UserInfo}
 import org.http4s.UriTemplate._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class UriTemplateSpec extends Http4sSuite {
   {
@@ -238,7 +238,7 @@ class UriTemplateSpec extends Http4sSuite {
     }
     test("UriTemplate should render http://www.foo.com:80") {
       val scheme = Some(Scheme.http)
-      val host = RegName(CIString("www.foo.com"))
+      val host = RegName(ci"www.foo.com")
       val authority = Some(Authority(host = host, port = Some(80)))
       val path = Nil
       val query = Nil
@@ -246,9 +246,7 @@ class UriTemplateSpec extends Http4sSuite {
     }
     test("UriTemplate should render http://www.foo.com") {
       assertEquals(
-        UriTemplate(
-          Some(Scheme.http),
-          Some(Authority(host = RegName(CIString("www.foo.com"))))).toString,
+        UriTemplate(Some(Scheme.http), Some(Authority(host = RegName(ci"www.foo.com")))).toString,
         "http://www.foo.com")
     }
     test("UriTemplate should render http://192.168.1.1") {
@@ -517,7 +515,7 @@ class UriTemplateSpec extends Http4sSuite {
     }
     test("UriTemplate.toUriIfPossible should convert http://www.foo.com:80 to Uri") {
       val scheme = Some(Scheme.http)
-      val host = RegName(CIString("www.foo.com"))
+      val host = RegName(ci"www.foo.com")
       val authority = Some(Authority(host = host, port = Some(80)))
       val path = Nil
       assertEquals(
@@ -526,12 +524,12 @@ class UriTemplateSpec extends Http4sSuite {
     }
     test("UriTemplate.toUriIfPossible should convert http://www.foo.com to Uri") {
       val scheme = Some(Scheme.http)
-      val host = RegName(CIString("www.foo.com"))
+      val host = RegName(ci"www.foo.com")
       val authority = Some(Authority(host = host))
       assertEquals(
         UriTemplate(
           Some(Scheme.http),
-          Some(Authority(host = RegName(CIString("www.foo.com"))))).toUriIfPossible.get,
+          Some(Authority(host = RegName(ci"www.foo.com")))).toUriIfPossible.get,
         Uri(scheme, authority))
     }
     test("UriTemplate.toUriIfPossible should convert http://192.168.1.1 to Uri") {
diff --git a/tests/src/test/scala/org/http4s/parser/CacheControlSpec.scala b/tests/src/test/scala/org/http4s/parser/CacheControlSpec.scala
index 6b174b4382..f3fd410805 100644
--- a/tests/src/test/scala/org/http4s/parser/CacheControlSpec.scala
+++ b/tests/src/test/scala/org/http4s/parser/CacheControlSpec.scala
@@ -19,7 +19,7 @@ package parser
 
 import org.http4s.headers.`Cache-Control`
 import org.http4s.CacheDirective._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 import scala.concurrent.duration._
 
 class CacheControlSpec extends Http4sSuite with HeaderParserHelper[`Cache-Control`] {
@@ -41,11 +41,7 @@ class CacheControlSpec extends Http4sSuite with HeaderParserHelper[`Cache-Contro
     `stale-while-revalidate`(4.seconds))
 
   val strdirectives =
-    List(
-      `private`(CIString("Foo") :: Nil),
-      `private`(Nil),
-      `no-cache`(CIString("Foo") :: Nil),
-      `no-cache`())
+    List(`private`(ci"Foo" :: Nil), `private`(Nil), `no-cache`(ci"Foo" :: Nil), `no-cache`())
 
   val others = List(
     `max-stale`(None),
diff --git a/tests/src/test/scala/org/http4s/parser/ForwardedHeaderSpec.scala b/tests/src/test/scala/org/http4s/parser/ForwardedHeaderSpec.scala
index fed77a6008..8f512e5fb0 100644
--- a/tests/src/test/scala/org/http4s/parser/ForwardedHeaderSpec.scala
+++ b/tests/src/test/scala/org/http4s/parser/ForwardedHeaderSpec.scala
@@ -22,7 +22,7 @@ import cats.syntax.either._
 import org.http4s.headers.Forwarded
 import org.http4s.internal.bug
 import org.http4s.syntax.literals._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class ForwardedHeaderSpec extends Http4sSuite {
   import Forwarded.Element
@@ -158,7 +158,7 @@ object ForwardedHeaderSpec {
       uri.host match {
         case Some(ipv4: Uri.Ipv4Address) => Node.Name.Ipv4(ipv4.address)
         case Some(ipv6: Uri.Ipv6Address) => Node.Name.Ipv6(ipv6.address)
-        case Some(Uri.RegName(UnCIString("unknown"))) => Node.Name.Unknown
+        case Some(Uri.RegName(ci"unknown")) => Node.Name.Unknown
         case Some(Uri.RegName(UnCIString(ObfuscatedRe(obfuscatedName)))) =>
           Node.Obfuscated(obfuscatedName)
         case Some(other) => throw bug(s"not allowed as host for node: $other")
diff --git a/tests/src/test/scala/org/http4s/parser/SimpleHeadersSpec.scala b/tests/src/test/scala/org/http4s/parser/SimpleHeadersSpec.scala
index a81711471d..37ec3b64cd 100644
--- a/tests/src/test/scala/org/http4s/parser/SimpleHeadersSpec.scala
+++ b/tests/src/test/scala/org/http4s/parser/SimpleHeadersSpec.scala
@@ -22,7 +22,7 @@ import com.comcast.ip4s._
 import org.http4s.headers._
 import org.http4s.syntax.header._
 import org.http4s.EntityTag.{Strong, Weak}
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class SimpleHeadersSpec extends Http4sSuite {
   test("parse Accept-Patch") {
@@ -45,10 +45,10 @@ class SimpleHeadersSpec extends Http4sSuite {
 
     val header = `Access-Control-Allow-Headers`(
       NonEmptyList.of(
-        CIString("Accept"),
-        CIString("Expires"),
-        CIString("X-Custom-Header"),
-        CIString("*")
+        ci"Accept",
+        ci"Expires",
+        ci"X-Custom-Header",
+        ci"*"
       )
     )
 
@@ -61,10 +61,10 @@ class SimpleHeadersSpec extends Http4sSuite {
   test("parse Access-Control-Expose-Headers") {
     val header = `Access-Control-Expose-Headers`(
       NonEmptyList.of(
-        CIString("Content-Length"),
-        CIString("Authorization"),
-        CIString("X-Custom-Header"),
-        CIString("*")
+        ci"Content-Length",
+        ci"Authorization",
+        ci"X-Custom-Header",
+        ci"*"
       )
     )
     assertEquals(`Access-Control-Expose-Headers`.parse(header.toRaw.value), Right(header))
@@ -74,7 +74,7 @@ class SimpleHeadersSpec extends Http4sSuite {
   }
 
   test("parse Connection") {
-    val header = Connection(CIString("closed"))
+    val header = Connection(ci"closed")
     assertEquals(Connection.parse(header.toRaw.value), Right(header))
   }
 
diff --git a/tests/src/test/scala/org/http4s/parser/UriParserSuite.scala b/tests/src/test/scala/org/http4s/parser/UriParserSuite.scala
index 52aeaec574..ea770d3c01 100644
--- a/tests/src/test/scala/org/http4s/parser/UriParserSuite.scala
+++ b/tests/src/test/scala/org/http4s/parser/UriParserSuite.scala
@@ -20,7 +20,7 @@ import org.http4s._
 import org.http4s.Uri._
 import org.http4s.Uri.Scheme.https
 import org.http4s.syntax.all._
-import org.typelevel.ci.CIString
+import org.typelevel.ci._
 
 class UriParserSuite extends Http4sSuite {
   {
@@ -66,19 +66,13 @@ class UriParserSuite extends Http4sSuite {
       val portExamples: Seq[(String, Uri)] = Seq(
         (
           "http://foo.com",
-          Uri(
-            Some(Scheme.http),
-            Some(Authority(host = RegName(CIString("foo.com")), port = None)))),
+          Uri(Some(Scheme.http), Some(Authority(host = RegName(ci"foo.com"), port = None)))),
         (
           "http://foo.com:",
-          Uri(
-            Some(Scheme.http),
-            Some(Authority(host = RegName(CIString("foo.com")), port = None)))),
+          Uri(Some(Scheme.http), Some(Authority(host = RegName(ci"foo.com"), port = None)))),
         (
           "http://foo.com:80",
-          Uri(
-            Some(Scheme.http),
-            Some(Authority(host = RegName(CIString("foo.com")), port = Some(80)))))
+          Uri(Some(Scheme.http), Some(Authority(host = RegName(ci"foo.com"), port = Some(80)))))
       )
 
       check(portExamples)
@@ -88,12 +82,12 @@ class UriParserSuite extends Http4sSuite {
       val absoluteUris: Seq[(String, Uri)] = Seq(
         (
           "http://www.foo.com",
-          Uri(Some(Scheme.http), Some(Authority(host = RegName(CIString("www.foo.com")))))),
+          Uri(Some(Scheme.http), Some(Authority(host = RegName(ci"www.foo.com"))))),
         (
           "http://www.foo.com/foo?bar=baz",
           Uri(
             Some(Scheme.http),
-            Some(Authority(host = RegName(CIString("www.foo.com")))),
+            Some(Authority(host = RegName(ci"www.foo.com"))),
             path"/foo",
             Query.fromPairs("bar" -> "baz"))),
         ("http://192.168.1.1", Uri(Some(Scheme.http), Some(Authority(host = ipv4"192.168.1.1")))),
@@ -167,12 +161,12 @@ class UriParserSuite extends Http4sSuite {
       val absoluteUris: Seq[(String, Uri)] = Seq(
         (
           "http://www.foo.com",
-          Uri(Some(Scheme.http), Some(Authority(host = RegName(CIString("www.foo.com")))))),
+          Uri(Some(Scheme.http), Some(Authority(host = RegName(ci"www.foo.com"))))),
         (
           "http://www.foo.com/foo?bar=baz",
           Uri(
             Some(Scheme.http),
-            Some(Authority(host = RegName(CIString("www.foo.com")))),
+            Some(Authority(host = RegName(ci"www.foo.com"))),
             path"/foo",
             Query.fromPairs("bar" -> "baz"))),
         ("http://192.168.1.1", Uri(Some(Scheme.http), Some(Authority(host = ipv4"192.168.1.1")))),
@@ -248,7 +242,7 @@ class UriParserSuite extends Http4sSuite {
         uri"https://http4s.org",
         Uri(
           scheme = Option(https),
-          authority = Option(Uri.Authority(host = RegName(CIString("http4s.org"))))))
+          authority = Option(Uri.Authority(host = RegName(ci"http4s.org")))))
     }
 
     test("String interpolator should reject invalid URIs") {