diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,4 @@
+#! /usr/bin/env runhaskell
+
+> import Distribution.Simple
+> main = defaultMain
diff --git a/her-lexer.cabal b/her-lexer.cabal
--- a/her-lexer.cabal
+++ b/her-lexer.cabal
@@ -1,5 +1,5 @@
 name:               her-lexer
-version:            0.1
+version:            0.1.1
 homepage:           http://personal.cis.strath.ac.uk/~conor/pub/she
 synopsis:           A lexer for Haskell source code.
 description:
diff --git a/src/Language/Haskell/Her/FromClutterToLines.lhs b/src/Language/Haskell/Her/FromClutterToLines.lhs
--- a/src/Language/Haskell/Her/FromClutterToLines.lhs
+++ b/src/Language/Haskell/Her/FromClutterToLines.lhs
@@ -1,8 +1,9 @@
 >module Language.Haskell.Her.FromClutterToLines where
+
 >import Language.Haskell.Her.HaLay
 >import Data.List.Split
 
-| When we get the tokss from her-parser's ready, they're a bit cluttered.  I'm not sure what Dr. McBride had in mind when he made that mess.  But this doesn't mater, from this clutter we can create a list of lines which is aware of haskell's brackets.  If a multi-line clause is inside brackets, then we keep the whole section in the same "line".
+> -- | When we get the tokss from her-parser's ready, they're a bit cluttered.  I'm not sure what Dr. McBride had in mind when he made that mess.  But this doesn't mater, from this clutter we can create a list of lines which is aware of haskell's brackets.  If a multi-line clause is inside brackets, then we keep the whole section in the same "line".
 
 >fromClutterToLines :: [[Tok]] -> [[Tok]]
 >fromClutterToLines tokss =
diff --git a/src/Language/Haskell/Her/HaLay.lhs b/src/Language/Haskell/Her/HaLay.lhs
--- a/src/Language/Haskell/Her/HaLay.lhs
+++ b/src/Language/Haskell/Her/HaLay.lhs
@@ -144,9 +144,30 @@
 >          (Bra b, Clo b') | b == b' -> (reverse acss, its')
 >          (m, Ope b) -> case getChunks (Bra b) [] its' of
 >            (cs, its) -> getChunks m (B b cs : acss) its
->          (m, KW e) | elem e lakeys -> case getLines (Seek m e) [] its' of
->            (css, its) -> getChunks m ((L e css) : acss) its
+>          (m, KW e) | elem e lakeys ->
+>             -- First, we test if our new block starts with some { curlies.
+>             case searchCurlies [] its' of
+>             -- If so, we read these in as brackets. 
+
+              Just (css,its) -> case getLines (Seek (Bra Crl) e) [] its of
+                (css',its'') -> getChunks m ((L e (css:css')) : acss) its''
+
+>              Just (css,its) -> case getChunks (Bra Crl) [] its of
+>                (css',its'') -> getChunks m ((L e ((css++((B Crl css'):[])):[])) : acss) its''
+
+>             -- Otherwise, we read normally.
+>              Nothing -> case getLines (Seek m e) [] its' of
+>                (css, its) -> getChunks m ((L e css) : acss) its
 >          _ -> getChunks m (t : acss) its'
+
+> searchCurlies :: [Tok] -> [(Int,Tok)] -> Maybe ([Tok],[(Int,Tok)])
+> searchCurlies toks ((_,upTok):unprocessedToks) =
+>  case upTok of
+>   (Spc _) -> searchCurlies (upTok:toks) unprocessedToks
+>   (NL _)  -> searchCurlies (upTok:toks) unprocessedToks
+>   (Com _) -> searchCurlies (upTok:toks) unprocessedToks
+>   (Ope Crl) -> Just (toks,unprocessedToks)
+>   _ -> Nothing
 
  getChunks :: ChunkMode -> [Tok] -> [(Int, Tok)] -> ([Tok], [(Int, Tok)])
  getChunks _ acc [] = (reverse acc, [])
