diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,8 @@
+0.6.3
+-------
+* `reflection` 2 support
+* Compiles warning-free on GHC 7.10
+
 0.6.2
 -----
 * `contravariant` 1.0 support
diff --git a/folds.cabal b/folds.cabal
--- a/folds.cabal
+++ b/folds.cabal
@@ -1,6 +1,6 @@
 name:          folds
 category:      Data, Comonads, Enumerator
-version:       0.6.2
+version:       0.6.3
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
@@ -55,9 +55,9 @@
     contravariant     >= 0.4.2 && < 2,
     lens              >= 4     && < 5,
     pointed           >= 4     && < 5,
-    profunctors       >= 4     && < 5,
-    reflection        >= 1.3   && < 2,
-    semigroupoids     >= 4     && < 5,
+    profunctors       >= 4     && < 6,
+    reflection        >= 1.3   && < 3,
+    semigroupoids     >= 4     && < 6,
     tagged            >= 0.7   && < 1,
     transformers      >= 0.3   && < 0.5,
     vector            >= 0.10  && < 0.11
@@ -113,6 +113,3 @@
       filepath,
       mtl,
       semigroups     >= 0.9
-
-  if impl(ghc<7.6.1)
-    ghc-options: -Werror
diff --git a/src/Data/Fold.hs b/src/Data/Fold.hs
--- a/src/Data/Fold.hs
+++ b/src/Data/Fold.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DefaultSignatures #-}
 -----------------------------------------------------------------------------
 -- |
@@ -210,7 +211,9 @@
 class AsRM1 p => AsL1' p where
   -- | Scan homomorphism to a strict Mealy machine
   asL1' :: p a b -> L1' a b
+#ifndef HLINT
   default asL1' :: AsL' p => p a b -> L1' a b
+#endif
   asL1' = asL1'.asL'
 
 instance AsL1' L1' where
diff --git a/src/Data/Fold/Class.hs b/src/Data/Fold/Class.hs
--- a/src/Data/Fold/Class.hs
+++ b/src/Data/Fold/Class.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE DefaultSignatures #-}
 {-# LANGUAGE Trustworthy #-}
@@ -8,7 +9,9 @@
   ) where
 
 import Control.Lens
+#if __GLASGOW_HASKELL__ < 710
 import Data.Foldable
+#endif
 import Data.Fold.Internal
 import Data.Profunctor.Unsafe
 
@@ -18,18 +21,24 @@
 
 class Choice p => Scan p where
   prefix1 :: a -> p a b -> p a b
+#ifndef HLINT
   default prefix1 :: Folding p => a -> p a b -> p a b
