diff --git a/cmd/operator/main.go b/cmd/operator/main.go
index ca59006aa..b798eb0eb 100644
--- a/cmd/operator/main.go
+++ b/cmd/operator/main.go
@@ -48,8 +48,8 @@ func init() {
 	flagset.StringVar(&cfg.KubeletObject, "kubelet-object", "", "Endpoints object to write kubelets into in format \"namespace/name\"")
 	flagset.BoolVar(&cfg.TLSInsecure, "tls-insecure", false, "- NOT RECOMMENDED FOR PRODUCTION - Don't verify API server's CA certificate.")
 	flagset.BoolVar(&analyticsEnabled, "analytics", true, "Send analytical event (Cluster Created/Deleted etc.) to Google Analytics")
-	flagset.StringVar(&cfg.PrometheusWatcherImage, "prometheus-watcher-image", "quay.io/coreos/prometheus-watcher:v0.0.1", "Config and rule reload image")
-	flagset.StringVar(&cfg.ConfigReloaderImage, "config-reloader-image", "jimmidyson/configmap-reload:latest", "Reload Image")
+	flagset.StringVar(&cfg.PrometheusConfigReloader, "prometheus-config-reloader", "quay.io/coreos/prometheus-config-reloader:v0.0.1", "Config and rule reload image")
+	flagset.StringVar(&cfg.ConfigReloaderImage, "config-reloader-image", "quay.io/coreos/configmap-reload:v0.0.1", "Reload Image")
 
 	flagset.Parse(os.Args[1:])
 }
diff --git a/contrib/prometheus-config-reloader/.gitignore b/contrib/prometheus-config-reloader/.gitignore
new file mode 100644
index 000000000..0bae95193
--- /dev/null
+++ b/contrib/prometheus-config-reloader/.gitignore
@@ -0,0 +1 @@
+prometheus-config-reloader
diff --git a/contrib/prometheus-config-reloader/Dockerfile b/contrib/prometheus-config-reloader/Dockerfile
new file mode 100644
index 000000000..5c851fd03
--- /dev/null
+++ b/contrib/prometheus-config-reloader/Dockerfile
@@ -0,0 +1,5 @@
+FROM quay.io/prometheus/busybox:latest
+
+ADD prometheus-config-reloader /bin/prometheus-config-reloader
+
+ENTRYPOINT ["/bin/prometheus-config-reloader"]
diff --git a/contrib/prometheus-watcher/Makefile b/contrib/prometheus-config-reloader/Makefile
similarity index 90%
rename from contrib/prometheus-watcher/Makefile
rename to contrib/prometheus-config-reloader/Makefile
index b7602d0b7..1971fdd39 100644
--- a/contrib/prometheus-watcher/Makefile
+++ b/contrib/prometheus-config-reloader/Makefile
@@ -2,7 +2,7 @@ all: build
 
 FLAGS =
 ENVVAR = GOOS=linux GOARCH=amd64 CGO_ENABLED=0
-NAME = prometheus-watcher
+NAME = prometheus-config-reloader
 REPO = quay.io/coreos/$(NAME)
 TAG = v0.0.1
 IMAGE = $(REPO):$(TAG)
diff --git a/contrib/prometheus-watcher/examples/prometheus-watcher.yaml b/contrib/prometheus-config-reloader/examples/prometheus-config-reloader.yaml
similarity index 78%
rename from contrib/prometheus-watcher/examples/prometheus-watcher.yaml
rename to contrib/prometheus-config-reloader/examples/prometheus-config-reloader.yaml
index 2cc906cae..055cfd0c6 100644
--- a/contrib/prometheus-watcher/examples/prometheus-watcher.yaml
+++ b/contrib/prometheus-config-reloader/examples/prometheus-config-reloader.yaml
@@ -1,26 +1,26 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: prometheus-watcher-example
+  name: prometheus-config-reloader-example
 data:
 ---
 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
-  name: prometheus-watcher
+  name: prometheus-config-reloader
 spec:
   replicas: 1
   template:
     metadata:
       labels:
-        app: prometheus-watcher
+        app: prometheus-config-reloader
     spec:
       volumes:
       - name: rules
         emptyDir: {}
       - name: config
         configMap:
-          name: prometheus-watcher-example
+          name: prometheus-config-reloader-example
       containers:
       - name: ubuntu
         image: ubuntu
@@ -29,8 +29,8 @@ spec:
         - name: rules
           mountPath: /etc/prometheus/rules
           readOnly: true
-      - name: prometheus-watcher
-        image: quay.io/coreos/prometheus-watcher:v0.0.1
+      - name: prometheus-config-reloader
+        image: quay.io/coreos/prometheus-config-reloader:v0.0.1
         args:
         - '-config-volume-dir=/etc/prometheus/config'
         - '-rule-volume-dir=/etc/prometheus/rules'
