diff --git a/app/models/CerebroRequest.scala b/app/models/CerebroRequest.scala
index d710823d6456fe601d4441ca239a6533e0c95d26..829cc2207b0292b5f2a379d98a5f5177effa48a3 100644
--- a/app/models/CerebroRequest.scala
+++ b/app/models/CerebroRequest.scala
@@ -4,7 +4,7 @@ import controllers.auth.AuthRequest
 import exceptions.{MissingRequiredParamException, MissingTargetHostException}
 import play.api.libs.json.{JsArray, JsObject, JsValue}
 
-class CerebroRequest(val target: ElasticServer, body: JsValue, val user: Option[User]) {
+case class CerebroRequest(val target: ElasticServer, body: JsValue, val user: Option[User]) {
 
   def get(name: String) =
     (body \ name).asOpt[String].getOrElse(throw MissingRequiredParamException(name))
@@ -36,22 +36,23 @@ class CerebroRequest(val target: ElasticServer, body: JsValue, val user: Option[
 
 object CerebroRequest {
 
-  def apply(request: AuthRequest[JsValue], hosts: Hosts) = {
+  def apply(request: AuthRequest[JsValue], hosts: Hosts): CerebroRequest = {
     val body = request.body
 
     val host = (body \ "host").asOpt[String].getOrElse(throw MissingTargetHostException)
-    val knownHost = hosts.getServer(host)
-    val cluster = knownHost.getOrElse {
-      val username = (body \ "username").asOpt[String]
-      val password = (body \ "password").asOpt[String]
-      if (username.isDefined && password.isDefined) {
-        val auth = ESAuth(username.get, password.get)
-        ElasticServer(host, Some(auth))
-      } else {
-        ElasticServer(host, None)
-      }
+    val username = (body \ "username").asOpt[String]
+    val password = (body \ "password").asOpt[String]
+
+    val requestAuth = (username, password) match {
+      case (Some(u), Some(p)) => Some(ESAuth(u, p))
+      case _ => None
+    }
+
+    val server = hosts.getServer(host) match {
+      case Some(ElasticServer(h, a)) => ElasticServer(h, a.orElse(requestAuth))
+      case None => ElasticServer(host, requestAuth)
     }
-    new CerebroRequest(cluster, body, request.user)
+    CerebroRequest(server, body, request.user)
   }
 
 }