diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
 # commonmark
 
+[![hackage release](https://img.shields.io/hackage/v/commonmark.svg?label=hackage)](http://hackage.haskell.org/package/commonmark)
+
 This package provides the core parsing functionality
 for commonmark, together with HTML renderers.
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,12 @@
 # Changelog for commonmark
 
-## Unreleased changes
+## 0.1.0.1
+
+* Set source position when we add a token in gobbleSpaces (#54).
+  This fixes a bug in gobbling indented spaces in some nested contexts.
+* Drop support for ghc 7.10/base 4.8.  We need StrictData.
+  Move SCC annotations; ghc 8.0.x doesn't support them on declarations.
+
+## 0.1.0.0
+
+* Initial release
diff --git a/commonmark.cabal b/commonmark.cabal
--- a/commonmark.cabal
+++ b/commonmark.cabal
@@ -1,6 +1,6 @@
 cabal-version:  2.2
 name:           commonmark
-version:        0.1.0.0
+version:        0.1.0.1
 synopsis:       Pure Haskell commonmark parser.
 description:
    This library provides the core data types and functions
@@ -54,14 +54,12 @@
   hs-source-dirs:
       src
   build-depends:
-      base >=4.7 && <5
+      base >= 4.9 && <5
     , text
     , bytestring
     , containers
     , transformers
     , parsec
-  if !impl(ghc >= 8.0)
-    build-depends: semigroups == 0.18.*
   exposed-modules:
       Commonmark
       Commonmark.Parser
@@ -80,6 +78,7 @@
     ghc-options:  -fwrite-ide-info -hiedir=.hie
   ghc-options: -Wall -fno-warn-unused-do-bind -funbox-small-strict-fields
   default-language: Haskell2010
+  other-extensions: StrictData
 
 test-suite test-commonmark
   type: exitcode-stdio-1.0
@@ -88,7 +87,7 @@
       test
   ghc-options: -threaded -rtsopts -with-rtsopts=-K40K
   build-depends:
-      base >=4.7 && <5
+      base >= 4.9 && <5
     , commonmark
     , text
     , tasty
@@ -104,7 +103,7 @@
   hs-source-dirs:  benchmark
   build-depends:
        commonmark
-     , base >= 4.8 && < 5
+     , base >= 4.9 && < 5
      , text
      , transformers
      , containers
diff --git a/src/Commonmark/Blocks.hs b/src/Commonmark/Blocks.hs
--- a/src/Commonmark/Blocks.hs
+++ b/src/Commonmark/Blocks.hs
@@ -106,7 +106,7 @@
              => [BlockSpec m il bl]
              -> [BlockParser m il bl bl] -- ^ Parsers to run at end
              -> BlockParser m il bl bl
-processLines specs finalParsers = do
+processLines specs finalParsers = {-# SCC processLines #-} do
   let go = eof <|> (processLine specs >> go) in go
   tree <- (nodeStack <$> getState) >>= collapseNodeStack
   updateState $ \st -> st{ nodeStack = [reverseSubforests tree] }
@@ -114,7 +114,6 @@
   tree':_ <- nodeStack <$> getState
   body <- blockConstructor (blockSpec (rootLabel tree')) tree'
   return $! body <> endContent
-{-# SCC processLines #-}
 
 reverseSubforests :: Tree a -> Tree a
 reverseSubforests (Node x cs) = Node x $ map reverseSubforests $ reverse cs
@@ -384,7 +383,7 @@
 runInlineParser :: Monad m
                 => [Tok]
                 -> BlockParser m il bl il
-runInlineParser toks = do
+runInlineParser toks = {-# SCC runInlineParser #-} do
   refmap <- referenceMap <$> getState
   ilParser <- inlineParser <$> getState
   res <- lift $ ilParser refmap toks
@@ -392,7 +391,6 @@
        Right ils -> return $! ils
        Left err  -> mkPT (\_ -> return (Empty (return (Error err))))
                     -- pass up ParseError
-{-# SCC runInlineParser #-}
 
 addRange :: (Monad m, IsBlock il bl)
          => BlockNode m il bl -> bl -> bl
diff --git a/src/Commonmark/Inlines.hs b/src/Commonmark/Inlines.hs
--- a/src/Commonmark/Inlines.hs
+++ b/src/Commonmark/Inlines.hs
@@ -563,7 +563,7 @@
   let left = leftCursor st
       right = rightCursor st
       bottoms = stackBottoms st
-  in case -- trace (prettyCursors left right)
+  in  {-# SCC processEm #-} case -- trace (prettyCursors left right)
           (center left, center right) of
        (_, Nothing) -> reverse $
                          case center (rightCursor st) of
@@ -646,7 +646,6 @@
        _ -> processEm
             st{ rightCursor = moveRight right
               , leftCursor  = moveRight left }
-{-# SCC processEm #-}
 
 -- This only applies to emph delims, not []:
 delimsMatch :: IsInline a
@@ -708,7 +707,7 @@
       bottoms = stackBottoms st
       bottom = absoluteBottom st
   -- trace (prettyCursors left right) $ return $! ()
-  in case (center left, center right) of
+  in  {-# SCC processBs #-} case (center left, center right) of
        (_, Nothing) -> reverse $
                          case center (rightCursor st) of
                             Nothing -> befores (rightCursor st)
@@ -843,7 +842,6 @@
 
        (_, _) -> processBs bracketedSpecs
                 st{ rightCursor = moveRight right }
-{-# SCC processBs #-}
 
 
 -- This just changes a single quote Delim that occurs
diff --git a/src/Commonmark/TokParsers.hs b/src/Commonmark/TokParsers.hs
--- a/src/Commonmark/TokParsers.hs
+++ b/src/Commonmark/TokParsers.hs
@@ -115,10 +115,11 @@
          n | n < numspaces  -> (+ n) <$> gobble' requireAll (numspaces - n)
            | n == numspaces -> return $! n
            | otherwise      -> do
-               let newtok = Tok Spaces
-                      (incSourceColumn pos numspaces)
+               let newpos = incSourceColumn pos numspaces
+               let newtok = Tok Spaces newpos
                       (T.replicate (n - numspaces) " ")
                getInput >>= setInput . (newtok:)
+               setPosition $ newpos
                return $! numspaces)
     <|> if requireAll
            then mzero
diff --git a/src/Commonmark/Tokens.hs b/src/Commonmark/Tokens.hs
--- a/src/Commonmark/Tokens.hs
+++ b/src/Commonmark/Tokens.hs
@@ -34,7 +34,7 @@
 -- | Convert a 'Text' into a list of 'Tok'. The first parameter
 -- species the source name.
 tokenize :: String -> Text -> [Tok]
-tokenize name = go (initialPos name) . T.groupBy f
+tokenize name = {-# SCC tokenize #-} go (initialPos name) . T.groupBy f
   where
     -- We group \r\n, consecutive spaces, and consecutive alphanums;
     -- everything else gets in a token by itself.
@@ -64,10 +64,9 @@
            | otherwise ->
                  Tok (Symbol thead) pos t :
                  go (incSourceColumn pos 1) ts
-{-# SCC tokenize #-}
 
 -- | Reverses 'tokenize'.  @untokenize . tokenize@ should be
 -- the identity.
 untokenize :: [Tok] -> Text
-untokenize = mconcat . map tokContents
-{-# SCC untokenize #-}
+untokenize = {-# SCC untokenize #-} mconcat . map tokContents
+
diff --git a/test/regression.md b/test/regression.md
--- a/test/regression.md
+++ b/test/regression.md
@@ -154,3 +154,21 @@
 .
 <p>[a](&lt;b) c&gt;</p>
 ````````````````````````````````
+
+Issue #54.
+
+```````````````````````````````` example
+1. Point 1
+    ```bash
+    date
+    pwd
+    ```
+.
+<ol>
+<li>Point 1
+<pre><code class="language-bash">date
+pwd
+</code></pre>
+</li>
+</ol>
+````````````````````````````````
