diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,9 +1,13 @@
-# Changelog for pairing
+# Change log for pairing
 
+## 0.4.2
+
+* Fix overlapping instances of `Ord`.
+
 ## 0.4.1
 
-* Add mclwasm compatible serialisation
-* Add efficient storage representation of an elliptic curve point over prime fields
+* Add mclwasm compatible serialisation.
+* Add efficient storage representation of an elliptic curve point over prime fields.
 
 ## 0.4
 
@@ -15,13 +19,13 @@
 
 ## 0.3
 
-- Square root calculation on Fq2
-- Both square roots returned on Fq
-- Point serialisation for G1, G2 and GT
+- Square root calculation on Fq2.
+- Both square roots returned on Fq.
+- Point serialisation for G1, G2 and GT.
 
 ## 0.2
 
-* Adds Shallue van de Woestijne encoding for curve hashing.
+* Add Shallue van de Woestijne encoding for curve hashing.
 
 ## 0.1
 
diff --git a/bench/BenchPairing.hs b/bench/BenchPairing.hs
--- a/bench/BenchPairing.hs
+++ b/bench/BenchPairing.hs
@@ -29,37 +29,37 @@
 testFr_2 = 18361718052247311177607809961708721447660708684581683997732416822928487385039
 
 testFq2_1 :: Fq.Fq2
-testFq2_1 = fromList
+testFq2_1 = toField
   [ 19908898611787582971615951530393785823319364696376311494770162270472288380562
   , 2444690988583914246674870181013910409542697083717824402984851238236041783759 ]
 
 testFq2_2 :: Fq.Fq2
-testFq2_2 = fromList
+testFq2_2 = toField
   [ 176307305890807650390915550856467756101144733976249050387177647283239486934
   , 9913547941088878400547309488585076816688958962210000330808066250849942240036 ]
 
 testFq6_1 :: Fq.Fq6
