diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,66 +1,51 @@
-               C->Haskell - Haskell Interface Generator              -*-text-*-
-               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+`c2hs` is a interfacing tool that eases Haskell access to C libraries.
+The tool gets information about the C data type definitions and
+function signatures by analysing the C header files of the library.
+It uses this information to compute the missing details in the
+template of a Haskell module &mdash; called the binding file &mdash;
+that implements a Haskell binding to the C library.  Hooks embedded in
+the binding file signal where, which, and how C objects are accessed
+from Haskell.  The Haskell code in the binding file determines Haskell
+types signatures and marshaling details.
 
-C->Haskell is a interfacing tool that eases Haskell access to C libraries.
-The tool gets information about the C data type definitions and function
-signatures by analysing the C header files of the library.  It uses this
-information to compute the missing details in the template of a Haskell
-module---called the binding file---that implements a Haskell binding to the C
-library.  Hooks embedded in the binding file signal where, which, and how C
-objects are accessed from Haskell.  The Haskell code in the binding file
-determines Haskell types signatures and marshaling details.  Further
-information is at
+Further information is on the
+[wiki](https://github.com/haskell/c2hs/wiki/Home).  Also see the
+[user guide](https://github.com/haskell/c2hs/wiki/User-Guide) (also
+available in the `doc` directory of the repository).
 
-  http://www.cse.unsw.edu.au/~chak/haskell/c2hs/
 
-Also see the tutorial in `doc/c2hs/'.
+## Installing
 
+See the file `INSTALL`.
 
-Contents:
 
-  AUTHORS       -- Author information
-  COPYING       -- GNU General Public License (GPL)
-  INSTALL       -- Help on installing this package
-  README        -- This file
-  Setup.hs      -- Cabal build script
-  TODO          -- Open problems, bugs, and ideas for future extensions
-  c2hs.cabal    -- Cabal package specification
-  doc           -- Documentation
-  src           -- Source code
-  src/C2HS      -- Main program sources
-  src/Main.hs   -- Compilation driver
-  tests         -- Small test cases
+## Copyleft
 
+This system is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2 of the License, or (at your
+option) any later version.
 
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-= INSTALLING =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+This system is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
 
-See the file `INSTALL'.
+You should have received a copy of the GNU General Public License
+along with this system; if not, write to the Free Software Foundation,
+Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- COPYLEFT -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+> **NOTE HOWEVER**, all code included into generated bindings is under
+> a BSD-style license that does not place any restrictions on the
+> license of the inteface produced with `c2hs` (ie, closed proprietary
+> licenses are possible, too).  In other words, I do not care what you
+> use `c2hs` for or to whom you are giving `c2hs` or any interfaces
+> generated with `c2hs`, only if you modify or improve `c2hs` itself,
+> you have to contribute your changes back to the community.
+> Nevertheless, I will of course be particularly delighted if you
+> choose to make your work freely available.
 
-This system is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free Software
-Foundation; either version 2 of the License, or (at your option) any later
-version.
 
-This system is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with
-this system; if not, write to the Free Software Foundation, Inc., 675 Mass
-Ave, Cambridge, MA 02139, USA.
-
-NOTE: HOWEVER, all code included into generated bindings is under a BSD-style
-      license that does not place any restrictions on the license of the
-      inteface produced with C->Haskell (ie, closed proprietary licenses are
-      possible, too).  In other words, I do not care what you use C->Haskell
-      for or to whom you are giving C->Haskell or any interfaces generated with
-      C->Haskell, only if you modify or improve C->Haskell itself, you have to
-      contribute your changes back to the community.  Nevertheless, I will of
-      course be particularly delighted if you choose to make your work freely
-      available.
-
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- CREDITS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+## Credits
 
-See the file `AUTHORS'.
+See the file `AUTHORS`.
diff --git a/c2hs.cabal b/c2hs.cabal
--- a/c2hs.cabal
+++ b/c2hs.cabal
@@ -1,15 +1,15 @@
 Name:           c2hs
-Version:        0.16.4
+Version:        0.16.5
 License:        GPL-2
 License-File:   COPYING
 Copyright:      Copyright (c) 1999-2007 Manuel M T Chakravarty
-                              2005-2008 Duncan Coutts
+                              2005-2013 Duncan Coutts
                               2008      Benedikt Huber
 Author:         Manuel M T Chakravarty
-Maintainer:     chak@cse.unsw.edu.au, duncan@haskell.org
+Maintainer:     chak@cse.unsw.edu.au, duncan@community.haskell.org, ian@skybluetrades.net
 Stability:      Stable
-Homepage:       http://www.cse.unsw.edu.au/~chak/haskell/c2hs/
-Bug-Reports:    http://hackage.haskell.org/trac/c2hs/
+Homepage:       https://github.com/haskell/c2hs
+Bug-Reports:    https://github.com/haskell/c2hs/issues
 Synopsis:       C->Haskell FFI tool that gives some cross-language type safety
 Description:    C->Haskell assists in the development of Haskell bindings to C
                 libraries. It extracts interface information from C header
@@ -18,7 +18,7 @@
                 hsch2s), this ensures that C functions are imported with the
                 correct Haskell types.
 Category:       Development
-Tested-With:    GHC==6.12.3, GHC==7.0.4, GHC==7.6.1
+Tested-With:    GHC==6.12.3, GHC==7.0.4, GHC==7.6.1, GHC==7.6.3
 Cabal-Version:  >= 1.6
 Build-Type:     Simple
 
@@ -34,14 +34,14 @@
                 tests/system/Makefile
 
 source-repository head
-  type:         darcs
-  location:     http://code.haskell.org/c2hs/
+  type:         git
+  location:     git://github.com/haskell/c2hs.git
 
 flag base3
 
 Executable c2hs
     Build-Depends:  base >= 2 && < 5,
-                    language-c >= 0.3.1.1 && < 0.4.0,
+                    language-c >= 0.4.2 && < 0.5,
                     filepath
 
     if flag(base3)
diff --git a/src/C2HS/C.hs b/src/C2HS/C.hs
--- a/src/C2HS/C.hs
+++ b/src/C2HS/C.hs
@@ -93,7 +93,7 @@
     ns <- getNameSupply
     case execParser translUnitP is pos builtinTypeNames ns of
       Left (ParseError (msgs,pos')) -> raiseError pos' msgs >>
-                                       return (CTranslUnit [] internalNode)
+                                       return (CTranslUnit [] undefNode)
       Right (ct,ns') -> setNameSupply ns' >> return ct
       
 -- | given a file name (with suffix), parse that file as a C header and do the
diff --git a/src/C2HS/C/Trav.hs b/src/C2HS/C/Trav.hs
--- a/src/C2HS/C/Trav.hs
+++ b/src/C2HS/C/Trav.hs
@@ -246,7 +246,7 @@
       Just prevTag -> case isRefinedOrUse prevTag tag of
                          Nothing                 -> return otag
                          Just (fullTag, foreIde) -> do
-                           transAttrCCT $ \ac -> addDefTagC ac ide fullTag
+                           _ <- transAttrCCT $ \ac -> addDefTagC ac ide fullTag
                            foreIde `refersToDef` TagCD fullTag
                            return Nothing               -- transparent for env
   where
diff --git a/src/C2HS/Gen/Bind.hs b/src/C2HS/Gen/Bind.hs
--- a/src/C2HS/Gen/Bind.hs
+++ b/src/C2HS/Gen/Bind.hs
@@ -125,22 +125,7 @@
 import C2HS.Config (PlatformSpec(..))
 import C2HS.State  (CST, errorsPresent, showErrors, fatal,
                    SwitchBoard(..), Traces(..), putTraceStr, getSwitch)
-import C2HS.C     (AttrC, CObj(..), CTag(..),
-                   CDecl(..), CDeclSpec(..), CTypeSpec(..),
-                   CStructUnion(..), CStructTag(..), CEnum(..), CDeclr(..), CAttr(..),
-                   CDerivedDeclr(..),CArrSize(..),
-                   CExpr(..), CBinaryOp(..), CUnaryOp(..), CConst (..),
-                   CInteger(..),cInteger,getCInteger,getCCharAsInt,
-                   runCT, ifCTExc,
-                   raiseErrorCTExc, findValueObj, findFunObj, findTag,
-                   applyPrefixToNameSpaces,
-                   simplifyDecl, declrNamed, structMembers,
-                   structName, tagName, declaredName , structFromDecl,
-                   funResultAndArgs, chaseDecl, findAndChaseDecl,
-                   checkForAlias, checkForOneAliasName, checkForOneCUName,
-                   lookupEnum, lookupStructUnion, lookupDeclOrTag, isPtrDeclr,
-                   dropPtrDeclr, isPtrDecl, getDeclOf, isFunDeclr,
-                   refersToNewDef, partitionDeclSpecs, CDef(..))
+import C2HS.C
 
 -- friends
 import C2HS.CHS   (CHSModule(..), CHSFrag(..), CHSHook(..),
@@ -884,7 +869,7 @@
                       interr "GenBind.funDef: marshRes: no default?"
 
       marshBody (Left ide) = identToString ide
-      marshBody (Right str) = str
+      marshBody (Right str) = "(" ++ str ++ ")"
 
       retArgs'  = case parm' of
                     CHSParm _ _ _ (Just (_, CHSVoidArg))   _ ->        retArgs
@@ -894,8 +879,8 @@
       funBody   = joinLines marshIns  ++
                   mkMarsh2            ++
                   call                ++
-                  joinLines marshOuts ++
                   marshRes            ++
+                  joinLines marshOuts ++
                   "  " ++
                   (if isImpure || not isPure then "return " else "") ++ ret
     return $ sig ++ funHead ++ funBody
@@ -913,8 +898,8 @@
         ctxt   = case octxt of
                    Nothing      -> ""
                    Just ctxtStr -> ctxtStr ++ " => "
-        argTys = [ty | CHSParm im ty _ _  _ <- parms'      , notVoid im]
-        resTys = [ty | CHSParm _  ty _ om _ <- parm':parms', notVoid om]
+        argTys = ["(" ++ ty ++ ")" | CHSParm im ty _ _  _ <- parms'      , notVoid im]
+        resTys = ["(" ++ ty ++ ")" | CHSParm _  ty _ om _ <- parm':parms', notVoid om]
         resTup = let
                    (lp, rp) = if isPure && length resTys == 1
                               then ("", "")
@@ -962,7 +947,7 @@
         retArg   = if omArgKind == CHSVoidArg || omArgKind == CHSIOVoidArg then "" else outBndr
 
         marshBody (Left ide) = identToString ide
-        marshBody (Right str) = str
+        marshBody (Right str) = "(" ++ str ++ ")"
       in
       (funArg, marshIn, callArgs, marshOut, retArg)
     marshArg _ _ = interr "GenBind.funDef: Missing default?"
diff --git a/src/C2HS/Gen/Header.hs b/src/C2HS/Gen/Header.hs
--- a/src/C2HS/Gen/Header.hs
+++ b/src/C2HS/Gen/Header.hs
@@ -182,8 +182,8 @@
       do (enrs,transtbl') <- liftM unzip (mapM createEnumerator aliases)
          return (enrs,CHSTrans False CHSSameCase transtbl')
   createEnumerator (cid,hsid) = liftM (\enr -> ((enr,cid),(enr,hsid))) newEnrIdent
-  enumDef ide enrs = CEnum (Just ide) (Just$ map mkEnr enrs) [] internalNode
-    where mkEnr (name,value) = (name, Just $ CVar value internalNode)
+  enumDef ide enrs = CEnum (Just ide) (Just$ map mkEnr enrs) [] undefNode
+    where mkEnr (name,value) = (name, Just $ CVar value undefNode)
   enumFrag ide trans' = CHSHook (CHSEnum (internalIdent ide) (Just hsident) trans' Nothing instances pos)
 
 ghFrag (frag@(CHSHook  _    ) : frags) =
diff --git a/tests/system/Calls.chs b/tests/system/Calls.chs
--- a/tests/system/Calls.chs
+++ b/tests/system/Calls.chs
@@ -20,7 +20,7 @@
 	  -- test typedef'ed args without argument variable in prototype
 	  {#call printString2#} {# call pure MyString as myString #}
 
-{#fun foo as fooFun {} -> id `Int'#}
+{#fun foo as fooFun {} -> `Int'#}
 
 {#fun pure bar as barFun {`Int'} -> `Float'#}
 
