diff --git a/orchid-demo.cabal b/orchid-demo.cabal
--- a/orchid-demo.cabal
+++ b/orchid-demo.cabal
@@ -1,21 +1,23 @@
 Name:             orchid-demo
-Version:          0.0.5
+Version:          0.0.6
 Description:      Haskell Wiki Demo
 Synopsis:         Haskell Wiki Demo
 Category:         Network, Web
+Cabal-version:    >= 1.6
 License:          BSD3
 License-file:     LICENSE
 Author:           Sebastiaan Visser
 Maintainer:       sfvisser@cs.uu.nl
 Build-Type:       Simple
-Build-Depends:    base,
-                  network,
-                  extensible-exceptions,
-                  salvia ==0.0.5,
-                  orchid ==0.0.7,
-                  mtl ==1.1.0.2,
-                  Pipe,
-                  stm
+Build-Depends:    base ==3.0.*,
+                  salvia ==0.1.*,
+                  salvia-extras ==0.1.*,
+                  orchid ==0.0.*,
+                  mtl ==1.1.*,
+                  network ==2.2.*,
+                  extensible-exceptions ==0.1.*,
+                  Pipe ==2.1.*,
+                  stm ==2.1.*
 Data-Files:       data.zip
 
 Executable:       orchid-demo
diff --git a/src/Demo.hs b/src/Demo.hs
--- a/src/Demo.hs
+++ b/src/Demo.hs
@@ -2,15 +2,13 @@
 
 import Control.Concurrent.STM
 import Control.Exception.Extensible
-import Control.Monad (when)
-import Network.Orchid.Wiki (hWiki, FileStoreType (..))
-import Network.Protocol.Uri (jail)
-import Network.Salvia.Advanced.ExtendedFileSystem (hExtendedFileSystem)
-import Network.Salvia.Handlers.Default (hDefault)
-import Network.Salvia.Handlers.Login (readUserDatabase, UserPayload)
-import Network.Salvia.Handlers.Session (mkSessions, Sessions)
-import Network.Salvia.Httpd (defaultConfig, start, listenAddr, listenPort)
-import Network.Socket (PortNumber, inet_addr)
+import Control.Monad
+import Network.Orchid.Wiki
+import Network.Protocol.Uri
+import Network.Salvia.Handler.ExtendedFileSystem
+import Network.Salvia.Handlers
+import Network.Salvia.Httpd
+import Network.Socket
 import Paths_orchid_demo
 import System.Console.GetOpt
 import System.Environment
@@ -45,21 +43,21 @@
 stringToFileStore kind = lookup kind [("Darcs", Darcs), ("Git", Git)]
 
 run :: Bool -> String -> String -> PortNumber -> FilePath -> FilePath -> IO ()
-run serve sfs address port dir users = do
+run serve sfs addr prt dir users = do
 
   -- Initialize global state.
   db       <- readUserDatabase users
   ioconfig <- defaultConfig 
   count    <- atomically $ newTVar 0
   sessions <- mkSessions :: IO (Sessions (UserPayload ()))
-  addr     <- inet_addr address
+  addr'    <- inet_addr addr
 
   case stringToFileStore sfs of
     Nothing -> putStrLn $ "Error: No such filestore: " ++ sfs
     Just fs -> do
 
       -- Alter config and setup handler.
-      let config    = ioconfig { listenAddr = addr, listenPort = port }
+      let cfg       = ioconfig { listenAddr = addr', listenPort = prt }
       let myHandler = if serve
                        then const $ hExtendedFileSystem dir
                        else hWiki fs dir dir db
@@ -69,12 +67,12 @@
         $ putStrLn "Warning: serving user database to the evil outside world."
 
       -- Print status messages and..
-      putStrLn $ concat ["Listening on ", address, ":", show (listenPort config), "."]
+      putStrLn $ concat ["Listening on ", addr, ":", show (listenPort cfg), "."]
       putStrLn $ concat ["Using ", dir, " as wiki repository."]
 
       -- ..off we go!
       putStrLn "Server started."
-      start config $ hDefault count sessions myHandler
+      start cfg $ hSessionEnv count sessions myHandler
 
 extractArchive :: FilePath -> FilePath -> IO ()
 extractArchive from to = do