-testFq6_1 = fromList
-  [ fromList
+testFq6_1 = toField
+  [ toField
     [ 8727269669017421992537561450387212506711577304101544328736696625792447584819
     , 14548604791762199086915107662335514800873255588931510951007415299299859294564 ]
-  , fromList
+  , toField
     [ 12226353852518517213098257637254082040554292743096797524265221809863992104040
     , 12690801089710533803594523982915673248220237967492611523932652691226365708512 ]
-  , fromList
+  , toField
     [ 18336930404004840796680535059992401039831316705513753839479258873269709495858
     , 21634580953983557175729336703450663797341055784728343534694506874757389871868 ]
   ]
 
 testFq6_2 :: Fq.Fq6
-testFq6_2 = fromList
-  [ fromList
+testFq6_2 = toField
+  [ toField
     [ 21427158918811764040959407626476119248515601360702754918240300689672054041331
     , 12750457256357562507331331307761996193149796736574153338180573114576232473092 ]
-  , fromList
+  , toField
     [ 19307896751125425658868292427117755307914453765471505616446813557567103424424
     , 11511704315039881938763578963465960361806962511008317843374696569679546862720 ]
-  , fromList
+  , toField
     [ 16856354813335682789816416666746807604324955216244680818919639213184967817815
     , 10563739714379631354612735346769824530666877338817980746884577737330686430079 ]
   ]
@@ -108,22 +108,22 @@
 
 test_g2_1 :: Group.G2
 test_g2_1 = Point.Point
-  (fromList
+  (toField
     [ 7883069657575422103991939149663123175414599384626279795595310520790051448551
     , 8346649071297262948544714173736482699128410021416543801035997871711276407441 ]
   )
-  (fromList
+  (toField
     [ 3343323372806643151863786479815504460125163176086666838570580800830972412274
     , 16795962876692295166012804782785252840345796645199573986777498170046508450267 ]
   )
 
 test_g2_2 :: Group.G2
 test_g2_2 = Point.Point
-  (fromList
+  (toField
     [ 3243608945627071355385114622932133122087974401138668305336804137033580208808
     , 2403320200938270623472619242963887735471304641554649101656774729615146397552 ]
   )
-  (fromList
+  (toField
     [ 7590136428571280465598215063146990078553196689176860926896020586846726844869
     , 8036135660414384292776446470327730948618639044617118659780848199544099832559 ]
   )
diff --git a/pairing.cabal b/pairing.cabal
--- a/pairing.cabal
+++ b/pairing.cabal
@@ -1,11 +1,13 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.31.2.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 80d5b7b460cd15c793b86c61d342bfb609e71fb776fcd8c1d7532aaf6e978334
+-- hash: 8756cf9d25050b2735941c749a9fa41f381c79117dae3353b4453d7d1318c65e
 
 name:           pairing
-version:        0.4.1
+version:        0.4.2
 synopsis:       Bilinear pairings
 description:    Optimal Ate pairing over Barreto-Naehrig curves
 category:       Cryptography
@@ -15,10 +17,9 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
-    ChangeLog.md
     README.md
+    ChangeLog.md
 
 source-repository head
   type: git
@@ -44,7 +45,7 @@
       Paths_pairing
   hs-source-dirs:
       src
-  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes BangPatterns DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric GeneralizedNewtypeDeriving MultiParamTypeClasses TypeApplications
+  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes BangPatterns DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric GeneralizedNewtypeDeriving MultiParamTypeClasses PatternSynonyms TypeApplications
   ghc-options: -fwarn-tabs -fwarn-incomplete-patterns -fwarn-incomplete-record-updates -fwarn-redundant-constraints -fwarn-implicit-prelude -fwarn-overflowed-literals -fwarn-orphans -fwarn-identities -fwarn-dodgy-exports -fwarn-dodgy-imports -fwarn-duplicate-exports -fwarn-overlapping-patterns -fwarn-missing-fields -fwarn-missing-methods -fwarn-missing-signatures -fwarn-noncanonical-monad-instances -fwarn-unused-pattern-binds -fwarn-unused-type-patterns -fwarn-unrecognised-pragmas -fwarn-wrong-do-bind -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-matches -fno-warn-unused-do-bind -Wmissing-export-lists
   build-depends:
       MonadRandom
@@ -54,7 +55,7 @@
     , binary
     , bytestring
     , errors
-    , galois-field >=0.2
+    , galois-field ==0.4.0
     , integer-logarithms
     , memory
     , protolude >=0.2
@@ -88,7 +89,7 @@
   hs-source-dirs:
       src
       tests
-  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses TypeApplications TypeSynonymInstances
+  default-extensions: LambdaCase RecordWildCards OverloadedStrings NoImplicitPrelude FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses PatternSynonyms TypeApplications TypeSynonymInstances
   build-depends:
       MonadRandom
     , QuickCheck
@@ -97,7 +98,7 @@
     , binary
     , bytestring
     , errors
-    , galois-field >=0.2
+    , galois-field ==0.4.0
     , hexstring
     , integer-logarithms
     , memory
@@ -119,7 +120,7 @@
   hs-source-dirs:
       src
       bench
-  default-extensions: NoImplicitPrelude OverloadedStrings FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses TypeApplications
+  default-extensions: NoImplicitPrelude OverloadedStrings FlexibleInstances FlexibleContexts ScopedTypeVariables RankNTypes DataKinds DeriveAnyClass DeriveFunctor DeriveGeneric MultiParamTypeClasses PatternSynonyms TypeApplications
   build-depends:
       MonadRandom
     , QuickCheck
@@ -129,7 +130,7 @@
     , bytestring
     , criterion
     , errors
-    , galois-field >=0.2
+    , galois-field ==0.4.0
     , integer-logarithms
     , memory
     , protolude >=0.2
diff --git a/src/Pairing/Fq.hs b/src/Pairing/Fq.hs
--- a/src/Pairing/Fq.hs
+++ b/src/Pairing/Fq.hs
@@ -32,7 +32,8 @@
 import Protolude
 
 import Data.ByteString as B (splitAt, length)
-import ExtensionField (ExtensionField, IrreducibleMonic(..), fromField, fromList, t, x)
+import ExtensionField (ExtensionField, IrreducibleMonic(..), fromField, toField,
+                       pattern X, pattern X2, pattern X3, pattern Y)
 import GaloisField (GaloisField(..))
 import Math.NumberTheory.Moduli.Class (powMod)
 import PrimeField (PrimeField, toInt)
@@ -52,7 +53,7 @@
 -- | Quadratic irreducible monic polynomial @f(u) = u^2 + 1@
 data PolynomialU
 instance IrreducibleMonic Fq PolynomialU where
-  split _ = x^2 + 1
+  split _ = X2 + 1
 
 -- | Quadratic extension field of @Fq@ defined as @Fq2 = Fq[u]/<f(u)>@
 type Fq2 = ExtensionField Fq PolynomialU
@@ -60,7 +61,7 @@
 -- | Cubic irreducible monic polynomial @g(v) = v^3 - (9 + u)@
 data PolynomialV
 instance IrreducibleMonic Fq2 PolynomialV where
-  split _ = x^3 - (9 + t x)
+  split _ = X3 - (9 + Y X)
 
 -- | Cubic extension field of @Fq2@ defined as @Fq6 = Fq2[v]/<g(v)>@
 type Fq6 = ExtensionField Fq2 PolynomialV
@@ -68,7 +69,7 @@
 -- | Quadratic irreducible monic polynomial @h(w) = w^2 - v@
 data PolynomialW
 instance IrreducibleMonic Fq6 PolynomialW where
-  split _ = x^2 - t x
+  split _ = X2 - Y X
 
 -- | Quadratic extension field of @Fq6@ defined as @Fq12 = Fq6[w]/<h(w)>@
 type Fq12 = ExtensionField Fq6 PolynomialW
@@ -77,12 +78,6 @@
 -- Instances
 -------------------------------------------------------------------------------
 
-instance Ord Fq where
-  compare = on compare toInt
-
-instance Ord Fq2 where
-  compare = on compare fromField
-
 instance FromX Fq where
   yFromX = fqYforX
   isOdd y = odd (toInt y)
@@ -108,7 +103,7 @@
       (xbs, ybs) = B.splitAt blen bs
     x <- fromRepr bo (1 :: Fq) xbs
     y <- fromRepr bo (1 :: Fq) ybs
-    return (fromList [x, y])
+    return (toField [x, y])
   calcReprLength _ n = 2 * calcReprLength (1 :: Fq) n
 
 instance ByteRepr Fq6 where
@@ -123,7 +118,7 @@
     x <- fromRepr bo (1 :: Fq2) xbs
     y <- fromRepr bo (1 :: Fq2) ybs
     z <- fromRepr bo (1 :: Fq2) zbs
-    return (fromList [x, y, z])
+    return (toField [x, y, z])
   calcReprLength _ n = 3 * calcReprLength (1 :: Fq2) n
 
 instance ByteRepr Fq12 where
@@ -136,7 +131,7 @@
       (xbs, ybs) = B.splitAt blen bs
     x <- fromRepr bo (1 :: Fq6) xbs
     y <- fromRepr bo (1 :: Fq6) ybs
-    return (fromList [x, y])
+    return (toField [x, y])
   calcReprLength _ n = 2 * calcReprLength (1 :: Fq6) n
 
 -------------------------------------------------------------------------------
@@ -159,7 +154,7 @@
   let a0 = pow alpha _q * alpha
   if a0 == -1 then Nothing else do
     let x0 = a1 * a
-    if alpha == -1 then Just (a1 * fromList [0, 1]) else do
+    if alpha == -1 then Just (a1 * toField [0, 1]) else do
       let b = pow (alpha + 1) qm1by2
       Just (b * x0)
   where
@@ -188,15 +183,15 @@
 
 -- | Cubic non-residue in @Fq2@
 xi :: Fq2
-xi = fromList [fromInteger _xiA, fromInteger _xiB]
+xi = toField [fromInteger _xiA, fromInteger _xiB]
 
 -- | Multiply by @xi@ (cubic nonresidue in @Fq2@) and reorder coefficients
 mulXi :: Fq6 -> Fq6
 mulXi w = case fromField w of
-  [x, y, z] -> fromList [z * xi, x, y]
-  [x, y]    -> fromList [0, x, y]
-  [x]       -> fromList [0, x]
-  []        -> fromList []
+  [x, y, z] -> toField [z * xi, x, y]
+  [x, y]    -> toField [0, x, y]
+  [x]       -> toField [0, x]
+  []        -> toField []
   _         -> panic "mulXi not exhaustive."
 {-# INLINE mulXi #-}
 
@@ -233,29 +228,29 @@
 -- | Conjugation
 fq2Conj :: Fq2 -> Fq2
 fq2Conj x = case fromField x of
-  [y, z] -> fromList [y, -z]
-  [y]    -> fromList [y]
+  [y, z] -> toField [y, -z]
+  [y]    -> toField [y]
   []     -> 0
   _      -> panic "fq2Conj not exhaustive."
 
 -- | Multiplication by a scalar in @Fq@
 fq2ScalarMul :: Fq -> Fq2 -> Fq2
-fq2ScalarMul a x = fromList [a] * x
+fq2ScalarMul a x = toField [a] * x
 
 -- | Conjugation
 fq12Conj :: Fq12 -> Fq12
 fq12Conj x = case fromField x of
-  [y, z] -> fromList [y, -z]
-  [y]    -> fromList [y]
+  [y, z] -> toField [y, -z]
+  [y]    -> toField [y]
   []     -> 0
   _      -> panic "fq12Conj not exhaustive."
 
 -- | Create a new value in @Fq12@ by providing a list of twelve coefficients
 -- in @Fq@, should be used instead of the @Fq12@ constructor.
 construct :: [Fq] -> Fq12
-construct [a, b, c, d, e, f, g, h, i, j, k, l] = fromList
-  [ fromList [fromList [a, b], fromList [c, d], fromList [e, f]]
-  , fromList [fromList [g, h], fromList [i, j], fromList [k, l]] ]
+construct [a, b, c, d, e, f, g, h, i, j, k, l] = toField
+  [ toField [toField [a, b], toField [c, d], toField [e, f]]
+  , toField [toField [g, h], toField [i, j], toField [k, l]] ]
 construct _ = panic "Invalid arguments to fq12"
 
 -- | Deconstruct a value in @Fq12@ into a list of twelve coefficients in @Fq@.
@@ -280,4 +275,4 @@
     convert :: [[Integer]] -> [[Fq2]] -> [[Fq2]]
     convert = zipWith (zipWith (\x y -> pow xi ((x * (_q - 1)) `div` 6) * y))
     collapse :: [[Fq2]] -> Fq12
-    collapse = fromList . map fromList
+    collapse = toField . map toField
diff --git a/src/Pairing/Fr.hs b/src/Pairing/Fr.hs
--- a/src/Pairing/Fr.hs
+++ b/src/Pairing/Fr.hs
@@ -25,9 +25,6 @@
 -- | Prime field @Fr@ with characteristic @_r@
 type Fr = PrimeField 21888242871839275222246405745257275088548364400416034343698204186575808495617
 
-instance Ord Fr where
-  compare = on compare toInt
-
 -------------------------------------------------------------------------------
 -- Roots of unity
 -------------------------------------------------------------------------------
diff --git a/src/Pairing/Group.hs b/src/Pairing/Group.hs
--- a/src/Pairing/Group.hs
+++ b/src/Pairing/Group.hs
@@ -24,7 +24,7 @@
 
 import Control.Monad.Random (MonadRandom)
 import Data.Semigroup ((<>))
-import ExtensionField (fromList)
+import ExtensionField (toField)
 import GaloisField (GaloisField(..))
 import PrimeField (toInt)
 import Test.QuickCheck (Arbitrary(..), Gen)
@@ -104,11 +104,11 @@
 g2 :: G2
 g2 = Point x y
   where
-    x = fromList
+    x = toField
       [ 10857046999023057135944570762232829481370756359578518086990519993285655852781
       , 11559732032986387107991004021392285783925812861821192530917403151452391805634 ]
 
-    y = fromList
+    y = toField
       [ 8495653923123431417604973247489272438418190587263600148770280649306958101930
       , 4082367875863433681332203403145435568316851327593401208105741076214120093531 ]
 
@@ -122,7 +122,7 @@
 -- equation
 isOnCurveG2 :: G2 -> Bool
 isOnCurveG2 Infinity    = True
-isOnCurveG2 (Point x y) = pow y 2 == pow x 3 + fromList [fromInteger _b] / xi
+isOnCurveG2 (Point x y) = pow y 2 == pow x 3 + toField [fromInteger _b] / xi
 
 -- | Test whether a value is an _r-th root of unity
 isInGT :: GT -> Bool
@@ -134,7 +134,7 @@
 
 -- | Parameter for twisted curve over Fq2
 b2 :: Fq2
-b2 = fromList [b1] / xi
+b2 = toField [b1] / xi
 
 -------------------------------------------------------------------------------
 -- Generators
diff --git a/src/Pairing/Pairing.hs b/src/Pairing/Pairing.hs
--- a/src/Pairing/Pairing.hs
+++ b/src/Pairing/Pairing.hs
@@ -12,7 +12,7 @@
 import Protolude
 
 import Data.List ((!!))
-import ExtensionField (fromList)
+import ExtensionField (toField)
 import GaloisField (GaloisField(..))
 
 import Pairing.Fq
@@ -89,7 +89,7 @@
 {-# INLINEABLE mulBy024 #-}
 mulBy024 :: Fq12 -> EllCoeffs -> Fq12
 mulBy024 this (EllCoeffs ell0 ellVW ellVV)
-  = let a = fromList [fromList [ell0, 0, ellVV], fromList [0, ellVW, 0]]
+  = let a = toField [toField [ell0, 0, ellVV], toField [0, ellVW, 0]]
     in this * a
 
 -------------------------------------------------------------------------------
diff --git a/tests/TestFields.hs b/tests/TestFields.hs
--- a/tests/TestFields.hs
+++ b/tests/TestFields.hs
@@ -63,7 +63,7 @@
 unit_uRoot :: Assertion
 unit_uRoot = u^2 @=? -1
   where
-    u = fromList [0, 1] :: Fq2
+    u = toField [0, 1] :: Fq2
 
 unit_fq2Pow :: Assertion
 unit_fq2Pow = do
@@ -91,8 +91,8 @@
 unit_vRoot :: Assertion
 unit_vRoot = v^3 @=? 9 + u
   where
-    v = fromList [0, 1] :: Fq6
-    u = fromList [fromList [0, 1]]
+    v = toField [0, 1] :: Fq6
+    u = toField [toField [0, 1]]
 
 -------------------------------------------------------------------------------
 -- Fq12
@@ -105,8 +105,8 @@
 unit_wRoot :: Assertion
 unit_wRoot = w^2 @=? v
   where
-    w = fromList [0, 1] :: Fq12
-    v = fromList [fromList [0, 1]]
+    w = toField [0, 1] :: Fq12
+    v = toField [toField [0, 1]]
 
 -------------------------------------------------------------------------------
 -- Fr
diff --git a/tests/TestGroups.hs b/tests/TestGroups.hs
--- a/tests/TestGroups.hs
+++ b/tests/TestGroups.hs
@@ -14,7 +14,7 @@
 import Pairing.Serialize.Types
 import Pairing.Serialize.Jivsov
 import Pairing.Serialize.MCLWasm
-import ExtensionField (fromList)
+import ExtensionField (toField)
 import Test.Tasty
 import Test.Tasty.HUnit
 import Test.QuickCheck.Instances
@@ -153,8 +153,8 @@
 
 unit_g2SerializeCompMCLWasm :: Assertion
 unit_g2SerializeCompMCLWasm = do
-  let fq2x = fromList ([6544947162799133903546594463061476713923884516504213524167597810128866380952,  1440920261338086273401746857890494196693993714596389710801111883382590011446] :: [Fq]) :: Fq2
-  let fq2y = fromList ([7927561822697823059695659663409507948904771679743888257723485312240532833493, 2189896469972867352153851473169755334250894385106289486234761879693772655721] :: [Fq]) :: Fq2
+  let fq2x = toField ([6544947162799133903546594463061476713923884516504213524167597810128866380952,  1440920261338086273401746857890494196693993714596389710801111883382590011446] :: [Fq]) :: Fq2
+  let fq2y = toField ([7927561822697823059695659663409507948904771679743888257723485312240532833493, 2189896469972867352153851473169755334250894385106289486234761879693772655721] :: [Fq]) :: Fq2
   let g2pt = Point fq2x fq2y
   let hs = hexString "980cf2acdb1645247a512f91cbbbbb1f4fa2328c979ae26d550ec7b80e4f780e36f82f7090c4d516a2257fcee804df8421af857b2f80ffccfc11c6f52e882f83"
   let Right np = unserializePoint MCLWASM g2 (toSL $ H.toBytes hs)
diff --git a/tests/TestPairing.hs b/tests/TestPairing.hs
--- a/tests/TestPairing.hs
+++ b/tests/TestPairing.hs
@@ -20,11 +20,11 @@
 
 inpG2 :: G2
 inpG2 = Point
-        (fromList
+        (toField
          [ 2725019753478801796453339367788033689375851816420509565303521482350756874229
          , 7273165102799931111715871471550377909735733521218303035754523677688038059653 ]
         )
-        (fromList
+        (toField
          [ 2512659008974376214222774206987427162027254181373325676825515531566330959255
          , 957874124722006818841961785324909313781880061366718538693995380805373202866 ]
         )
