diff --git a/tupak/prior.py b/tupak/prior.py
index 99f7f6fd48829d4d5132461cac47930f353e1a5a..aa487856e8be6081ddd64ebb6ce6fc835ffeed15 100644
--- a/tupak/prior.py
+++ b/tupak/prior.py
@@ -135,6 +135,11 @@ class Uniform(Prior):
         in_prior = (val >= self.minimum) & (val <= self.maximum)
         return 1 / self.support * in_prior
 
+    def lnprob(self, val):
+        """Return the log-prior probability of val"""
+        in_prior = (val >= self.minimum) & (val <= self.maximum)
+        return -np.log(self.support) * in_prior
+
 
 class DeltaFunction(Prior):
     """Dirac delta function prior, this always returns peak."""
@@ -186,6 +191,12 @@ class PowerLaw(Prior):
             return np.nan_to_num(val ** self.alpha * (1 + self.alpha) / (self.maximum ** (1 + self.alpha)
                                                                          - self.minimum ** (1 + self.alpha))) * in_prior
 
+    def lnprob(self, val):
+        in_prior = (val >= self.minimum) & (val <= self.maximum)
+        normalising = (1+self.alpha)/(self.maximum ** (1 + self.alpha)
+                                      - self.minimum ** (1 + self.alpha))
+        return self.alpha * val * np.log(normalising) * in_prior
+
 
 class Cosine(Prior):
 
@@ -249,6 +260,9 @@ class Gaussian(Prior):
         """Return the prior probability of val"""
         return np.exp(-(self.mu - val)**2 / (2 * self.sigma**2)) / (2 * np.pi)**0.5 / self.sigma
 
+    def lnprob(self, val):
+        return -0.5*((self.mu - val)**2 / self.sigma**2 + np.log(2 * np.pi * self.sigma**2))
+
 
 class TruncatedGaussian(Prior):
     """