diff --git a/leksah-server.cabal b/leksah-server.cabal
--- a/leksah-server.cabal
+++ b/leksah-server.cabal
@@ -1,182 +1,197 @@
-name: leksah-server
-version: 0.12.0.5
-cabal-version: >= 1.10.2
-build-type: Simple
-license: GPL
-license-file: LICENSE
-copyright: 2007-2011 Juergen Nicklisch-Franken, Hamish Mackenzie
-maintainer: maintainer@leksah.org
-stability: provisional
-homepage: http://leksah.org
-package-url: http://code.haskell.org/leksah-collector
-bug-reports: http://code.google.com/p/leksah/issues/list
-synopsis: Metadata collection for leksah
-description: The interface to GHC-API for leksah
-category: IDE
-author: Juergen "jutaro" Nicklisch-Franken, Hamish Mackenzie
-data-dir: ""
-tested-with: GHC ==6.10 || ==6.12 || ==7.0
-data-files:
-            data/prefscoll.lkshp
-flag curl
-    Default: False
-    Description: Use runs curl instead of wget (curl is the default on OSX)
-
-flag libcurl
-    Default: False
-    Description: Use libcurl instead of running wget
-
-flag threaded
-    default: True
-    description: Build with support for multithreaded execution
-
-library
-    default-language: Haskell98
-    build-depends: Cabal >=1.6.0.1 && <1.15, base >= 4.0.0.0 && <4.6, binary >=0.5.0.0 && <0.6,
-               binary-shared >=0.8 && <0.9, bytestring >=0.9.0.1 && <0.10,
-               containers >=0.2.0.0 && <0.5,
-               directory >=1.0.0.2 && <1.2, filepath >=1.1.0.1 && <1.4, ghc >=6.10.1 && <7.5,
-               ltk >=0.12 && <0.13, parsec >=2.1.0.1 && <3.2,
-               pretty >=1.0.1.0 && <1.2, time >=1.1 && <1.5, deepseq >=1.1 && <1.4,
-               hslogger >= 1.0.7 && <1.2, network >=2.2 && <3.0, enumerator >=0.4.14 && < 0.5,
-               attoparsec-enumerator >=0.3 && <0.4, attoparsec >=0.10.0.3 && <0.11,
-               transformers >=0.2.2.0 && <0.3
-    if (impl(ghc >= 7.4))
-       build-depends: haddock >= 2.7.2 && <2.11
-    else
-       if (impl(ghc >= 7.2))
-          build-depends: haddock >= 2.7.2 && <2.10
-       else
-          if (impl(ghc >= 7.0))
-             build-depends: haddock >= 2.7.2 && <2.9.3
-          else
-             if (impl(ghc >= 6.12))
-                build-depends: haddock >= 2.7.2 && <2.9
-             else
-                build-depends: haddock-leksah == 2.5.0
-
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.2
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
-
-    if os(windows)
-        build-depends: Win32 >=2.2.0.0 && <2.3
-        extra-libraries: kernel32
-    else
-        build-depends: unix >=2.3.1.0 && <2.6
-
-    if flag(curl) || os(osx)
-        cpp-options: -DUSE_CURL
-
-    if flag(libcurl)
-        build-depends: curl >=1.3.5 && <1.4
-        cpp-options: -DUSE_LIBCURL
-
-    exposed-modules: IDE.Utils.GHCUtils IDE.Utils.Utils IDE.Utils.Tool
-        IDE.Utils.FileUtils IDE.Core.CTypes IDE.Core.Serializable IDE.StrippedPrefs
-        IDE.Utils.Server IDE.Metainfo.PackageCollector IDE.Utils.VersionUtils
-    exposed: True
-    buildable: True
-    default-extensions: CPP
-    hs-source-dirs: src
-    other-modules:
-        IDE.Metainfo.WorkspaceCollector IDE.Metainfo.InterfaceCollector
-        IDE.Metainfo.SourceCollectorH
-        IDE.Metainfo.SourceDB Paths_leksah_server
-    if (impl(ghc >= 6.12))
-       ghc-options: -Wall -fno-warn-unused-do-bind -ferror-spans -O2
-    else
-       ghc-options: -Wall -ferror-spans -O2
-    ghc-prof-options: -auto-all -prof
-
-executable leksah-server
-    default-language: Haskell98
-    build-depends: Cabal >=1.6.0.1 && <1.15, base >= 4.0.0.0 && <4.6, binary >=0.5.0.0 && <0.6,
-               binary-shared >=0.8 && <0.9, bytestring >=0.9.0.1 && <0.10,
-               containers >=0.2.0.0 && <0.5,
-               directory >=1.0.0.2 && <1.2, filepath >=1.1.0.1 && <1.6, ghc >=6.10.1 && <7.5,
-               ltk >=0.12 && <0.13, parsec >=2.1.0.1 && <3.2,
-               pretty >=1.0.1.0 && <1.2, time >=1.1 && <1.5, deepseq >=1.1 && <1.4,
-               hslogger >= 1.0.7 && <1.2, network >=2.2 && <3.0, enumerator >= 0.4.14 && <0.5,
-               attoparsec-enumerator >=0.3 && <0.4, attoparsec >=0.10.0.3 && <0.11,
-               transformers >=0.2.2.0 && <0.3
-    if (impl(ghc >= 7.4))
-       build-depends: haddock >= 2.7.2 && <2.11
-    else
-       if (impl(ghc >= 7.2))
-          build-depends: haddock >= 2.7.2 && <2.10
-       else
-          if (impl(ghc >= 7.0))
-             build-depends: haddock >= 2.7.2 && <2.9.3
-          else
-             if (impl(ghc >= 6.12))
-                build-depends: haddock >= 2.7.2 && <2.9
-             else
-                build-depends: haddock-leksah == 2.5.0
-
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.2
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
-
-    if os(windows)
-        build-depends: Win32 >=2.2.0.0 && <2.3
-        extra-libraries: kernel32
-    else
-        build-depends: unix >=2.3.1.0 && <2.6
-
-    if flag(curl) || os(osx)
-        cpp-options: -DUSE_CURL
-
-    if flag(libcurl)
-        build-depends: curl >=1.3.5 && <1.4
-        cpp-options: -DUSE_LIBCURL
-
-    main-is: IDE/Metainfo/Collector.hs
-    buildable: True
-    default-extensions: CPP
-    hs-source-dirs: src
-    other-modules: IDE.StrippedPrefs IDE.Utils.GHCUtils IDE.Utils.Utils
-        IDE.Core.CTypes IDE.Core.Serializable
-        IDE.Metainfo.WorkspaceCollector IDE.Metainfo.InterfaceCollector
-        IDE.Metainfo.SourceCollectorH IDE.Metainfo.SourceDB IDE.Utils.Tool
-        IDE.HeaderParser IDE.Metainfo.PackageCollector
-
-    if flag(threaded)
-        ghc-options: -threaded
-
-    if impl(ghc >= 7.0)
-        ghc-options: -rtsopts
-
-    if impl(ghc >= 6.12)
-        ghc-options: -Wall -fno-warn-unused-do-bind -ferror-spans -O2
-    else
-        ghc-options: -Wall -ferror-spans -O2
-    ghc-prof-options: -auto-all -prof
-
-executable leksahecho
-    default-language: Haskell98
-    main-is: LeksahEcho.hs
-    buildable: True
-    default-extensions: CPP
-    hs-source-dirs: src
-    ghc-prof-options: -auto-all -prof
---    ghc-shared-options: -auto-all -prof
-    build-depends:  base >= 4.0.0.0 && <4.6, hslogger >= 1.0.7 && <1.2, deepseq >=1.1 && <1.4,
-               bytestring >=0.9.0.1 && <0.10, enumerator >= 0.4.14 && <0.5,
-               attoparsec-enumerator >=0.3 && <0.4, attoparsec >=0.10.0.3 && <0.11,
-               transformers >=0.2.2.0 && <0.3
-
-    if (impl(ghc >= 7.2))
-       build-depends: process >= 1.1 && <1.2
-    else
-       build-depends: process-leksah >=1.0.1.3 && <1.1
-
-    if flag(threaded)
-        ghc-options: -threaded
-
-    if (impl(ghc >= 6.12))
-       ghc-options: -Wall -fno-warn-unused-do-bind -ferror-spans -O2
-    else
-       ghc-options: -Wall -ferror-spans -O2
+name: leksah-server
+version: 0.12.1.0
+cabal-version: >= 1.10.2
+build-type: Simple
+license: GPL
+license-file: LICENSE
+copyright: 2007-2011 Juergen Nicklisch-Franken, Hamish Mackenzie
+maintainer: maintainer@leksah.org
+stability: provisional
+homepage: http://leksah.org
+package-url: http://code.haskell.org/leksah-collector
+bug-reports: http://code.google.com/p/leksah/issues/list
+synopsis: Metadata collection for leksah
+description: The interface to GHC-API for leksah
+category: IDE
+author: Juergen "jutaro" Nicklisch-Franken, Hamish Mackenzie
+data-dir: ""
+tested-with: GHC ==6.10 || ==6.12 || ==7.0
+data-files:
+            data/prefscoll.lkshp
+flag curl
+    Default: False
+    Description: Use runs curl instead of wget (curl is the default on OSX)
+
+flag libcurl
+    Default: False
+    Description: Use libcurl instead of running wget
+
+flag threaded
+    default: True
+    description: Build with support for multithreaded execution
+
+library
+    default-language: Haskell98
+    build-depends: Cabal >=1.6.0.1 && <1.15, base >= 4.0.0.0 && <4.6, binary >=0.5.0.0 && <0.6,
+               binary-shared >=0.8 && <0.9, bytestring >=0.9.0.1 && <0.10,
+               containers >=0.2.0.0 && <0.5,
+               directory >=1.0.0.2 && <1.2, filepath >=1.1.0.1 && <1.4, ghc >=6.10.1 && <7.5,
+               ltk >=0.12.1.0 && <0.13, parsec >=2.1.0.1 && <3.2,
+               pretty >=1.0.1.0 && <1.2, time >=1.1 && <1.5, deepseq >=1.1 && <1.4,
+               hslogger >= 1.0.7 && <1.2, network >=2.2 && <3.0, enumerator >=0.4.14 && < 0.5,
+               attoparsec-enumerator >=0.3 && <0.4, attoparsec >=0.10.0.3 && <0.11,
+               transformers >=0.2.2.0 && <0.4
+    if (impl(ghc >= 7.4))
+       build-depends: haddock >= 2.7.2 && <2.11
+    else
+       if (impl(ghc >= 7.2))
+          build-depends: haddock >= 2.7.2 && <2.10
+       else
+          if (impl(ghc >= 7.0))
+             build-depends: haddock >= 2.7.2 && <2.9.3
+          else
+             if (impl(ghc >= 6.12))
+                build-depends: haddock >= 2.7.2 && <2.9
+             else
+                build-depends: haddock-leksah == 2.5.0
+
+    if (impl(ghc >= 7.2))
+       build-depends: process >= 1.1 && <1.2
+    else
+       build-depends: process-leksah >=1.0.1.3 && <1.1
+
+    if os(windows)
+        build-depends: Win32 >=2.2.0.0 && <2.3
+        extra-libraries: kernel32  pango-1.0 glib-2.0
+    else
+        build-depends: unix >=2.3.1.0 && <2.6
+
+    if flag(curl) || os(osx)
+        cpp-options: -DUSE_CURL
+
+    if flag(libcurl)
+        build-depends: curl >=1.3.5 && <1.4
+        cpp-options: -DUSE_LIBCURL
+
+    exposed-modules: IDE.Utils.GHCUtils IDE.Utils.Utils IDE.Utils.Tool
+        IDE.Utils.FileUtils IDE.Core.CTypes IDE.Core.Serializable IDE.StrippedPrefs
+        IDE.Utils.Server IDE.Metainfo.PackageCollector IDE.Utils.VersionUtils
+    exposed: True
+    buildable: True
+    default-extensions: CPP
+    hs-source-dirs: src
+    other-modules:
+        IDE.Metainfo.WorkspaceCollector IDE.Metainfo.InterfaceCollector
+        IDE.Metainfo.SourceCollectorH
+        IDE.Metainfo.SourceDB Paths_leksah_server
+    if (impl(ghc >= 6.12))
+       ghc-options: -Wall -fno-warn-unused-do-bind -ferror-spans 
+    else
+       ghc-options: -Wall -ferror-spans 
+    ghc-prof-options: -auto-all -prof
+
+executable leksah-server
+    default-language: Haskell98
+    build-depends: Cabal >=1.6.0.1 && <1.15, base >= 4.0.0.0 && <4.6, binary >=0.5.0.0 && <0.6,
+               binary-shared >=0.8 && <0.9, bytestring >=0.9.0.1 && <0.10,
+               containers >=0.2.0.0 && <0.5,
+               directory >=1.0.0.2 && <1.2, filepath >=1.1.0.1 && <1.6, ghc >=6.10.1 && <7.5,
+               ltk >=0.12.1.0 && <0.13, parsec >=2.1.0.1 && <3.2,
+               pretty >=1.0.1.0 && <1.2, time >=1.1 && <1.5, deepseq >=1.1 && <1.4,
+               hslogger >= 1.0.7 && <1.2, network >=2.2 && <3.0, enumerator >= 0.4.14 && <0.5,
+               attoparsec-enumerator >=0.3 && <0.4, attoparsec >=0.10.0.3 && <0.11,
+               transformers >=0.2.2.0 && <0.4
+    if (impl(ghc >= 7.4))
+       build-depends: haddock >= 2.7.2 && <2.11
+    else
+       if (impl(ghc >= 7.2))
+          build-depends: haddock >= 2.7.2 && <2.10
+       else
+          if (impl(ghc >= 7.0))
+             build-depends: haddock >= 2.7.2 && <2.9.3
+          else
+             if (impl(ghc >= 6.12))
+                build-depends: haddock >= 2.7.2 && <2.9
+             else
+                build-depends: haddock-leksah == 2.5.0
+
+    if (impl(ghc >= 7.2))
+       build-depends: process >= 1.1 && <1.2
+    else
+       build-depends: process-leksah >=1.0.1.3 && <1.1
+
+    if os(windows)
+        build-depends: Win32 >=2.2.0.0 && <2.3
+        extra-libraries: kernel32 pango-1.0 glib-2.0
+    else
+        build-depends: unix >=2.3.1.0 && <2.6
+
+    if flag(curl) || os(osx)
+        cpp-options: -DUSE_CURL
+
+    if flag(libcurl)
+        build-depends: curl >=1.3.5 && <1.4
+        cpp-options: -DUSE_LIBCURL
+
+    main-is: IDE/Metainfo/Collector.hs
+    buildable: True
+    default-extensions: CPP
+    hs-source-dirs: src
+    other-modules: IDE.StrippedPrefs IDE.Utils.GHCUtils IDE.Utils.Utils
+        IDE.Core.CTypes IDE.Core.Serializable
+        IDE.Metainfo.WorkspaceCollector IDE.Metainfo.InterfaceCollector
+        IDE.Metainfo.SourceCollectorH IDE.Metainfo.SourceDB IDE.Utils.Tool
+        IDE.HeaderParser IDE.Metainfo.PackageCollector
+
+    if flag(threaded)
+        ghc-options: -threaded
+
+    if impl(ghc >= 7.0)
+        ghc-options: -rtsopts
+
+    if impl(ghc >= 6.12)
+        ghc-options: -Wall -fno-warn-unused-do-bind -ferror-spans 
+    else
+        ghc-options: -Wall -ferror-spans 
+    ghc-prof-options: -auto-all -prof
+
+executable leksahecho
+    default-language: Haskell98
+    main-is: LeksahEcho.hs
+    buildable: True
+    default-extensions: CPP
+    hs-source-dirs: src
+    ghc-prof-options: -auto-all -prof
+--    ghc-shared-options: -auto-all -prof
+    build-depends:  base >= 4.0.0.0 && <4.6, hslogger >= 1.0.7 && <1.2, deepseq >=1.1 && <1.4,
+               bytestring >=0.9.0.1 && <0.10, enumerator >= 0.4.14 && <0.5,
+               attoparsec-enumerator >=0.3 && <0.4, attoparsec >=0.10.0.3 && <0.11,
+               transformers >=0.2.2.0 && <0.4
+
+    if (impl(ghc >= 7.2))
+       build-depends: process >= 1.1 && <1.2
+    else
+       build-depends: process-leksah >=1.0.1.3 && <1.1
+
+    if flag(threaded)
+        ghc-options: -threaded
+
+    if (impl(ghc >= 6.12))
+       ghc-options: -Wall -fno-warn-unused-do-bind -ferror-spans 
+    else
+       ghc-options: -Wall -ferror-spans 
+
+test-suite test-tool
+    default-language: Haskell98
+    type:       exitcode-stdio-1.0
+    hs-source-dirs: tests
+    main-is:    TestTool.hs
+    build-depends: base >= 4.0.0.0 && <4.6,  hslogger >= 1.0.7 && <1.3,
+               leksah-server,
+               HUnit >=1.2 && <1.3, transformers >=0.2.2.0 && <0.4, enumerator >=0.4.14 && <0.5
+
+    if (impl(ghc >= 7.2))
+       build-depends: process >= 1.1 && <1.2
+    else
+       build-depends: process-leksah >=1.0.1.3 && <1.1
+
diff --git a/src/IDE/Metainfo/WorkspaceCollector.hs b/src/IDE/Metainfo/WorkspaceCollector.hs
--- a/src/IDE/Metainfo/WorkspaceCollector.hs
+++ b/src/IDE/Metainfo/WorkspaceCollector.hs
@@ -332,23 +332,27 @@
     notDocDecl _              = True
 finishedDoc _ _ rest = rest
 
