diff --git a/Changes.md b/Changes.md
--- a/Changes.md
+++ b/Changes.md
@@ -1,5 +1,10 @@
 # Change log for the `probability` package
 
+## 0.2.7
+
+ * support `random-1.2`
+
+
 ## 0.2.6
 
  * `instance Monad Distribution.T`:
diff --git a/ToDo b/ToDo
--- a/ToDo
+++ b/ToDo
@@ -1,3 +1,6 @@
+Numeric.Probability.Either -> Control.Monad.Trans.Except
+
+
 Object -> Experiment?
 
 Object
diff --git a/probability.cabal b/probability.cabal
--- a/probability.cabal
+++ b/probability.cabal
@@ -1,5 +1,6 @@
+Cabal-Version:      1.24
 Name:               probability
-Version:            0.2.6
+Version:            0.2.7
 License:            BSD3
 License-File:       COPYRIGHT
 Author:             Martin Erwig <erwig@eecs.oregonstate.edu>, Steve Kollmansberger
@@ -13,13 +14,11 @@
    The monad is similar to the List monad for non-deterministic computations,
    but extends the List monad by a measure of probability.
    Small interface to R plotting.
-Tested-With:    GHC==6.4.1, GHC==6.8.2, GHC==6.12.3
 Tested-With:    GHC==7.0.2, GHC==7.2.2, GHC==7.4.2, GHC==7.8.2
-Cabal-Version:  >=1.6
+Tested-With:    GHC==8.6.5, GHC==8.8.3
 Build-Type:     Simple
 Extra-Source-Files:
   Changes.md
-Data-Files:
   README
   ToDo
 
@@ -30,7 +29,7 @@
 Source-Repository this
   type:     darcs
   location: http://code.haskell.org/~thielema/probability/
-  tag:      0.2.6
+  tag:      0.2.7
 
 
 Flag splitBase
@@ -43,7 +42,7 @@
   If flag(splitBase)
     Build-Depends:
       containers >=0.1 && <0.7,
-      random >=1.0 && <2,
+      random >=1.0 && <1.3,
       base >=2 && <5
     If impl(ghc>=8.8)
       Hs-Source-Dirs: src-fail/from-4.13/
@@ -54,8 +53,9 @@
       special-functors >=1.0 && <1.1,
       base >=1.0 && <2
 
-  Hs-Source-Dirs:     src
+  Default-Language:   Haskell98
   GHC-Options:        -Wall
+  Hs-Source-Dirs:     src
   Exposed-Modules:
     Numeric.Probability.Visualize
     Numeric.Probability.Expectation
diff --git a/src/Numeric/Probability/Percentage.hs b/src/Numeric/Probability/Percentage.hs
--- a/src/Numeric/Probability/Percentage.hs
+++ b/src/Numeric/Probability/Percentage.hs
@@ -9,7 +9,8 @@
 import Numeric.Probability.Show (showR)
 import Numeric.Probability.Trace (Trace)
 
-import Data.List.HT (padLeft, )
+import Data.List.HT (padLeft)
+import Data.Tuple.HT (mapFst)
 
 import qualified System.Random as Random
 
@@ -115,12 +116,8 @@
    acosh = liftP acosh
 
 instance Random.Random T where
-   randomR (Cons l, Cons r) =
-      (\(x,g) -> (Cons x, g)) . Random.randomR (l,r)
-   random =
-      (\(x,g) -> (Cons x, g)) . Random.random
-   randomRIO (Cons l, Cons r) = fmap Cons $ Random.randomRIO (l,r)
-   randomIO = fmap Cons $ Random.randomIO
+   randomR (Cons l, Cons r) = mapFst Cons . Random.randomR (l,r)
+   random = mapFst Cons . Random.random
 
 
 type Dist a = Dist.T T a
