diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,20 @@
+1.5.0.0
+-------
+
+- `timers-tick` has released a new version: all timers function (creaTimer,
+  creaBoolTimer, creaTimerLoop, creaBoolTimerLoop, creaAnimation,
+  creaLoopAnimation, ticks) are slightly more robust now (will `error`
+  on nonsenical arguments, e.g. frame duration <1).
+  This should not impact any of your current projects, it just makes
+  catching bugs easier.
+- Removed `getFrames` from Animation interface.
+- Updated `Random` interface to fit the new `random`. This is a breaking
+  change but it should be easy to fix by updating your `Random` constraints
+  to `UniformRange`
+- Removed `getRandomList` from Random interface.
+- Added `pickRandom` to Random interface.
+- Removed unuseful `creaStaticAnimation` from Animation interface.
+
 1.4.0.0
 -------
 
diff --git a/ansi-terminal-game.cabal b/ansi-terminal-game.cabal
--- a/ansi-terminal-game.cabal
+++ b/ansi-terminal-game.cabal
@@ -1,5 +1,5 @@
 name:                ansi-terminal-game
-version:             1.4.0.0
+version:             1.5.0.0
 synopsis:            sdl-like functions for terminal applications, based on
                      ansi-terminal
 description:         Library which aims to replicate standard 2d game
@@ -59,11 +59,11 @@
                        mintty == 0.1.*,
                        mtl == 2.2.*,
                        QuickCheck >= 2.13 && < 2.15,
-                       random >= 1.1 && < 1.3,
+                       random >= 1.2 && < 1.3,
                        split == 0.2.*,
                        terminal-size == 0.3.*,
                        unidecode >= 0.1.0 && < 0.2,
-                       timers-tick > 0.4.2 && < 0.5
+                       timers-tick > 0.5 && < 0.6
   hs-source-dirs:      src
   default-language:    Haskell2010
   ghc-options:         -Wall
@@ -95,7 +95,8 @@
                        Terminal.Game.Utils,
                        Terminal.Game.Plane,
                        Terminal.Game.PlaneSpec
-                       Terminal.Game.Random
+                       Terminal.Game.Random,
+                       Terminal.Game.RandomSpec
   build-depends:       base == 4.*,
                        ansi-terminal == 0.11.*,
                        array == 0.5.*,
@@ -106,11 +107,11 @@
                        linebreak == 1.1.*,
                        mtl == 2.2.*,
                        QuickCheck >= 2.13 && < 2.15,
-                       random >= 1.1 && < 1.3,
+                       random >= 1.2 && < 1.3,
                        split == 0.2.*,
                        terminal-size == 0.3.*,
                        unidecode >= 0.1.0 && < 0.2,
-                       timers-tick > 0.4.2 && < 0.5
+                       timers-tick > 0.5 && < 0.6
                        -- the above plus hspec
                        , hspec
   type:                exitcode-stdio-1.0
diff --git a/src/Terminal/Game.hs b/src/Terminal/Game.hs
--- a/src/Terminal/Game.hs
+++ b/src/Terminal/Game.hs
@@ -39,6 +39,7 @@
 -- todo (da sm) hot reload for game (see IHP web app) [suggestion]
 -- todo (da sm) sound with sox
 -- todo (da sm) add tick counter
+-- todo eccezioni con maybe o lanciando l’eccezione?
 
 
 module Terminal.Game ( -- * Running
@@ -66,17 +67,16 @@
                        Animation,
                        creaAnimation,
                        creaLoopAnimation,
-                       creaStaticAnimation,
 
                        -- *** T/A interface
                        tick, ticks, reset, lapse,
-                       fetchFrame, isExpired, getFrames,
+                       fetchFrame, isExpired,
 
                        -- ** Random numbers
                        StdGen,
                        getStdGen, mkStdGen,
-                       getRandom, getRandomList,
-                       Random,
+                       getRandom, pickRandom,
+                       UniformRange,
 
                        -- * Drawing
                        -- | To get to the gist of drawing, check the
diff --git a/src/Terminal/Game/Animation.hs b/src/Terminal/Game/Animation.hs
--- a/src/Terminal/Game/Animation.hs
+++ b/src/Terminal/Game/Animation.hs
@@ -31,8 +31,3 @@
 -- | Creates a looped 'Animation'.
 creaLoopAnimation :: [(Integer, Plane)] -> Animation
 creaLoopAnimation ips = creaTimedRes AlwaysLoop ips
-
--- | Wraps a 'Plane' into an 'Animation'.
-creaStaticAnimation :: Plane -> Animation
-creaStaticAnimation p = creaTimedRes (Times 1 Elapse) [(1, p)]
-
diff --git a/src/Terminal/Game/Random.hs b/src/Terminal/Game/Random.hs
--- a/src/Terminal/Game/Random.hs
+++ b/src/Terminal/Game/Random.hs
@@ -1,24 +1,20 @@
 module Terminal.Game.Random ( R.StdGen,
-                              Random,
+                              R.UniformRange,
                               R.getStdGen,
                               R.mkStdGen,
                               getRandom,
-                              getRandomList )
+                              pickRandom )
             where
 
 import System.Random as R
 
 
--- getRandom :: (Ord a, Show a) => (a, a) -> StdGen -> (a, StdGen)
--- getRandom bs@(l, h) sg
---         | l > h     = error $ "getRandom: lowBound > highBoud, " ++ show bs
---         | otherwise = randomR _ _
-
--- | Simple pseudo-random generator.
-getRandom :: Random a => (a, a) -> StdGen -> (a, StdGen)
-getRandom bs sg = randomR bs sg
-
--- | Returns an infinite list of random values.
-getRandomList :: Random a => (a, a) -> StdGen -> [a]
-getRandomList bs sg = randomRs bs sg
+-- | Simple, pure pseudo-random generator.
+getRandom :: UniformRange a => (a, a) -> StdGen -> (a, StdGen)
+getRandom bs sg = uniformR bs sg
 
+-- | Picks at random from list.
+pickRandom :: [a] -> StdGen -> (a, StdGen)
+pickRandom as sg = let l = length as
+                       (a, sg') = getRandom (0, l-1) sg
+                   in (as !! a, sg')
diff --git a/test/Terminal/Game/RandomSpec.hs b/test/Terminal/Game/RandomSpec.hs
new file mode 100644
--- /dev/null
+++ b/test/Terminal/Game/RandomSpec.hs
@@ -0,0 +1,20 @@
+module Terminal.Game.RandomSpec where
+
+import Test.Hspec
+import Test.Hspec.QuickCheck
+import Terminal.Game.Random
+
+
+spec :: Spec
+spec = do
+
+  describe "pickRandom" $ do
+    prop "picks items at random from a list" $
+      \i -> let g = mkStdGen i
+            in fst (pickRandom ['a', 'b'] g) /= 'c'
+    prop "does not exclude any item" $
+      \i -> let g = mkStdGen i
+                rf tg = pickRandom [1,2] tg
+                rs = iterate (\(_, lg') -> rf lg')  (rf g)
+                ts = take 100 rs
+            in sum (map fst ts) /= length ts
