I would like to make a suggestion. Since simplifyType is private (pending to move to a companion object), maybe you can put None instead an empty string and ditch the method simplifyParams, since the match could be

val parts = for ((name, tpe) <- simplifyParams) yield tpe match {
      case None => name
      case _  => s"$name: $tpe"
    }

Note: didn't tested the code, it just an idea