diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,6 +1,6 @@
 # mixed-types-num change log
 
-* v 0.6.0 2024-09-21
+* v 0.6.1 2024-09-21
   * Ring now requires HasIntegersWithSample instead of HasIntegers
   * Field now requires HasRationalsWithSample instead of HasRationals
 * v 0.5.12 2023-08-14
diff --git a/mixed-types-num.cabal b/mixed-types-num.cabal
--- a/mixed-types-num.cabal
+++ b/mixed-types-num.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           mixed-types-num
-version:        0.6.0
+version:        0.6.1
 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/Literals.hs b/src/Numeric/MixedTypes/Literals.hs
--- a/src/Numeric/MixedTypes/Literals.hs
+++ b/src/Numeric/MixedTypes/Literals.hs
@@ -40,6 +40,7 @@
   -- * Generalised if-then-else
   , HasIfThenElse(..), HasIfThenElseSameType
   -- * Convenient conversions
+  , WithSample(..)
   , CanBeInteger, integer, integers, HasIntegers, fromInteger_, HasIntegersWithSample, fromIntegerWithSample
   , CanBeInt, int, ints
   , CanBeRational, rational, rationals, HasRationals, fromRational_, HasRationalsWithSample, fromRationalWithSample
@@ -133,9 +134,11 @@
 fromInteger_ :: (HasIntegers t) => Integer -> t
 fromInteger_ = convertExactly
 
-type HasIntegersWithSample t = ConvertibleExactly (t, Integer) t
+data WithSample s t = WithSample s t
+
+type HasIntegersWithSample t = ConvertibleExactly (WithSample t Integer) t
 fromIntegerWithSample :: (HasIntegersWithSample t) => t -> Integer -> t
-fromIntegerWithSample sampleT n = convertExactly (sampleT, n)
+fromIntegerWithSample sampleT n = convertExactly (WithSample sampleT n)
 
 (!!) :: (CanBeInteger n) => [a] -> n -> a
 list !! ix = List.genericIndex list (integer ix)
@@ -194,9 +197,9 @@
 fromRational_ :: (HasRationals t) => Rational -> t
 fromRational_ = convertExactly
 
-type HasRationalsWithSample t = ConvertibleExactly (t, Rational) t
+type HasRationalsWithSample t = ConvertibleExactly (WithSample t Rational) t
 fromRationalWithSample :: (HasRationalsWithSample t) => t -> Rational -> t
-fromRationalWithSample sampleT q = convertExactly (sampleT, q)
+fromRationalWithSample sampleT q = convertExactly (WithSample sampleT q)
 
 type CanBeDouble t = Convertible t Double
 double :: (CanBeDouble t) => t -> Double
@@ -229,8 +232,8 @@
 instance ConvertibleExactly Int Integer
 
 -- HasIntegersWithSample Integer
-instance ConvertibleExactly (Integer, Integer) Integer where
-  safeConvertExactly (_sample, value) = safeConvert value
+instance ConvertibleExactly (WithSample Integer Integer) Integer where
+  safeConvertExactly (WithSample _ value) = safeConvert value
 
 -- CanBeInt Int
 instance ConvertibleExactly Int Int where
@@ -247,12 +250,12 @@
 instance ConvertibleExactly Integer Rational
 
 -- HasIntegersWithSample Rational
-instance ConvertibleExactly (Rational, Integer) Rational where
-  safeConvertExactly (_sample, value) = safeConvert value
+instance ConvertibleExactly (WithSample Rational Integer) Rational where
+  safeConvertExactly (WithSample _sample value) = safeConvert value
 
 -- HasRationalsWithSample Rational
-instance ConvertibleExactly (Rational, Rational) Rational where
-  safeConvertExactly (_sample, value) = safeConvertExactly value
+instance ConvertibleExactly (WithSample Rational Rational) Rational where
+  safeConvertExactly (WithSample _ value) = safeConvertExactly value
 
 -- HasIntegers Double
 instance ConvertibleExactly Integer Double where
@@ -350,13 +353,13 @@
 
 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
+  ConvertibleExactly (WithSample (CollectErrors es t) Integer) (CollectErrors es t) where
+  safeConvertExactly (WithSample _ 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
+  ConvertibleExactly (WithSample (CollectErrors es t) Rational) (CollectErrors es t) where
+  safeConvertExactly (WithSample _sample value) = fmap pure $ safeConvertExactly value
 
 
 $(declForTypes
