diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/AnalyticsConfig.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/AnalyticsConfig.scala
index 108b271..8035a43 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/AnalyticsConfig.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/AnalyticsConfig.scala
@@ -26,5 +26,7 @@
   val Contributors = "contributors"
   val BotlikeFilenameRegexp = "botlike-filename-regexp"
 
-  lazy val botlikeFilenameRegexps: List[String] = pluginConfig.getStringList(Contributors, null, BotlikeFilenameRegexp).toList
+  lazy val botlikeFilenameRegexps: List[String] = pluginConfigBotLikeFilenameRegexp
+
+  private lazy val pluginConfigBotLikeFilenameRegexp = pluginConfig.getStringList(Contributors, null, BotlikeFilenameRegexp).toList
 }
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/Contributors.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/Contributors.scala
index 1bda651..932e04c 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/Contributors.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/Contributors.scala
@@ -78,7 +78,7 @@
 
   override protected def run =
     gsonFmt.format(executor.get(projectRes, beginDate, endDate,
-      granularity.getOrElse(AggregationStrategy.EMAIL), extractBranches, extractIssues, botLikeRegexps), stdout)
+      granularity.getOrElse(AggregationStrategy.EMAIL), extractBranches, extractIssues), stdout)
 
 }
 
@@ -134,28 +134,28 @@
     Response.ok(
       new GsonStreamedResult[UserActivitySummary](gson,
         executor.get(projectRes, beginDate, endDate,
-          granularity.getOrElse(AggregationStrategy.EMAIL), extractBranches, extractIssues, botLikeRegexps)))
+          granularity.getOrElse(AggregationStrategy.EMAIL), extractBranches, extractIssues)))
 }
 
 class ContributorsService @Inject()(repoManager: GitRepositoryManager,
                                     projectCache:ProjectCache,
                                     histogram: UserActivityHistogram,
-                                    gsonFmt: GsonFormatter) {
+                                    gsonFmt: GsonFormatter,
+                                    botLikeExtractor: BotLikeExtractor) {
   import RichBoolean._
 
   import scala.collection.JavaConverters._
 
   def get(projectRes: ProjectResource, startDate: Option[Long], stopDate: Option[Long],
-          aggregationStrategy: AggregationStrategy, extractBranches: Boolean, extractIssues: Boolean, botLikeIdentifiers: List[String])
+          aggregationStrategy: AggregationStrategy, extractBranches: Boolean, extractIssues: Boolean)
   : TraversableOnce[UserActivitySummary] = {
     val nameKey = projectRes.getNameKey
     val commentLinks: List[CommentLinkInfo] = extractIssues.option {
       projectCache.get(nameKey).getCommentLinks.asScala
     }.toList.flatten
 
-
     ManagedResource.use(repoManager.openRepository(projectRes.getNameKey)) { repo =>
-      val stats = new Statistics(repo, new BotLikeExtractorImpl(botLikeIdentifiers), commentLinks)
+      val stats = new Statistics(repo, botLikeExtractor, commentLinks)
       val branchesExtractor = extractBranches.option(new BranchesExtractor(repo))
 
       histogram.get(repo, new AggregatedHistogramFilterByDates(startDate, stopDate, branchesExtractor, aggregationStrategy))
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/Module.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/Module.scala
index 935a198..ca8167b 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/Module.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/Module.scala
@@ -17,10 +17,13 @@
 import com.google.gerrit.extensions.restapi.RestApiModule
 import com.google.gerrit.server.project.ProjectResource.PROJECT_KIND
 import com.google.inject.AbstractModule
+import com.googlesource.gerrit.plugins.analytics.common.{BotLikeExtractor, BotLikeExtractorImpl}
 
 class Module extends AbstractModule {
 
   override protected def configure() {
+    bind(classOf[BotLikeExtractor]).to(classOf[BotLikeExtractorImpl])
+
     install(new RestApiModule() {
       override protected def configure() = {
         get(PROJECT_KIND, "contributors").to(classOf[ContributorsResource])
diff --git a/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractor.scala b/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractor.scala
index 16a8bf2..ac67647 100644
--- a/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractor.scala
+++ b/src/main/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractor.scala
@@ -14,13 +14,16 @@
 
 package com.googlesource.gerrit.plugins.analytics.common
 
+import com.google.inject.Inject
+import com.googlesource.gerrit.plugins.analytics.AnalyticsConfig
+
 import scala.util.matching.Regex
 
 trait BotLikeExtractor {
   def isBotLike(files: Set[String]): Boolean
 }
 
-class BotLikeExtractorImpl(botLikeIdentifiers: List[String]) extends BotLikeExtractor {
-  private val botRegexps = new Regex(botLikeIdentifiers.mkString("|"))
-  override def isBotLike(files: Set[String]): Boolean = botLikeIdentifiers.nonEmpty && files.forall(botRegexps.findFirstIn(_).isDefined)
+class BotLikeExtractorImpl @Inject() (val analyticsConfig: AnalyticsConfig) extends BotLikeExtractor {
+  private val botRegexps = new Regex(analyticsConfig.botlikeFilenameRegexps.mkString("|"))
+  override def isBotLike(files: Set[String]): Boolean = analyticsConfig.botlikeFilenameRegexps.nonEmpty && files.forall(botRegexps.findFirstIn(_).isDefined)
 }
diff --git a/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractorImplSpec.scala b/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractorImplSpec.scala
index 2893a31..dedab3b 100644
--- a/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractorImplSpec.scala
+++ b/src/test/scala/com/googlesource/gerrit/plugins/analytics/common/BotLikeExtractorImplSpec.scala
@@ -14,6 +14,7 @@
 
 package com.googlesource.gerrit.plugins.analytics.common
 
+import com.googlesource.gerrit.plugins.analytics.AnalyticsConfig
 import com.googlesource.gerrit.plugins.analytics.test.GitTestCase
 import org.scalatest.{FlatSpec, Matchers}
 
@@ -22,7 +23,7 @@
   behavior of "isBotLike"
 
   it should "return true when all files match bot-like identifiers" in {
-    val extractor = new BotLikeExtractorImpl(List(""".+\.xml"""))
+    val extractor = newBotLikeExtractorImpl(List(""".+\.xml"""))
 
     extractor.isBotLike(Set(
       "some/path/AFile.xml",
@@ -32,7 +33,7 @@
   }
 
   it should "return false when at least one file does not match bot-like identifiers" in {
-    val extractor = new BotLikeExtractorImpl(List(""".+\.xml"""))
+    val extractor = newBotLikeExtractorImpl(List(""".+\.xml"""))
 
     extractor.isBotLike(Set(
       "some/path/AFile.xml",
@@ -42,10 +43,14 @@
   }
 
   it should "return false when no bot-like identifiers have been provided" in {
-    val extractor = new BotLikeExtractorImpl(List.empty)
+    val extractor = newBotLikeExtractorImpl(List.empty)
 
     extractor.isBotLike(Set("some/path/anyFile")).shouldBe(false)
 
   }
 
+  private def newBotLikeExtractorImpl(botLikeRegexps: List[String]) = new BotLikeExtractorImpl(new AnalyticsConfig(null, null) {
+    override lazy val botlikeFilenameRegexps = botLikeRegexps
+  })
+
 }
