diff --git a/muon.cabal b/muon.cabal
--- a/muon.cabal
+++ b/muon.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                muon
-version:             0.1.0.2
+version:             0.1.0.3
 synopsis:            Static blog generator
 description:
     Program which takes blog posts and pages written in Markdown and
@@ -27,6 +27,7 @@
                      def/posts/*.post
                      def/pages/about
                      def/pages/contact
+                     def/config.ini
 extra-source-files:  src/*.hs README
 
 source-repository head
@@ -35,5 +36,5 @@
 
 executable muon
   main-is:             Main.hs
-  build-depends:       base ==4.6.*, text ==0.11.*, HStringTemplate ==0.7.*, directory ==1.2.*, Glob ==0.7.*, process ==1.2.*, blaze-html ==0.7.*, markdown ==0.1.*
+  build-depends:       base ==4.6.*, text ==0.11.*, HStringTemplate ==0.7.*, directory ==1.2.*, Glob ==0.7.*, process ==1.2.*, blaze-html ==0.7.*, markdown ==0.1.*, ConfigFile==1.1.*, MissingH==1.2.*
   hs-source-dirs:      src
diff --git a/src/Archive.hs b/src/Archive.hs
--- a/src/Archive.hs
+++ b/src/Archive.hs
@@ -28,14 +28,15 @@
             ++ unlines (map makeTableRow ps)
             ++ "</table>"
 
-renderGenericArchive t c = render
-                         $ setAttribute "site" defaultSite
+renderGenericArchive s t c = render
+                         $ setAttribute "site" s
                          $ setAttribute "content" c t
 
 renderArchive = do
     ps <- getAllPosts
     t <- archiveTemplate
-    return $ renderGenericArchive t (makeTable $ reverse ps)
+    s <- readSite
+    return $ renderGenericArchive s t (makeTable $ reverse ps)
 
 writeArchive ::  T.Text -> IO ()
 writeArchive s = do
diff --git a/src/Home.hs b/src/Home.hs
--- a/src/Home.hs
+++ b/src/Home.hs
@@ -15,16 +15,17 @@
     let Just t = getStringTemplate "generic" templates
     return t
 
-renderGenericHome ::  StringTemplate T.Text -> [T.Text] -> T.Text
-renderGenericHome t cs = render
-                       $ setAttribute "site" defaultSite
+renderGenericHome ::  Site -> StringTemplate T.Text -> [T.Text] -> T.Text
+renderGenericHome s t cs = render
+                       $ setAttribute "site" s
                        $ setAttribute "content" (T.unlines cs) t
 
 renderHome ::  IO T.Text
 renderHome = do
     cs <- getAllExtracts
     t <- homeTemplate
-    return $ renderGenericHome t $ reverse cs
+    s <- readSite
+    return $ renderGenericHome s t $ reverse cs
 
 writeHome ::  T.Text -> IO ()
 writeHome s = do
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -11,7 +11,6 @@
 import Post (generatePosts)
 import Home (generateHome)
 import Archive (generateArchive)
-import Site (defaultSite)
 import Page (generatePages)
 import Constant
 import Paths_muon
@@ -31,6 +30,7 @@
     copyFile (d ++ "/templates/generic.st") "templates/generic.st"
     copyFile (d ++ "/pages/about") "pages/about"
     copyFile (d ++ "/pages/contact") "pages/contact"
+    copyFile (d ++ "/config.ini") "config.ini"
     putStrLn "Initialised site directory"
 
 copyStatic = do
@@ -49,8 +49,8 @@
 \  generate    generate static blog in 'site' directory\n\n\
 \Report bugs to <kaashif@kaashif.co.uk>"
 
-clearSite = mkdir sitePath 
-         >> removeDirectoryRecursive sitePath 
+clearSite = mkdir sitePath
+         >> removeDirectoryRecursive sitePath
          >> mkdir sitePath
 
 rsyncCmd = "rsync -a --delete site/ root@webserver:/var/www/htdocs/"
diff --git a/src/Page.hs b/src/Page.hs
--- a/src/Page.hs
+++ b/src/Page.hs
@@ -13,16 +13,17 @@
     let Just t = getStringTemplate "generic" templates
     return t
 
-renderPage ::  StringTemplate T.Text -> T.Text -> T.Text
-renderPage t c = render
-               $ setAttribute "site" defaultSite
+renderPage ::  Site -> StringTemplate T.Text -> T.Text -> T.Text
+renderPage s t c = render
+               $ setAttribute "site" s
                $ setAttribute "content" c t
 
 renderPageFile ::  String -> IO T.Text
 renderPageFile p = do
     c <- readFile $ "pages/" ++ p
     t <- pageTemplate
-    return $ renderPage t (T.pack c)
+    s <- readSite
+    return $ renderPage s t (T.pack c)
 
 writePage ::  String -> T.Text -> IO ()
 writePage p c = do
diff --git a/src/Post.hs b/src/Post.hs
--- a/src/Post.hs
+++ b/src/Post.hs
@@ -31,21 +31,22 @@
     let Just t = getStringTemplate "post" templates
     return t
 
-renderPost ::  StringTemplate T.Text -> Post -> T.Text
-renderPost t p = render
-               $ setAttribute "site" defaultSite
+renderPost ::  Site -> StringTemplate T.Text -> Post -> T.Text
+renderPost s t p = render
+               $ setAttribute "site" s
                $ setAttribute "post" p t
 
-renderName ::  StringTemplate T.Text -> String -> IO T.Text
-renderName t n = liftM (renderPost t) (getPost (0, n))
+renderName ::  Site -> StringTemplate T.Text -> String -> IO T.Text
+renderName s t n = liftM (renderPost s t) (getPost (0, n))
 
 makeExtract ::  Post -> T.Text
 makeExtract p = T.pack
                   $ "<h2>" ++ T.unpack (title p) ++ "</h2>"
                  ++ "<h3>" ++ T.unpack (date p) ++ "</h3>"
                  ++  unlines (take 25 $ lines $ T.unpack $ content p)
-                 ++ "<br/><br/><a href=\'" ++ T.unpack (link p) ++ "\'>Read more...</a>"
-                 ++ "</code></pre></li></ul></ol><hr/>"
+                 ++ "</code></pre></li></ul></ol></p>"
+                 ++ "<br/><a href=\'" ++ T.unpack (link p) ++ "\'>Read more...</a>"
+                 ++ "<br/><br/><hr/>"
 
 makePost ::  (Int, [String]) -> Post
 makePost l = Post { title  = T.pack $ head (snd l)
@@ -78,7 +79,8 @@
     templates <- directoryGroup "templates" :: IO (STGroup T.Text)
     let Just t = getStringTemplate "post" templates
     ns <- getNames
-    mapM (renderName t . snd) ns
+    s <- readSite
+    mapM (renderName s t . snd) ns
 
 writePosts ::  [T.Text] -> IO ()
 writePosts ps = mapM_ writePost (zip [1..(length ps)] ps)
diff --git a/src/Site.hs b/src/Site.hs
--- a/src/Site.hs
+++ b/src/Site.hs
@@ -1,10 +1,12 @@
 {-# LANGUAGE OverloadedStrings #-}
 {-# LANGUAGE DeriveDataTypeable #-}
-module Site (defaultSite) where
+module Site (Site, readSite) where
 
 import qualified Data.Text as T
 import Data.Typeable
 import Data.Data
+import Data.ConfigFile
+import Data.Either.Utils
 
 data Site = Site { title :: T.Text
                  , style :: T.Text
@@ -17,3 +19,16 @@
                    , author = "Your Name"
                    , tagline = "Description of this blog"
                    }
+
+getSetting ::  ConfigParser -> String -> T.Text
+getSetting cp s = T.pack $ forceEither $ get cp "site" s
+
+readSite ::  IO Site
+readSite = do
+    r <- readfile emptyCP "config.ini"
+    let cp = forceEither r
+    return $ Site { title = getSetting cp "title"
+                  , style = getSetting cp "style"
+                  , author = getSetting cp "author"
+                  , tagline = getSetting cp "tagline"
+                  }
diff --git a/src/def/config.ini b/src/def/config.ini
new file mode 100644
--- /dev/null
+++ b/src/def/config.ini
@@ -0,0 +1,5 @@
+[site]
+title=Default site
+author=Your Name
+tagline=Something descriptive
+style=/style.css
diff --git a/src/def/style/style.css b/src/def/style/style.css
--- a/src/def/style/style.css
+++ b/src/def/style/style.css
@@ -162,9 +162,7 @@
 }
 
 hr {
-	border: 0;
 	background: #aaa;
-	height: 0px;
 	margin: 0 0 20px;
 }
 