diff --git a/contrib/prometheus-watcher/examples/updated-configmap.yaml b/contrib/prometheus-config-reloader/examples/updated-configmap.yaml
similarity index 75%
rename from contrib/prometheus-watcher/examples/updated-configmap.yaml
rename to contrib/prometheus-config-reloader/examples/updated-configmap.yaml
index e614f8890..1a43a80b8 100644
--- a/contrib/prometheus-watcher/examples/updated-configmap.yaml
+++ b/contrib/prometheus-config-reloader/examples/updated-configmap.yaml
@@ -1,19 +1,19 @@
 apiVersion: v1
 kind: ConfigMap
 metadata:
-  name: prometheus-watcher-example
+  name: prometheus-config-reloader-example
 data:
   configmaps.json: |+
     {
       "items": [
         {
-          "name": "default/test0"
+          "key": "default/test0"
         },
         {
-          "name": "default/test1"
+          "key": "default/test1"
         },
         {
-          "name": "default/test2"
+          "key": "default/test2"
         }
       ]
     }
diff --git a/contrib/prometheus-watcher/main.go b/contrib/prometheus-config-reloader/main.go
similarity index 92%
rename from contrib/prometheus-watcher/main.go
rename to contrib/prometheus-config-reloader/main.go
index 98a594692..bd2a051fa 100644
--- a/contrib/prometheus-watcher/main.go
+++ b/contrib/prometheus-config-reloader/main.go
@@ -51,12 +51,12 @@ func newVolumeWatcher(client *k8s.Client, cfg config, logger log.Logger) *volume
 	}
 }
 
