diff --git a/climax/core/qm.py b/climax/core/qm.py
new file mode 100644
index 0000000000000000000000000000000000000000..6f7a94fc5b9f93b330ddc994d657b3af47910d28
--- /dev/null
+++ b/climax/core/qm.py
@@ -0,0 +1,31 @@
+"""Empirical quantile mapping for climate model bias correction."""
+
+# !/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# externals
+import numpy as np
+from scipy.stats.mstats import mquantiles
+
+
+def iecdf(array, probs, **kwargs):
+    """Empirical quantile function, inverse cumulative distribution function.
+
+    Parameters
+    ----------
+    array : :py:class:`numpy.ndarray`
+        Data to compute empirical quantiles.
+    probs : `int` or :py:class:`numpy.ndarray`
+        Quantile or range of quantiles to compute.
+    **kwargs : `dict`
+        Additional keyword arguments passed to
+        :py:func:`scipy.stats.mstats.mquantiles`.
+
+    Returns
+    -------
+    quantiles : :py:class:`numpy.ndarray`
+        Empirical quantiles.
+
+    """
+    return mquantiles(array, probs, **kwargs)
+