diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+* v 0.3.1 2017-08-15
+  * provided compatible versions of take, drop, length, replicate, splitAt
+
 * v 0.3.0.1 2017-08-01
   * improve package documentation in module MixedTypesNumPrelude
 
diff --git a/mixed-types-num.cabal b/mixed-types-num.cabal
--- a/mixed-types-num.cabal
+++ b/mixed-types-num.cabal
@@ -1,5 +1,5 @@
 name:           mixed-types-num
-version:        0.3.0.1
+version:        0.3.1
 cabal-version:  >= 1.9.2
 build-type:     Simple
 homepage:       https://github.com/michalkonecny/mixed-types-num
diff --git a/src/Numeric/MixedTypes/Literals.hs b/src/Numeric/MixedTypes/Literals.hs
--- a/src/Numeric/MixedTypes/Literals.hs
+++ b/src/Numeric/MixedTypes/Literals.hs
@@ -46,11 +46,13 @@
   , CanBeDouble, double, doubles
   , ConvertibleExactly(..), convertExactly, convertExactlyTargetSample
   , ConvertResult, ConvertError, convError
-  -- * Generic list index
-  , (!!), specCanBeInteger, printArgsIfFails2
+  -- * Prelude List operations versions without Int
+  , (!!), length, replicate, take, drop, splitAt
   -- * Testing support functions
   , T(..), tInt, tInteger, tRational, tDouble
   , tBool, tMaybe, tMaybeBool, tMaybeMaybeBool
+  , specCanBeInteger
+  , printArgsIfFails2
   -- * Helper functions
   , convertFirst, convertSecond
   , convertFirstUsing, convertSecondUsing
@@ -118,9 +120,24 @@
 fromInteger_ :: (HasIntegers t) => Integer -> t
 fromInteger_ = convertExactly
 
-(!!) :: (CanBeInteger t) => [a] -> t -> a
+(!!) :: (CanBeInteger n) => [a] -> n -> a
 list !! ix = List.genericIndex list (integer ix)
 -- list !! ix = List.genericIndex list (P.max 0 ((integer ix) P.- 1)) -- deliberately wrong - test the test!
+
+length :: (Foldable t) => t a -> Integer
+length = integer . P.length
+
+replicate :: (CanBeInteger n) => n -> a -> [a]
+replicate = P.replicate . int . integer
+
+take :: (CanBeInteger n) => n -> [a] -> [a]
+take = P.take . int . integer
+
+drop :: (CanBeInteger n) => n -> [a] -> [a]
+drop = P.drop . int . integer
+
+splitAt :: (CanBeInteger n) => n -> [a] -> ([a],[a])
+splitAt = P.splitAt . int . integer
 
 {-|
   HSpec properties that each implementation of CanBeInteger should satisfy.
diff --git a/src/Numeric/MixedTypes/PreludeHiding.hs b/src/Numeric/MixedTypes/PreludeHiding.hs
--- a/src/Numeric/MixedTypes/PreludeHiding.hs
+++ b/src/Numeric/MixedTypes/PreludeHiding.hs
@@ -18,7 +18,8 @@
 
 import Prelude hiding
   (
-    fromInteger, fromRational, (!!)
+    fromInteger, fromRational
+    , (!!), length, replicate, take, drop, splitAt
     , Eq(..), Ord(..), Num(..), Fractional(..), RealFrac(..), Floating(..)
     , not, (&&), (||), and, or
     , (^), (^^)
diff --git a/src/Numeric/MixedTypes/Ring.hs b/src/Numeric/MixedTypes/Ring.hs
--- a/src/Numeric/MixedTypes/Ring.hs
+++ b/src/Numeric/MixedTypes/Ring.hs
@@ -53,7 +53,7 @@
 {----- Ring -----}
 
 type CanAddSubMulBy t s =
-  (CanAddThis t s, CanSubThis t s, CanMulBy t s)
+  (CanAddThis t s, CanSubThis t s, CanSub s t, SubType s t ~ t, CanMulBy t s)
 
 type RingPre t =
   (CanNegSameType t, CanAddSameType t, CanSubSameType t, CanMulSameType t,
