diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,28 @@
+Copyright (c) Sebastiaan Visser 2008
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the author nor the names of his contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,6 @@
+#! /usr/bin/env runhaskell
+
+>import Distribution.Simple
+
+>main = defaultMain
+
diff --git a/salvia-extras.cabal b/salvia-extras.cabal
new file mode 100644
--- /dev/null
+++ b/salvia-extras.cabal
@@ -0,0 +1,17 @@
+Name:             salvia-extras
+Version:          0.1
+Description:      Collection of non-fundamental request handler for the Salvia web server.
+Synopsis:         Collection of non-fundamental request handler for the Salvia web server.
+Category:         Network, Web
+License:          BSD3
+License-file:     LICENSE
+Author:           Sebastiaan Visser
+Maintainer:       sfvisser@cs.uu.nl
+Build-Type:       Simple
+Build-Depends:    base >=3.0.0.0, fclabels ==0.1, clevercss ==0.1.1, hscolour ==1.11, salvia ==0.1
+GHC-Options:      -Wall
+HS-Source-Dirs:   src
+Exposed-modules:  Network.Salvia.Handler.CleverCSS,
+                  Network.Salvia.Handler.ExtendedFileSystem,
+                  Network.Salvia.Handler.HsColour
+
diff --git a/src/Network/Salvia/Handler/CleverCSS.hs b/src/Network/Salvia/Handler/CleverCSS.hs
new file mode 100644
--- /dev/null
+++ b/src/Network/Salvia/Handler/CleverCSS.hs
@@ -0,0 +1,29 @@
+module Network.Salvia.Handler.CleverCSS (
+    hFilterCSS
+  , hCleverCSS
+  , hParametrizedCleverCSS
+  ) where
+
+import Network.Protocol.Uri (Parameters)
+import Network.Salvia.Handler.ExtensionDispatcher (hExtension)
+import Network.Salvia.Handler.Fallback (hOr)
+import Network.Salvia.Handler.File (hFile, hFileFilter)
+import Network.Salvia.Handler.PathRouter (hParameters)
+import Network.Salvia.Handler.Rewrite (hRewriteExt)
+import Network.Salvia.Httpd (Handler)
+import Text.CSS.CleverCSS (cleverCSSConvert)
+
+hFilterCSS :: Handler () -> Handler () -> Handler ()
+hFilterCSS cssfilter handler = do
+  hExtension (Just "css")
+    (hFile `hOr` cssfilter)
+    handler
+
+hCleverCSS :: Handler ()
+hCleverCSS = hParameters >>= hParametrizedCleverCSS
+
+hParametrizedCleverCSS :: Parameters -> Handler ()
+hParametrizedCleverCSS p = do
+  hRewriteExt (fmap ('c':)) (hFileFilter convert)
+  where convert = either id id . flip (cleverCSSConvert "") (map (fmap $ maybe "" id) p)
+
diff --git a/src/Network/Salvia/Handler/ExtendedFileSystem.hs b/src/Network/Salvia/Handler/ExtendedFileSystem.hs
new file mode 100644
--- /dev/null
+++ b/src/Network/Salvia/Handler/ExtendedFileSystem.hs
@@ -0,0 +1,21 @@
+module Network.Salvia.Handler.ExtendedFileSystem (hExtendedFileSystem) where
+
+import Network.Salvia.Handler.CleverCSS (hFilterCSS, hCleverCSS)
+import Network.Salvia.Handler.HsColour (hHighlightHaskell, hHsColour)
+import Network.Salvia.Handler.Directory (hDirectoryResource)
+import Network.Salvia.Handler.File (hFileResource)
+import Network.Salvia.Handler.FileSystem (hFileTypeDispatcher)
+import Network.Salvia.Handler.Rewrite (hWithDir)
+import Network.Salvia.Httpd (Handler)
+
+hExtendedFileSystem :: FilePath -> Handler ()
+hExtendedFileSystem dir =
+    hFileTypeDispatcher
+    hDirectoryResource
+  ( \r -> hHighlightHaskell (hHsColour r)
+  $ hWithDir dir
+  $ hFilterCSS hCleverCSS
+  $ hFileResource r)
+  dir
+
+
diff --git a/src/Network/Salvia/Handler/HsColour.hs b/src/Network/Salvia/Handler/HsColour.hs
new file mode 100644
--- /dev/null
+++ b/src/Network/Salvia/Handler/HsColour.hs
@@ -0,0 +1,53 @@
+module Network.Salvia.Handler.HsColour (
+    hHighlightHaskell
+  , hHsColour
+  , hHsColourCustomStyle
+
+  , defaultStyleSheet
+  ) where
+
+import Data.Record.Label
+import Language.Haskell.HsColour.CSS
+import Network.Protocol.Http (contentType, utf8)
+import Network.Salvia.Handlers
+import Network.Salvia.Httpd
+
+hHighlightHaskell :: Handler () -> Handler () -> Handler ()
+hHighlightHaskell highlighter = 
+  hExtensionRouter [
+    (Just "hs",  highlighter)
+  , (Just "lhs", highlighter)
+  , (Just "ag",  highlighter)
+  ]
+
+hHsColour :: ResourceHandler ()
+hHsColour = hHsColourCustomStyle (Left defaultStyleSheet)
+
+-- Left means direct inclusion of stylesheet, right means link to external
+-- stylesheet.
+
+hHsColourCustomStyle :: Either String String -> ResourceHandler ()
+hHsColourCustomStyle style r = do
+  sendStr (either id makeStyleLink style)
+  hFileResourceFilter (hscolour False True "") r
+  setM (contentType % response) ("text/html", Just utf8)
+
+makeStyleLink :: String -> String
+makeStyleLink css = "<link rel=\"stylesheet\" type=\"text/css\" href=\"" ++ css ++ "\"></link>"
+
+defaultStyleSheet :: String
+defaultStyleSheet = filter (/=' ') $ concat [
+    "<style>"
+  , ".varop      { color : #960; font-weight : normal; }"
+  , ".keyglyph   { color : #960; font-weight : normal; }"
+  , ".definition { color : #005; font-weight : bold;   }"
+  , ".varid      { color : #444; font-weight : normal; }"
+  , ".keyword    { color : #000; font-weight : bold;   }"
+  , ".comment    { color : #44f; font-weight : normal; }"
+  , ".conid      { color : #000; font-weight : normal; }"
+  , ".num        { color : #00a; font-weight : normal; }"
+  , ".str        { color : #a00; font-weight : normal; }"
+  , "</style>"
+  , ""
+  ]
+
