diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,8 +1,12 @@
 # Revision history for kuifje
 
+## 0.1.2.0 -- 2019-09-10
+
+* Added some helper functions and type declarations.
+
 ## 0.1.1.0 -- 2019-09-06
 
-* Updated dependency boundaries and initial changelog entry
+* Updated dependency boundaries and initial changelog entry.
 
 ## 0.1.0.0  -- 2019-09-06
 
diff --git a/kuifje.cabal b/kuifje.cabal
--- a/kuifje.cabal
+++ b/kuifje.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                kuifje
-version:             0.1.1.0
+version:             0.1.2.0
 synopsis:            A Quantitative Information Flow aware programming language.
 description:         A prototype for a Quantitative Information Flow aware programming language.
 
diff --git a/src/Language/Kuifje/Distribution.hs b/src/Language/Kuifje/Distribution.hs
--- a/src/Language/Kuifje/Distribution.hs
+++ b/src/Language/Kuifje/Distribution.hs
@@ -15,6 +15,9 @@
 -- | Distribution data type.
 newtype Dist a = D { runD :: Map a Prob }
 
+-- | Type alias for hyper-distributions.
+type Hyper a = Dist (Dist a)
+
 -- | Top-level fmap function for distributions.
 fmap :: (Ord b) => (a -> b) -> Dist a -> Dist b
 fmap f dx = dx >>= (return . f)
@@ -24,12 +27,16 @@
 return :: (Ord a) => a -> Dist a
 return x = D $ singleton x 1
 
+-- | Alias for return function.
+point :: Ord a => a -> Dist a
+point = return
+
 -- | Top-level bind function for distributions.
 (>>=) :: (Ord b) => Dist a -> (a -> Dist b) -> Dist b
 d >>= f = D $ fromListWith (+) [(y, p * q) | (x, p) <- toList $ runD d, (y, q) <- toList $ runD (f x)]
 
 -- | Top-level join function for distributions.
-join :: (Ord a) => Dist (Dist a) -> Dist a
+join :: (Ord a) => Hyper a -> Dist a
 join x = x >>= id
 
 instance Ord a => Eq (Dist a) where
diff --git a/src/Language/Kuifje/Semantics.hs b/src/Language/Kuifje/Semantics.hs
--- a/src/Language/Kuifje/Semantics.hs
+++ b/src/Language/Kuifje/Semantics.hs
@@ -5,13 +5,13 @@
 module Language.Kuifje.Semantics where
 
 import Prelude hiding (return, fmap, (>>=))
-import Data.Map.Strict (fromListWith, toList, elems)
+import Data.Map.Strict (fromListWith, toList, elems, mapWithKey)
 
 import Language.Kuifje.Distribution
 import Language.Kuifje.Syntax
 
 -- | Hyper-distribution type synonym.
-type a ~~> b = Dist a -> Dist (Dist b)
+type a ~~> b = Dist a -> Hyper b
 
 -- | Bind with reduction applied to the input distribution.
 (=>>) :: (Ord b) => Dist a -> (a -> Dist b) -> Dist b
@@ -64,7 +64,7 @@
         f' ws = let dpws = D $ fromListWith (+) [(s, p) | ((ws', s), p) <- toList $ runD dp, ws' == ws]
                 in D $ fromListWith (+) [(s, p / weight dpws) | (s, p) <- toList $ runD dpws]
 
-    multiply :: (Ord s) => (Dist o, o -> Dist s) -> Dist (Dist s)
+    multiply :: (Ord s) => (Dist o, o -> Dist s) -> Hyper s
     multiply (d, f') = fmap f' d
 
 -- | Calculate Bayes Vulnerability for a distribution.
@@ -73,8 +73,9 @@
 
 -- | Based on an entropy function for distributions, calculate the
 -- average entropy for a hyper-distribution.
-condEntropy :: (Dist a -> Rational) -> Dist (Dist a) -> Rational
-condEntropy e m = average (fmap e m) where
-  -- | Average a distribution of Rationals.
-  average :: Dist Rational -> Rational
-  average d = sum [r * p | (r, p) <- toList $ runD d]
+condEntropy :: (Dist a -> Rational) -> Hyper a -> Rational
+condEntropy e m = average (fmap e m)
+
+-- | Average a distribution of Rationals.
+average :: Dist Rational -> Rational
+average = sum . mapWithKey (*) . runD
