diff --git a/jsonnet/kube-prometheus/kube-prometheus.libsonnet b/jsonnet/kube-prometheus/kube-prometheus.libsonnet
index 1e757670420399a3572e0cd0ca1aa841e5a2f91f..6bafcff1b6675b1cd2e7cdd84eda3c83a9332a4f 100644
--- a/jsonnet/kube-prometheus/kube-prometheus.libsonnet
+++ b/jsonnet/kube-prometheus/kube-prometheus.libsonnet
@@ -6,7 +6,7 @@ local kubeStateMetrics = import './kube-state-metrics/kube-state-metrics.libsonn
 local nodeExporter = import './node-exporter/node-exporter.libsonnet';
 local prometheusAdapter = import './prometheus-adapter/prometheus-adapter.libsonnet';
 
-local mixins = import './mixins/monitoring-mixins.libsonnet';
+local monitoringMixins = import './mixins/monitoring-mixins.libsonnet';
 
 (import 'github.com/brancz/kubernetes-grafana/grafana/grafana.libsonnet') +
 (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/prometheus-operator/prometheus-operator.libsonnet') +
@@ -40,6 +40,11 @@ local mixins = import './mixins/monitoring-mixins.libsonnet';
     image: 'directxman12/k8s-prometheus-adapter:v0.8.2',
     prometheusURL: 'http://prometheus-' + $._config.prometheus.name + '.' + $._config.namespace + '.svc.cluster.local:9090/',
   }),
+  mixins+:: monitoringMixins({
+    namespace: $._config.namespace,
+    alertmanagerName: 'main',
+    prometheusName: 'k8s',
+  }),
   kubePrometheus+:: {
     namespace: {
       apiVersion: 'v1',
@@ -183,21 +188,21 @@ local mixins = import './mixins/monitoring-mixins.libsonnet';
     },
     
     local allRules =
-      mixins.mixins.nodeExporter.prometheusRules +
-      mixins.mixins.kubernetes.prometheusRules +
-      mixins.mixins.base.prometheusRules +
-      mixins.mixins.kubeStateMetrics.prometheusAlerts +
-      mixins.mixins.nodeExporter.prometheusAlerts +
-      mixins.mixins.alertmanager.prometheusAlerts +
-      mixins.mixins.prometheusOperator.prometheusAlerts +
-      mixins.mixins.kubernetes.prometheusAlerts +
-      mixins.mixins.prometheus.prometheusAlerts +
-      mixins.mixins.base.prometheusAlerts,
+      $.mixins.nodeExporter.prometheusRules +
+      $.mixins.kubernetes.prometheusRules +
+      $.mixins.base.prometheusRules +
+      $.mixins.kubeStateMetrics.prometheusAlerts +
+      $.mixins.nodeExporter.prometheusAlerts +
+      $.mixins.alertmanager.prometheusAlerts +
+      $.mixins.prometheusOperator.prometheusAlerts +
+      $.mixins.kubernetes.prometheusAlerts +
+      $.mixins.prometheus.prometheusAlerts +
+      $.mixins.base.prometheusAlerts,
 
     local allDashboards =
-      mixins.mixins.nodeExporter.grafanaDashboards +
-      mixins.mixins.kubernetes.grafanaDashboards +
-      mixins.mixins.prometheus.grafanaDashboards,
+      $.mixins.nodeExporter.grafanaDashboards +
+      $.mixins.kubernetes.grafanaDashboards +
+      $.mixins.prometheus.grafanaDashboards,
 
     prometheus+:: { rules: allRules },
     grafana+:: {
diff --git a/jsonnet/kube-prometheus/mixins/monitoring-mixins.libsonnet b/jsonnet/kube-prometheus/mixins/monitoring-mixins.libsonnet
index afdd92ead92d3969813372951b3266b4f7fb6c0d..14682543042ab1afcab666ebb7f47e85b6acc086 100644
--- a/jsonnet/kube-prometheus/mixins/monitoring-mixins.libsonnet
+++ b/jsonnet/kube-prometheus/mixins/monitoring-mixins.libsonnet
@@ -1,11 +1,13 @@
-{
-  // Add you mixins here.
-  mixins+:: {
-    _config:: {  // TODO(paulfantom): figure out how to pass this from higher up
-      prometheusName: 'k8s',
-      alertmanagerName: 'main',
-      namespace: 'default',
-    },
+local defaults = {
+  local defaults = self,
+  namespace: error 'must provide namespace',
+  prometheusName: error 'must provide namespace',
+  alertmanagerName: error 'must provide namespace',
+};
+
+function(params) {
+  local m = self,
+  config:: defaults + params,
     base+:
       (import '../alerts/general.libsonnet') +
       (import '../alerts/node.libsonnet') +
@@ -44,16 +46,14 @@
     prometheusOperator:
       (import 'github.com/prometheus-operator/prometheus-operator/jsonnet/mixin/mixin.libsonnet') {
         _config+:: {
-          //prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + $._config.namespace + '"',
-          prometheusOperatorSelector: 'job="prometheus-operator",namespace="monitoring"',
+          prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + m.config.namespace + '"',
         },
       },
 
     prometheus:
       (import 'github.com/prometheus/prometheus/documentation/prometheus-mixin/mixin.libsonnet') {
         _config+:: {
-          //prometheusSelector: 'job="prometheus-' + $._config.prometheusName + '",namespace="' + $._config.namespace + '"',
-          prometheusSelector: 'job="prometheus-k8s",namespace="monitoring"',
+          prometheusSelector: 'job="prometheus-' + m.config.prometheusName + '",namespace="' + m.config.namespace + '"',
           prometheusName: '{{$labels.namespace}}/{{$labels.pod}}',
         },
       },
@@ -63,8 +63,7 @@
         _config+:: {
           alertmanagerName: '{{ $labels.namespace }}/{{ $labels.pod}}',
           alertmanagerClusterLabels: 'namespace,service',
-          //alertmanagerSelector: 'job="alertmanager-' + $._config.alertmanagerName + '",namespace="' + $._config.namespace + '"',
-          alertmanagerSelector: 'job="alertmanager-main",namespace="monitoring"',
+          alertmanagerSelector: 'job="alertmanager-' + m.config.alertmanagerName + '",namespace="' + m.config.namespace + '"',
         },
       },
 
@@ -76,6 +75,4 @@
           diskDeviceSelector: 'device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"',
         },
       },
-
-  },
 }