diff --git a/she.cabal b/she.cabal
--- a/she.cabal
+++ b/she.cabal
@@ -1,5 +1,5 @@
 name:               she
-version:            0.2
+version:            0.3
 homepage:           http://personal.cis.strath.ac.uk/~conor/pub/she
 synopsis:           A Haskell preprocessor adding miscellaneous features
 description:
diff --git a/src/HaLay.lhs b/src/HaLay.lhs
--- a/src/HaLay.lhs
+++ b/src/HaLay.lhs
@@ -251,9 +251,15 @@
 > tender (L _ _ ) = True
 > tender t = elem t [Semi, Sym "=", Sym ",", Sym "|", KW "in", KW "deriving"]
 
+> tender' :: Tok -> Bool  -- class and instance headers ended by where or eol
+> tender' (L _ _ ) = True
+> tender' _ = False
+
 > exTyMu :: [Tok] -> Maybe [Tok]
 > exTyMu (t : ts)
->   | elem t [Sym "::", KW "class", KW "instance"]
+>   | elem t [KW "class", KW "instance"]
+>   = Just $ t : u' : munge exTyMu vs'
+>   | elem t [Sym "::"]
 >   = Just $ t : u : munge exTyMu vs
 >   | elem t [KW "data", KW "newtype"]
 >   = Just $ case vs of
@@ -265,6 +271,7 @@
 >       _ -> t : u : munge exTyMu vs
 >   where
 >     (u, vs) = first (T Ty . munge tyMu) (span (not . tender) ts)
+>     (u', vs') = first (T Ty . munge tyMu) (span (not . tender') ts)
 > exTyMu _ = Nothing
 
 > oldStyle :: [Tok] -> [Tok]
diff --git a/src/Superclass.lhs b/src/Superclass.lhs
--- a/src/Superclass.lhs
+++ b/src/Superclass.lhs
@@ -101,14 +101,15 @@
 >             [NL ("Dunno.lhs", 0)]])
 >          , [KW "class" : T Ty h : L "where" residue : rest])
 >   where
->     pHdr = (,,) <$> pCxt <* spc <*> uid <*> some (spc *> lid) <* spc
+>     pHdr = (,,) <$> pCxt <* spc <*> uid <*> some (spc *> lid) <* pRest
 >     pCxt = some (tok (/= Sym "=>")) <* teq (Sym "=>")
 >           <|> [] <$ spc
 >     nl = nool tss
 >     nool [] = []
 >     nool (t : _) | isNool t = t
 >     nool (_ : tss) = nool tss
->     (filtrate, residue) = partition isInstance tss
+>     filtrate = filter (\ ts -> isNool ts || isInstance ts) tss
+>     residue = filter (not . isInstance) tss
 >     stuff = residue >>= declares
 >     dstuff = intercalate [Sym ",", Spc " "] (map (return . Lid) stuff)
 >     isInstance (KW "instance" : _) = True