+sigNameNoLoc' :: Sig name -> [name]
 #if MIN_VERSION_ghc(7,2,0)
-sigNameNoLoc :: Sig name -> Maybe name
--- Used only in Haddock
-sigNameNoLoc (TypeSig   [n] _)          = Just (unLoc n)
-sigNameNoLoc (SpecSig   n _ _)        = Just (unLoc n)
-sigNameNoLoc (InlineSig n _)          = Just (unLoc n)
-sigNameNoLoc (FixSig (FixitySig n _)) = Just (unLoc n)
-sigNameNoLoc _                        = Nothing
+sigNameNoLoc' (TypeSig   ns _)         = map unLoc ns
+sigNameNoLoc' (SpecSig   n _ _)        = [unLoc n]
+sigNameNoLoc' (InlineSig n _)          = [unLoc n]
+sigNameNoLoc' (FixSig (FixitySig n _)) = [unLoc n]
+sigNameNoLoc' _                        = []
+#else
+sigNameNoLoc' = maybe [] (:[]) . sigNameNoLoc
 #endif
 
 attachSignatures :: [(NDecl, (Maybe NDoc))] -> [(NDecl,Maybe NDoc)]
     -> [(NDecl, (Maybe NDoc), [(NSig,Maybe NDoc)])]
 attachSignatures signatures = map (attachSignature signaturesMap)
     where
-    signaturesMap = Map.fromListWith (++) $ map sigMap signatures
-    sigMap (L loc (SigD sig),c) | Just name <- sigNameNoLoc sig = (name, [(L loc sig,c)])
-    sigMap _ = error "Unexpected location type"
+    signaturesMap = Map.fromListWith (++) $ concatMap sigMap signatures
+
+    sigMap (L loc (SigD sig),c) | nameList <- sigNameNoLoc' sig =
+        map (\n -> (n, [(L loc sig,c)])) nameList
+    sigMap v = error ("Unexpected location type" ++ (showSDoc . ppr) v)
+
     attachSignature :: Map RdrName  [(NSig,Maybe NDoc)] -> (NDecl, (Maybe NDoc))
         -> (NDecl, (Maybe NDoc), [(NSig,Maybe NDoc)])
     attachSignature signaturesMap'  (decl,mbDoc) =
