diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+0.8.1
+------------------------------------------------
+* Added `DefaultOrdered` and `Incremental` instances to `:&`
+* Added an `Incremental` instance to `Field`
+
 0.8
 ------------------------------------------------
 
diff --git a/extensible.cabal b/extensible.cabal
--- a/extensible.cabal
+++ b/extensible.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                extensible
-version:             0.8
+version:             0.8.1
 synopsis:            Extensible, efficient, optics-friendly data types and effects
 homepage:            https://github.com/fumieval/extensible
 bug-reports:         http://github.com/fumieval/extensible/issues
@@ -12,11 +12,11 @@
 license-file:        LICENSE
 author:              Fumiaki Kinoshita
 maintainer:          Fumiaki Kinoshita <fumiexcel@gmail.com>
-copyright:           Copyright (c) 2017 Fumiaki Kinoshita
+copyright:           Copyright (c) 2017-2020 Fumiaki Kinoshita
 category:            Data, Records
 build-type:          Simple
 stability:           experimental
-Tested-With:         GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.2
+Tested-With:         GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.2
 
 extra-source-files:
   examples/*.hs
@@ -79,6 +79,7 @@
     , deepseq
     , ghc-prim
     , hashable
+    , incremental >= 0.3.1
     , membership
     , monad-skeleton >= 0.1.2
     , prettyprinter >= 1.2.1 && <2
diff --git a/src/Data/Extensible/Dictionary.hs b/src/Data/Extensible/Dictionary.hs
--- a/src/Data/Extensible/Dictionary.hs
+++ b/src/Data/Extensible/Dictionary.hs
@@ -38,6 +38,9 @@
 import Data.Extensible.Wrapper
 import Data.Hashable
 import qualified Data.HashMap.Strict as HM
+import Data.Incremental
+import Data.Maybe (isJust)
+import Data.Monoid (Any(..))
 import Data.Text.Prettyprint.Doc
 import qualified Data.Vector.Generic as G
 import qualified Data.Vector.Generic.Mutable as M
@@ -203,6 +206,12 @@
   toNamedRecord = hfoldlWithIndexFor (Proxy :: Proxy (KeyTargetAre KnownSymbol (Instance1 Csv.ToField h)))
     (\k m v -> HM.insert (BC.pack (symbolVal (proxyKeyOf k))) (Csv.toField v) m)
     HM.empty
+
+instance Forall (KeyIs KnownSymbol) xs => Csv.DefaultOrdered (RecordOf h xs) where
+  headerOrder _ = V.fromList $ henumerateFor
+    (Proxy :: Proxy (KeyIs KnownSymbol))
+    (Proxy :: Proxy xs)
+    (\k r -> stringKeyOf k : r) []
 #endif
 
 -- | @'parseJSON' 'J.Null'@ is called for missing fields.
@@ -315,3 +324,19 @@
   baddDicts (EmbedAt i x) = EmbedAt i (Pair (hlookup i bdicts) x)
 
 #endif
+
+instance WrapForall Incremental h xs => Incremental (xs :& h) where
+  type Delta (xs :& h) = xs :& WrapDelta h
+  patch r =
+    hmapWithIndexFor
+      (Proxy :: Proxy (Instance1 Incremental h))
+      (\i (WrapDelta d) -> maybe (hlookup i r) (patch (hlookup i r)) d)
+  diff r =
+    check
+      . hmapWithIndexFor
+        (Proxy :: Proxy (Instance1 Incremental h))
+        (\i x -> WrapDelta (diff (hlookup i r) x))
+    where
+      check t
+        | getAny $ hfoldMap (Any . isJust . unwrapDelta) t = Just t
+        | otherwise = Nothing
diff --git a/src/Data/Extensible/Field.hs b/src/Data/Extensible/Field.hs
--- a/src/Data/Extensible/Field.hs
+++ b/src/Data/Extensible/Field.hs
@@ -64,6 +64,7 @@
 import Data.Extensible.Wrapper
 import Data.Functor.Identity
 import Data.Hashable
+import Data.Incremental (Incremental)
 import Data.String
 import Data.Text.Prettyprint.Doc
 import qualified Data.Vector.Generic as G
@@ -111,6 +112,7 @@
 ND_Field(Csv.FromField)
 ND_Field(Csv.ToField)
 #endif
+ND_Field(Incremental)
 
 newtype instance U.MVector s (Field h x) = MV_Field (U.MVector s (h (TargetOf x)))
 newtype instance U.Vector (Field h x) = V_Field (U.Vector (h (TargetOf x)))
diff --git a/src/Data/Extensible/Internal/Rig.hs b/src/Data/Extensible/Internal/Rig.hs
--- a/src/Data/Extensible/Internal/Rig.hs
+++ b/src/Data/Extensible/Internal/Rig.hs
@@ -47,6 +47,10 @@
 -- | Reifies the structure of 'Iso's
 data Exchange a b s t = Exchange (s -> a) (b -> t)
 
+instance Functor (Exchange a b s) where
+  fmap f (Exchange sa bt) = Exchange sa (f . bt)
+  {-# INLINE fmap #-}
+
 instance Profunctor (Exchange a b) where
   dimap f g (Exchange sa bt) = Exchange (sa . f) (g . bt)
   {-# INLINE dimap #-}
