diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,8 @@
 # mixed-types-num change log
 
+* v 0.6.0 2024-09-21
+  * Ring now requires HasIntegersWithSample instead of HasIntegers
+  * Field now requires HasRationalsWithSample instead of HasRationals
 * v 0.5.12 2023-08-14
   * compatible with ghc 9.6.2
   * remove dependency on mtl
diff --git a/mixed-types-num.cabal b/mixed-types-num.cabal
--- a/mixed-types-num.cabal
+++ b/mixed-types-num.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.35.2.
+-- This file has been generated from package.yaml by hpack version 0.36.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           mixed-types-num
-version:        0.5.12
+version:        0.6.0
 synopsis:       Alternative Prelude with numeric and logic expressions typed bottom-up
 description:    Please see the README on GitHub at <https://github.com/michalkonecny/mixed-types-num#readme>
 category:       Math
diff --git a/src/Numeric/MixedTypes/Field.hs b/src/Numeric/MixedTypes/Field.hs
--- a/src/Numeric/MixedTypes/Field.hs
+++ b/src/Numeric/MixedTypes/Field.hs
@@ -43,7 +43,7 @@
 
 class
   (Ring t,
-   HasRationals t,
+   HasRationalsWithSample t,
    CanPowBy t Integer, CanPowBy t Int,
    CanDivSameType t, CanRecipSameType t,
    CanAddSubMulDivBy t Rational,
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
@@ -40,9 +40,9 @@
   -- * Generalised if-then-else
   , HasIfThenElse(..), HasIfThenElseSameType
   -- * Convenient conversions
-  , CanBeInteger, integer, integers, HasIntegers, fromInteger_
+  , CanBeInteger, integer, integers, HasIntegers, fromInteger_, HasIntegersWithSample, fromIntegerWithSample
   , CanBeInt, int, ints
-  , CanBeRational, rational, rationals, HasRationals, fromRational_
+  , CanBeRational, rational, rationals, HasRationals, fromRational_, HasRationalsWithSample, fromRationalWithSample
   , CanBeDouble, double, doubles
   , ConvertibleExactly(..), convertExactly, convertExactlyTargetSample
   , ConvertResult, ConvertError, convError
@@ -133,6 +133,10 @@
 fromInteger_ :: (HasIntegers t) => Integer -> t
 fromInteger_ = convertExactly
 
+type HasIntegersWithSample t = ConvertibleExactly (t, Integer) t
+fromIntegerWithSample :: (HasIntegersWithSample t) => t -> Integer -> t
+fromIntegerWithSample sampleT n = convertExactly (sampleT, n)
+
 (!!) :: (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!
@@ -190,6 +194,10 @@
 fromRational_ :: (HasRationals t) => Rational -> t
 fromRational_ = convertExactly
 
+type HasRationalsWithSample t = ConvertibleExactly (t, Rational) t
+fromRationalWithSample :: (HasRationalsWithSample t) => t -> Rational -> t
+fromRationalWithSample sampleT q = convertExactly (sampleT, q)
+
 type CanBeDouble t = Convertible t Double
 double :: (CanBeDouble t) => t -> Double
 double = convert
@@ -215,18 +223,38 @@
 convertExactlyTargetSample :: (ConvertibleExactly t1 t2) => t2 -> t1 -> t2
 convertExactlyTargetSample _sample = convertExactly
 
+-- HasIntegers Integer, CanBeInteger Integer
 instance ConvertibleExactly Integer Integer -- use CVT instance by default
+-- CanBeInteger Int
 instance ConvertibleExactly Int Integer
 
+-- HasIntegersWithSample Integer
+instance ConvertibleExactly (Integer, Integer) Integer where
+  safeConvertExactly (_sample, value) = safeConvert value
+
+-- CanBeInt Int
 instance ConvertibleExactly Int Int where
   safeConvertExactly n = Right n
+
+-- CanBeRational Rational
 instance ConvertibleExactly Rational Rational where
   safeConvertExactly q = Right q
 
+-- HasIntegers Int
 instance ConvertibleExactly Integer Int
 instance ConvertibleExactly Int Rational
+-- HasIntegers Rational
 instance ConvertibleExactly Integer Rational
 
+-- HasIntegersWithSample Rational
+instance ConvertibleExactly (Rational, Integer) Rational where
+  safeConvertExactly (_sample, value) = safeConvert value
+
+-- HasRationalsWithSample Rational
+instance ConvertibleExactly (Rational, Rational) Rational where
+  safeConvertExactly (_sample, value) = safeConvertExactly value
+
+-- HasIntegers Double
 instance ConvertibleExactly Integer Double where
   safeConvertExactly n =
     do
@@ -319,6 +347,17 @@
 --   where
 --   safeConvertExactly = fmap pure . safeConvertExactly
 --
+
+instance (HasIntegers t, Monoid es) => 
+  -- HasIntegersWithSample (CollectErrors es t)
+  ConvertibleExactly (CollectErrors es t, Integer) (CollectErrors es t) where
+  safeConvertExactly (_sample, value) = fmap pure $ safeConvertExactly value
+
+instance (HasRationals t, Monoid es) =>   
+  -- HasRationalsWithSample (CollectErrors es t)
+  ConvertibleExactly (CollectErrors es t, Rational) (CollectErrors es t) where
+  safeConvertExactly (_sample, value) = fmap pure $ safeConvertExactly value
+
 
 $(declForTypes
   [[t| Bool |], [t| Integer |], [t| Int |], [t| Rational |], [t| Double |]]
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
@@ -42,7 +42,7 @@
    HasEq t t,
    HasEq t Integer, CanAddSubMulBy t Integer,
    HasEq t Int, CanAddSubMulBy t Int,
-   HasIntegers t) => Ring t
+   HasIntegersWithSample t) => Ring t
 
 instance Ring Integer
 instance Ring (CN Integer)