-type ConfigMap struct {
+type ConfigMapReference struct {
 	Key string `json:"key"`
 }
 
-type ConfigMapList struct {
-	Items []*ConfigMap `json:"items"`
+type ConfigMapReferenceList struct {
+	Items []*ConfigMapReference `json:"items"`
 }
 
 func (w *volumeWatcher) UpdateRuleFiles() error {
@@ -66,7 +66,7 @@ func (w *volumeWatcher) UpdateRuleFiles() error {
 	}
 	defer file.Close()
 
-	configMaps := ConfigMapList{}
+	configMaps := ConfigMapReferenceList{}
 	err = json.NewDecoder(file).Decode(&configMaps)
 	if err != nil {
 		return err
@@ -224,23 +224,6 @@ func (w *volumeWatcher) Run() {
 	}
 	defer watcher.Close()
 
-	done := make(chan bool)
-	go func() {
-		for {
-			select {
-			case event := <-watcher.Events:
-				if event.Op&fsnotify.Create == fsnotify.Create {
-					if filepath.Base(event.Name) == "..data" {
-						w.logger.Log("msg", "ConfigMap modified.")
-						w.Refresh()
-					}
-				}
-			case err := <-watcher.Errors:
-				w.logger.Log("err", err)
-			}
-		}
-	}()
-
 	w.logger.Log("msg", "Starting...")
 	w.Refresh()
 	err = watcher.Add(w.cfg.configVolumeDir)
@@ -249,7 +232,19 @@ func (w *volumeWatcher) Run() {
 		os.Exit(1)
 	}
 
-	<-done
+	for {
+		select {
+		case event := <-watcher.Events:
+			if event.Op&fsnotify.Create == fsnotify.Create {
+				if filepath.Base(event.Name) == "..data" {
+					w.logger.Log("msg", "ConfigMap modified.")
+					w.Refresh()
+				}
+			}
+		case err := <-watcher.Errors:
+			w.logger.Log("err", err)
+		}
+	}
 }
 
 func main() {
@@ -257,7 +252,7 @@ func main() {
 		With("ts", log.DefaultTimestampUTC, "caller", log.DefaultCaller)
 
 	cfg := config{}
-	flags := flag.NewFlagSet("prometheus-watcher", flag.ExitOnError)
+	flags := flag.NewFlagSet("prometheus-config-reloader", flag.ExitOnError)
 	flags.StringVar(&cfg.configVolumeDir, "config-volume-dir", "", "The directory to watch for changes to reload Prometheus.")
 	flags.StringVar(&cfg.ruleVolumeDir, "rule-volume-dir", "", "The directory to write rule files to.")
 	flags.StringVar(&cfg.reloadUrl, "reload-url", "", "The URL to call when intending to reload Prometheus.")
diff --git a/contrib/prometheus-watcher/.gitignore b/contrib/prometheus-watcher/.gitignore
deleted file mode 100644
index 5dc3b75de..000000000
--- a/contrib/prometheus-watcher/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-prometheus-watcher
diff --git a/contrib/prometheus-watcher/Dockerfile b/contrib/prometheus-watcher/Dockerfile
deleted file mode 100644
index 9d9c7f13e..000000000
--- a/contrib/prometheus-watcher/Dockerfile
+++ /dev/null
@@ -1,5 +0,0 @@
-FROM quay.io/prometheus/busybox:latest
-
-ADD prometheus-watcher /bin/prometheus-watcher
-
-ENTRYPOINT ["/bin/prometheus-watcher"]
diff --git a/hack/show-rules.sh b/hack/show-rules.sh
new file mode 100755
index 000000000..f1ee4ad58
--- /dev/null
+++ b/hack/show-rules.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+kubectl -n prometheus-operator-e2e-tests exec -it prometheus-test-0 -c prometheus '/bin/sh -c "cat /etc/prometheus/rules/rules-0/test.rules"'
diff --git a/pkg/prometheus/operator.go b/pkg/prometheus/operator.go
index 9c8380586..9d105bff2 100644
--- a/pkg/prometheus/operator.go
+++ b/pkg/prometheus/operator.go
@@ -74,12 +74,12 @@ type Operator struct {
 
 // Config defines configuration parameters for the Operator.
 type Config struct {
-	Host                   string
-	KubeletObject          string
-	TLSInsecure            bool
-	TLSConfig              rest.TLSClientConfig
-	ConfigReloaderImage    string
-	PrometheusWatcherImage string
+	Host                     string
+	KubeletObject            string
+	TLSInsecure              bool
+	TLSConfig                rest.TLSClientConfig
+	ConfigReloaderImage      string
+	PrometheusConfigReloader string
 }
 
 // New creates a new controller.
diff --git a/pkg/prometheus/statefulset.go b/pkg/prometheus/statefulset.go
index 78d50a5f2..013c8262b 100644
--- a/pkg/prometheus/statefulset.go
+++ b/pkg/prometheus/statefulset.go
@@ -122,30 +122,30 @@ func makeEmptyConfig(name string, configMaps []*v1.ConfigMap) (*v1.Secret, error
 	return s, nil
 }
 
-type ConfigMap struct {
+type ConfigMapReference struct {
 	Key      string `json:"key"`
 	Checksum string `json:"checksum"`
 }
 
-type ConfigMapList struct {
-	Items []*ConfigMap `json:"items"`
+type ConfigMapReferenceList struct {
+	Items []*ConfigMapReference `json:"items"`
 }
 
-func makeRuleConfigMap(cm *v1.ConfigMap) (*ConfigMap, error) {
+func makeRuleConfigMap(cm *v1.ConfigMap) (*ConfigMapReference, error) {
 	hash := sha256.New()
 	err := json.NewEncoder(hash).Encode(cm)
 	if err != nil {
 		return nil, err
 	}
 
-	return &ConfigMap{
+	return &ConfigMapReference{
 		Key:      cm.Namespace + "/" + cm.Name,
 		Checksum: fmt.Sprintf("%x", hash.Sum(nil)),
 	}, nil
 }
 
 func makeRuleConfigMapListFile(configMaps []*v1.ConfigMap) ([]byte, error) {
-	cml := &ConfigMapList{}
+	cml := &ConfigMapReferenceList{}
 
 	for _, cm := range configMaps {
 		configmap, err := makeRuleConfigMap(cm)
@@ -341,8 +341,8 @@ func makeStatefulSetSpec(p v1alpha1.Prometheus, c *Config, ruleConfigMaps []*v1.
 						},
 						Resources: p.Spec.Resources,
 					}, {
-						Name:         "prometheus-watcher",
-						Image:        c.PrometheusWatcherImage,
+						Name:         "prometheus-config-reloader",
+						Image:        c.PrometheusConfigReloader,
 						Args:         configReloadArgs,
 						VolumeMounts: configReloadVolumeMounts,
 						Resources: v1.ResourceRequirements{
diff --git a/test/e2e/prometheus_e2e_test.go b/test/e2e/prometheus_e2e_test.go
index a63c9236f..2075bf007 100644
--- a/test/e2e/prometheus_e2e_test.go
+++ b/test/e2e/prometheus_e2e_test.go
@@ -233,7 +233,7 @@ func TestPrometheusReloadRules(t *testing.T) {
 
 	// remounting a ConfigMap can take some time
 	err = framework.Poll(time.Minute*5, time.Second, func() (bool, error) {
-		logs, err := framework.GetLogs(fmt.Sprintf("prometheus-%s-0", name), "prometheus-watcher")
+		logs, err := framework.GetLogs(fmt.Sprintf("prometheus-%s-0", name), "prometheus-config-reloader")
 		if err != nil {
 			return false, err
 		}