+#endif
   prefix1 = prefix . An
   {-# INLINE prefix1 #-}
 
   postfix1 :: p a b -> a -> p a b
+#ifndef HLINT
   default postfix1 :: Folding p => p a b -> a -> p a b
+#endif
   postfix1 p = postfix p . An
   {-# INLINE postfix1 #-}
 
   -- | Apply a 'Folding' to a single element of input
   run1 :: a -> p a b -> b
+#ifndef HLINT
   default run1 :: Folding p => a -> p a b -> b
+#endif
   run1 = run . An
   {-# INLINE run1 #-}
 
diff --git a/src/Data/Fold/Internal.hs b/src/Data/Fold/Internal.hs
--- a/src/Data/Fold/Internal.hs
+++ b/src/Data/Fold/Internal.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE UndecidableInstances #-}
 {-# LANGUAGE ScopedTypeVariables #-}
@@ -15,13 +16,19 @@
   , Box(..)
   ) where
 
+#if __GLASGOW_HASKELL__ < 710
 import Control.Applicative
+#endif
 import Data.Data (Data, Typeable)
+#if __GLASGOW_HASKELL__ < 710
 import Data.Foldable
 import Data.Monoid hiding (First, Last)
+#endif
 import Data.Proxy (Proxy(Proxy))
 import Data.Reflection
+#if __GLASGOW_HASKELL__ < 710
 import Data.Traversable
+#endif
 
 -- | Reversed '[]'
 data SnocList a = Snoc (SnocList a) a | Nil
diff --git a/src/Data/Fold/L1'.hs b/src/Data/Fold/L1'.hs
--- a/src/Data/Fold/L1'.hs
+++ b/src/Data/Fold/L1'.hs
@@ -1,5 +1,6 @@
-{-# LANGUAGE ExistentialQuantification #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE Trustworthy #-}
+{-# LANGUAGE ExistentialQuantification #-}
 module Data.Fold.L1'
   ( L1'(..)
   ) where
@@ -64,7 +65,7 @@
 instance Monad (L1' a) where
   return x = L1' (\() -> x) (\() _ -> ()) (\_ -> ())
   {-# INLINE return #-}
-  m >>= f = L1' (\xs a -> walk xs (f a)) Snoc1 First <*> m where
+  m >>= f = L1' (\xs a -> walk xs (f a)) Snoc1 First <*> m
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
@@ -100,7 +101,7 @@
 instance Profunctor L1' where
   dimap f g (L1' k h z) = L1' (g.k) (\a -> h a . f) (z.f)
   {-# INLINE dimap #-}
-  lmap f (L1' k h z) = L1' (k) (\a -> h a . f) (z.f)
+  lmap f (L1' k h z) = L1' k (\a -> h a . f) (z.f)
   {-# INLINE lmap #-}
   rmap g (L1' k h z) = L1' (g.k) h z
   {-# INLINE rmap #-}
diff --git a/src/Data/Fold/L1.hs b/src/Data/Fold/L1.hs
--- a/src/Data/Fold/L1.hs
+++ b/src/Data/Fold/L1.hs
@@ -65,7 +65,7 @@
 instance Monad (L1 a) where
   return x = L1 (\() -> x) (\() _ -> ()) (\_ -> ())
   {-# INLINE return #-}
-  m >>= f = L1 (\xs a -> walk xs (f a)) Snoc1 First <*> m where
+  m >>= f = L1 (\xs a -> walk xs (f a)) Snoc1 First <*> m
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
@@ -105,7 +105,7 @@
 instance Profunctor L1 where
   dimap f g (L1 k h z) = L1 (g.k) (\a -> h a . f) (z.f)
   {-# INLINE dimap #-}
-  lmap f (L1 k h z) = L1 (k) (\a -> h a . f) (z.f)
+  lmap f (L1 k h z) = L1 k (\a -> h a . f) (z.f)
   {-# INLINE lmap #-}
   rmap g (L1 k h z) = L1 (g.k) h z
   {-# INLINE rmap #-}
diff --git a/src/Data/Fold/M1.hs b/src/Data/Fold/M1.hs
--- a/src/Data/Fold/M1.hs
+++ b/src/Data/Fold/M1.hs
@@ -68,7 +68,7 @@
 instance Monad (M1 a) where
   return x = M1 (\() -> x) (\_ -> ()) (\() () -> ())
   {-# INLINE return #-}
-  m >>= f = M1 (\xs a -> walk xs (f a)) Tip1 Bin1 <*> m where
+  m >>= f = M1 (\xs a -> walk xs (f a)) Tip1 Bin1 <*> m
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
@@ -108,7 +108,7 @@
 instance Profunctor M1 where
   dimap f g (M1 k h m) = M1 (g.k) (h.f) m
   {-# INLINE dimap #-}
-  lmap f (M1 k h m) = M1 (k) (h.f) m
+  lmap f (M1 k h m) = M1 k (h.f) m
   {-# INLINE lmap #-}
   rmap g (M1 k h m) = M1 (g.k) h m
   {-# INLINE rmap #-}
diff --git a/src/Data/Fold/R1.hs b/src/Data/Fold/R1.hs
--- a/src/Data/Fold/R1.hs
+++ b/src/Data/Fold/R1.hs
@@ -65,7 +65,7 @@
 instance Monad (R1 a) where
   return x = R1 (\() -> x) (\_ () -> ()) (\_ -> ())
   {-# INLINE return #-}
-  m >>= f = R1 (\xs a -> walk xs (f a)) Cons1 Last <*> m where
+  m >>= f = R1 (\xs a -> walk xs (f a)) Cons1 Last <*> m
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
@@ -105,7 +105,7 @@
 instance Profunctor R1 where
   dimap f g (R1 k h z) = R1 (g.k) (h.f) (z.f)
   {-# INLINE dimap #-}
-  lmap f (R1 k h z) = R1 (k) (h.f) (z.f)
+  lmap f (R1 k h z) = R1 k (h.f) (z.f)
   {-# INLINE lmap #-}
   rmap g (R1 k h z) = R1 (g.k) h z
   {-# INLINE rmap #-}
