diff --git a/Gitit.hs b/Gitit.hs
--- a/Gitit.hs
+++ b/Gitit.hs
@@ -39,15 +39,15 @@
 import Data.List (intersect, intersperse, intercalate, sort, nub, sortBy, isSuffixOf)
 import Data.Maybe (fromMaybe, fromJust, mapMaybe, isNothing)
 import Data.ByteString.UTF8 (fromString)
+import qualified Data.ByteString.Lazy.UTF8 as L (fromString)
 import qualified Data.Map as M
 import Data.Ord (comparing)
-import qualified Data.Digest.SHA512 as SHA512 (hash)
+import Data.Digest.Pure.SHA (sha512, showDigest)
 import Paths_gitit
 import Text.Pandoc
 import Text.Pandoc.ODT (saveOpenDocumentAsODT)
 import Text.Pandoc.Definition (processPandoc)
 import Text.Pandoc.Shared (HTMLMathMethod(..), substitute)
-import Data.ByteString.Internal (c2w)
 import Data.Char (isAlphaNum, isAlpha)
 import Codec.Binary.UTF8.String (decodeString)
 import Control.Monad.Reader
@@ -58,7 +58,7 @@
 import Text.Highlighting.Kate
 
 gititVersion :: String
-gititVersion = "0.3"
+gititVersion = "0.3.1"
 
 main :: IO ()
 main = do
@@ -899,20 +899,21 @@
                                                 if revision == "HEAD" then "edit" else "revert"
                                  else Nothing
   let buttons    = ulist ! [theclass "tabs"] << mapMaybe linkForTab (pgTabs layout)
-  let userbox    = case user of
-                        Just u   -> anchor ! [href ("/_logout?" ++ urlEncodeVars [("destination", page)])] << 
-                                    ("Logout " ++ u)
-                        Nothing  -> (anchor ! [href ("/_login?" ++ urlEncodeVars [("destination", page)])] <<
-                                     "Login") +++ primHtml "&nbsp;&bull;&nbsp;" +++
-                                    anchor ! [href ("/_register?" ++ urlEncodeVars [("destination", page)])] <<
-                                     "Get an account"
+  let userbox    = thediv ! [identifier "userbox"] <<
+                   case user of
+                        Just u   -> [ anchor ! [href ("/_logout?" ++ urlEncodeVars [("destination", page)])] << 
+                                    ("Logout " ++ u) ]
+                        Nothing  -> [ anchor ! [href ("/_login?" ++ urlEncodeVars [("destination", page)])] <<
+                                     "Login"
+                                    , primHtml "&nbsp;&bull;&nbsp;"
+                                    , anchor ! [href ("/_register?" ++ urlEncodeVars [("destination", page)])] <<
+                                      "Get an account" ]
   let messages = pMessages params
   let htmlMessages = if null messages
                         then noHtml
                         else ulist ! [theclass "messages"] << map (li <<) messages
   let body' = body << thediv ! [identifier "container"] <<
-                        [ thediv ! [identifier "userbox"] << userbox
-                        , thediv ! [identifier "sidebar"] <<
+                        [ thediv ! [identifier "sidebar"] <<
                           [ thediv ! [identifier "logo"] << 
                               anchor ! [href "/", title "Go to top page"] <<
                                 case wikiLogo cfg of
@@ -920,6 +921,7 @@
                                      Just f  -> image ! [src f]
                           , sitenav
                           , tools ]
+                        , userbox
                         , thediv ! [identifier "maincol"] <<
                           [ thediv ! [theclass "pageControls"] << buttons
                           , thediv ! [identifier "content"] << 
@@ -954,7 +956,7 @@
   let pword = pPassword params
   let destination = pDestination params
   cfg <- query GetConfig
-  let passwordHash = SHA512.hash $ map c2w $ passwordSalt cfg ++ pword
+  let passwordHash = showDigest $ sha512 $ L.fromString $ passwordSalt cfg ++ pword
   allowed <- query $ AuthUser uname passwordHash
   if allowed
     then do
@@ -1025,7 +1027,7 @@
                         , (not (null fakeField), "You do not seem human enough.") ] -- fakeField is hidden in CSS (honeypot)
   if null errors
      then do
-       let passwordHash = SHA512.hash $ map c2w $ passwordSalt cfg ++ pword
+       let passwordHash = showDigest $ sha512 $ L.fromString $ passwordSalt cfg ++ pword
        update $ AddUser uname (User { uUsername = uname, uPassword = passwordHash, uEmail = email })
        loginUser "/" (params { pUsername = uname, pPassword = pword })
      else formattedPage (defaultPageLayout { pgShowPageTools = False, pgTabs = [], pgTitle = "Register for an account" }) 
diff --git a/Gitit/State.hs b/Gitit/State.hs
--- a/Gitit/State.hs
+++ b/Gitit/State.hs
@@ -33,7 +33,6 @@
 import HAppS.State
 import HAppS.Data
 import GHC.Conc (STM)
-import Codec.Utils (Octet)
 
 -- | Data structure for information read from config file.
 data Config = Config {
@@ -86,7 +85,7 @@
 
 data User = User {
   uUsername :: String,
-  uPassword :: [Octet],  -- password stored as MD5 hash
+  uPassword :: String,    -- password stored as SHA512 hash
   uEmail    :: String
 } deriving (Show,Read,Typeable,Data)
 
@@ -138,7 +137,7 @@
 delUser :: MonadState AppState m => String -> m ()
 delUser name = modUsers $ M.delete name
 
-authUser :: MonadReader AppState m => String -> [Octet] -> m Bool
+authUser :: MonadReader AppState m => String -> String -> m Bool
 authUser name pass = do
   users' <- askUsers
   case M.lookup name users' of
diff --git a/css/screen.css b/css/screen.css
--- a/css/screen.css
+++ b/css/screen.css
@@ -248,7 +248,7 @@
 	padding: 0;
 }
 
-#userbox  { float: right; font-weight: bold; margin: 1em; }
+#userbox  { text-align: right; font-weight: bold; margin: 1em 1em 0 0; }
 #logo { min-height: 50px; }
 #sidebar  { width: 12em; float: left; margin-right: 10px; }
 #sidebar fieldset {
@@ -267,7 +267,7 @@
   line-height: 1.5em;
 }
 #sidebar ul li { color: #888; }
-#maincol { position: absolute; margin-left: 13em; margin-top: 1em; padding-top: 2em; margin-right: 0; }
+#maincol { position: absolute; margin-left: 13em; margin-top: 1em; padding-top: 0; margin-right: 0; }
 #content { border: 1px solid #ccc; background-color: #fff; padding: 1em; font-size: 110%; line-height: 150%; }
 #pageControls { }
 div#toc {
diff --git a/gitit.cabal b/gitit.cabal
--- a/gitit.cabal
+++ b/gitit.cabal
@@ -1,5 +1,5 @@
 name:                gitit
-version:             0.3
+version:             0.3.1
 Cabal-version:       >= 1.2
 build-type:          Simple
 synopsis:            Wiki using HAppS, git, and pandoc.
@@ -46,7 +46,7 @@
                      network, old-time, highlighting-kate, bytestring,
                      utf8-string, HAppS-Server >= 0.9.3 && < 0.9.4,
                      HAppS-State >= 0.9.3 && < 0.9.4,
-                     HAppS-Data >= 0.9.3 && < 0.9.4, Crypto, HTTP
+                     HAppS-Data >= 0.9.3 && < 0.9.4, SHA > 1, HTTP
   if impl(ghc >= 6.10)
     build-depends:   base >= 4, syb
   ghc-options:       -Wall -threaded
