diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+0.8
+------------------------------------------------
+
+* Removed `Associate`, `AssocKey`, `AssocValue`, `ValueIs`, `KeyIs`, `KeyValue`, `proxyAssocKey`, `proxyAssocValue`, `stringAssokKey`, `xlb`, `:*`, `:|`
+* Reverted deprecation of `Data.Extensible.Tangle`
+
 0.7.1
 ------------------------------------------------
 * Removed `vector` and `prettyprinter` orphans
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.7.1
+version:             0.8
 synopsis:            Extensible, efficient, optics-friendly data types and effects
 homepage:            https://github.com/fumieval/extensible
 bug-reports:         http://github.com/fumieval/extensible/issues
@@ -70,6 +70,7 @@
     , FlexibleInstances
     , PolyKinds
     , CPP
+    , NoStarIsType
   build-depends:       base >= 4.8 && <5
     , aeson
     , bytestring
diff --git a/src/Data/Extensible/Class.hs b/src/Data/Extensible/Class.hs
--- a/src/Data/Extensible/Class.hs
+++ b/src/Data/Extensible/Class.hs
@@ -38,7 +38,6 @@
   , Assoc(..)
   , type (>:)
   , Lookup(..)
-  , Associate
   -- * Misc
   , Head
   , Last
@@ -101,6 +100,3 @@
 type family Last (x :: [k]) :: k where
   Last '[x] = x
   Last (x ': xs) = Last xs
-
-type Associate k v xs = Lookup xs k v
-{-# DEPRECATED Associate "Use Lookup instead" #-}
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
@@ -43,14 +43,6 @@
   , KeyIs
   , TargetIs
   , KeyTargetAre
-  -- * deprecated
-  , AssocKey
-  , AssocValue
-  , ValueIs
-  , KeyValue
-  , proxyAssocKey
-  , stringAssocKey
-  , proxyAssocValue
   -- * Internal
   , LabelPhantom
   , Labelling
@@ -59,9 +51,6 @@
 import Control.DeepSeq (NFData)
 import qualified Data.Aeson as J
 import Data.Coerce
-#if __GLASGOW_HASKELL__ < 802
-import Data.Constraint
-#endif
 #ifdef CASSAVA
 import qualified Data.Csv as Csv
 #endif
@@ -90,7 +79,7 @@
 
 -- | A @'Field' h (k ':> v)@ is @h v@ annotated with the field name @k@.
 --
--- @'Field' :: (v -> *) -> Assoc k v -> *@
+-- @'Field' :: (v -> Type) -> Assoc k v -> Type@
 --
 newtype Field (h :: v -> Type) (kv :: Assoc k v)
   = Field { getField :: h (TargetOf kv) }
@@ -202,13 +191,13 @@
 
 -- | The type of records which contain several fields.
 --
--- @RecordOf :: (v -> *) -> [Assoc k v] -> *@
+-- @RecordOf :: (v -> Type) -> [Assoc k v] -> Type@
 --
 type RecordOf h xs = xs :& Field h
 
 -- | The dual of 'RecordOf'
 --
--- @VariantOf :: (v -> *) -> [Assoc k v] -> *@
+-- @VariantOf :: (v -> Type) -> [Assoc k v] -> Type@
 --
 type VariantOf h xs = xs :/ Field h
 
@@ -314,30 +303,3 @@
 (@==) = (@=)
 {-# INLINE (@==) #-}
 infix 1 @==
-
-type AssocKey kv = KeyOf kv
-{-# DEPRECATED AssocKey "Use KeyOf instead" #-}
-
-type AssocValue kv = TargetOf kv
-{-# DEPRECATED AssocValue "Use TargetOf instead" #-}
-
-type ValueIs = TargetIs
-{-# DEPRECATED ValueIs "Use TargetIs instead" #-}
-
-type KeyValue = KeyTargetAre
-{-# DEPRECATED KeyValue "Use KeyTargetAre instead" #-}
-
-proxyAssocKey :: proxy kv -> Proxy (KeyOf kv)
-proxyAssocKey = proxyKeyOf
-{-# INLINE proxyAssocKey #-}
-{-# DEPRECATED proxyAssocKey "Use proxyKeyOf instead" #-}
-
-proxyAssocValue :: proxy kv -> Proxy (TargetOf kv)
-proxyAssocValue = proxyTargetOf
-{-# INLINE proxyAssocValue #-}
-{-# DEPRECATED proxyAssocValue "Use proxyTargetOf instead" #-}
-
-stringAssocKey :: (IsString a, KnownSymbol (KeyOf kv)) => proxy kv -> a
-stringAssocKey = stringKeyOf
-{-# INLINE stringAssocKey #-}
-{-# DEPRECATED stringAssocKey "Use stringKeyOf instead" #-}
diff --git a/src/Data/Extensible/Label.hs b/src/Data/Extensible/Label.hs
--- a/src/Data/Extensible/Label.hs
+++ b/src/Data/Extensible/Label.hs
@@ -21,17 +21,8 @@
 import Data.Extensible.Wrapper
 
 instance k ~ l => IsLabel k (Proxy l) where
-#if __GLASGOW_HASKELL__ >= 802
   fromLabel = Proxy
-#else
-  fromLabel _ = Proxy
-#endif
 
--- | Specialised version of 'itemAssoc'.
-訊 :: Proxy k -> FieldOptic k
-訊 = itemAssoc
-{-# DEPRECATED 訊 "Use xlb instead" #-}
-
 -- | Specialised version of 'itemAssoc'. Stands for "eXtensible LaBel"
 xlb :: Proxy k -> FieldOptic k
 xlb = itemAssoc
@@ -47,11 +38,7 @@
   , rep ~ rep'
   )
   => IsLabel k (p rep (f rep') -> p s (f t)) where
-#if __GLASGOW_HASKELL__ >= 802
   fromLabel = itemAssoc (Proxy :: Proxy k)
-#else
-  fromLabel _ = itemAssoc (Proxy :: Proxy k)
-#endif
 
 instance (Lookup xs k v, Wrapper h, Repr h v ~ a) => HasField k (RecordOf h xs) a where
   getField = unwrap . hlookup (association :: Membership xs (k >: v))
diff --git a/src/Data/Extensible/Product.hs b/src/Data/Extensible/Product.hs
--- a/src/Data/Extensible/Product.hs
+++ b/src/Data/Extensible/Product.hs
@@ -16,7 +16,6 @@
 module Data.Extensible.Product (
   -- * Basic operations
   (:&)
-  , (:*)
   , nil
   , (<:)
   , (<!)
diff --git a/src/Data/Extensible/Struct.hs b/src/Data/Extensible/Struct.hs
--- a/src/Data/Extensible/Struct.hs
+++ b/src/Data/Extensible/Struct.hs
@@ -202,9 +202,9 @@
 
 -- | The type of extensible products.
 --
--- @(:&) :: [k] -> (k -> *) -> *@
+-- @(:&) :: [k] -> (k -> Type) -> Type@
 --
-data (s :: [k]) :& (h :: k -> *) = HProduct (SmallArray# Any)
+data (s :: [k]) :& (h :: k -> Type) = HProduct (SmallArray# Any)
 
 type h :* xs = xs :& h
 {-# DEPRECATED (:*) "Use :& instead" #-}
diff --git a/src/Data/Extensible/Sum.hs b/src/Data/Extensible/Sum.hs
--- a/src/Data/Extensible/Sum.hs
+++ b/src/Data/Extensible/Sum.hs
@@ -14,7 +14,6 @@
 ------------------------------------------------------------------------
 module Data.Extensible.Sum (
   (:/)(..)
-  , (:|)
   , hoist
   , embed
   , strike
@@ -37,9 +36,6 @@
 --
 data (xs :: [k]) :/ (h :: k -> Type) where
   EmbedAt :: !(Membership xs x) -> h x -> xs :/ h
-
-type h :| xs = xs :/ h
-{-# DEPRECATED (:|) "Use :/ instead" #-}
 
 instance Enum (xs :/ Proxy) where
   fromEnum (EmbedAt m _) = fromIntegral $ getMemberId m
diff --git a/src/Data/Extensible/Tangle.hs b/src/Data/Extensible/Tangle.hs
--- a/src/Data/Extensible/Tangle.hs
+++ b/src/Data/Extensible/Tangle.hs
@@ -32,7 +32,6 @@
 newtype TangleT xs h m a = TangleT
   { unTangleT :: RWST (xs :& Comp (TangleT xs h m) h) () (xs :& Nullable h) m a }
   deriving (Functor, Applicative, Monad)
-{-# DEPRECATED TangleT "Use the tangle package instead" #-}
 
 instance MonadTrans (TangleT xs h) where
   lift = TangleT . lift
@@ -49,7 +48,6 @@
   => FieldName k -> TangleT xs h m (Repr h (k ':> v))
 lasso _ = view _Wrapper <$> hitchAt (association :: Membership xs (k ':> v))
 {-# INLINE lasso #-}
-{-# DEPRECATED lasso "Use the tangle package instead" #-}
 
 -- | Take a value from the tangles. The result is memoized.
 hitchAt :: Monad m => Membership xs x -> TangleT xs h m (h x)
@@ -62,7 +60,6 @@
       a <- unTangleT $ getComp $ hlookup k tangles
       modify $ over (pieceAt k) $ const $ Nullable $ Just a
       return a
-{-# DEPRECATED hitchAt "Use the tangle package instead" #-}
 
 -- | Run a 'TangleT' action and return the result and the calculated values.
 runTangleT :: Monad m
@@ -73,7 +70,6 @@
 runTangleT tangles rec0 (TangleT m) = (\(a, s, _) -> (a, s))
   <$> runRWST m tangles rec0
 {-# INLINE runTangleT #-}
-{-# DEPRECATED runTangleT "Use the tangle package instead" #-}
 
 -- | Run a 'TangleT' action.
 evalTangleT :: Monad m
@@ -83,7 +79,6 @@
   -> m a
 evalTangleT tangles rec0 (TangleT m) = fst <$> evalRWST m tangles rec0
 {-# INLINE evalTangleT #-}
-{-# DEPRECATED evalTangleT "Use the tangle package instead" #-}
 
 -- | Run tangles and collect all the results as a 'Record'.
 runTangles :: Monad m
