diff --git a/Graphics/UI/Gtk/WebKit/CacheModel.chs b/Graphics/UI/Gtk/WebKit/CacheModel.chs
new file mode 100644
--- /dev/null
+++ b/Graphics/UI/Gtk/WebKit/CacheModel.chs
@@ -0,0 +1,94 @@
+{-# LANGUAGE CPP #-}
+-- -*-haskell-*-
+-----------------------------------------------------------------------------
+--  Module      :  Graphics.UI.Gtk.WebKit.CacheModel
+--  Author      :  Andy Stewart
+--  Copyright   :  (c) 2010 Andy Stewart <lazycat.manatee@gmail.com>
+-- 
+--  This library is free software; you can redistribute it and/or
+--  modify it under the terms of the GNU Lesser General Public
+--  License as published by the Free Software Foundation; either
+--  version 2.1 of the License, or (at your option) any later version.
+--
+--  This library 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
+--  Lesser General Public License for more details.
+--
+-- |
+-- Maintainer  : gtk2hs-users@lists.sourceforge.net
+-- Stability   : provisional
+-- Portability : portable (depends on GHC)
+--
+-- Object used to communicate with the application when downloading 
+-----------------------------------------------------------------------------
+
+module Graphics.UI.Gtk.WebKit.CacheModel (
+#if WEBKIT_CHECK_VERSION (1,1,18)
+-- * Enums
+   CacheModel (..),
+
+-- * Methods
+  getCacheModel,   
+  setCacheModel,
+#endif
+) where
+
+import Control.Monad		(liftM)
+
+import System.Glib.FFI
+import System.Glib.UTFString
+import System.Glib.GList
+import System.Glib.Attributes
+import System.Glib.Properties
+import System.Glib.GError 
+import Graphics.UI.Gtk.Gdk.Events
+
+{#import Graphics.UI.Gtk.Abstract.Object#}	(makeNewObject)
+{#import Graphics.UI.Gtk.WebKit.Types#}
+{#import Graphics.UI.Gtk.WebKit.Signals#}
+{#import Graphics.UI.Gtk.WebKit.Internal#}
+{#import System.Glib.GObject#}
+{#import Graphics.UI.Gtk.General.Selection#} ( TargetList )
+{#import Graphics.UI.Gtk.MenuComboToolbar.Menu#}
+{#import Graphics.UI.Gtk.General.Enums#}
+
+{#context lib="webkit" prefix ="webkit"#}
+
+#if WEBKIT_CHECK_VERSION (1,1,18)
+------------------
+-- Enums
+
+{#enum CacheModel {underscoreToCase}#}
+
+------------------
+-- Methods
+-- | Returns the current cache model. For more information about this value check the documentation of
+-- the function 'setCacheModel'.
+-- 
+-- * Since 1.1.18
+getCacheModel :: IO CacheModel
+getCacheModel = 
+  liftM (toEnum . fromIntegral) $
+  {#call webkit_get_cache_model #} 
+
+-- | Specifies a usage model for WebViews, which WebKit will use to determine its caching behavior. All
+-- web views follow the cache model. This cache model determines the RAM and disk space to use for
+-- caching previously viewed content .
+-- 
+-- Research indicates that users tend to browse within clusters of documents that hold resources in
+-- common, and to revisit previously visited documents. WebKit and the frameworks below it include
+-- built-in caches that take advantage of these patterns, substantially improving document load speed
+-- in browsing situations. The WebKit cache model controls the behaviors of all of these caches,
+-- including various WebCore caches.
+-- 
+-- Browsers can improve document load speed substantially by specifying
+-- WebkitCacheModelWebBrowser. Applications without a browsing interface can reduce memory usage
+-- substantially by specifying WebkitCacheModelDocumentViewer. Default value is
+-- WebkitCacheModelWebBrowser.
+--
+-- * Since 1.1.18
+setCacheModel :: CacheModel -> IO ()
+setCacheModel model =
+  {#call webkit_set_cache_model #} ((fromIntegral . fromEnum) model)
+#endif
diff --git a/Graphics/UI/Gtk/WebKit/Download.chs b/Graphics/UI/Gtk/WebKit/Download.chs
--- a/Graphics/UI/Gtk/WebKit/Download.chs
+++ b/Graphics/UI/Gtk/WebKit/Download.chs
@@ -27,6 +27,7 @@
 module Graphics.UI.Gtk.WebKit.Download (
 -- * Types
   Download,
+  DownloadClass,
 
 -- * Enums
   DownloadError(..),
@@ -40,6 +41,9 @@
   downloadCancel,
   downloadGetUri,
   downloadGetNetworkRequest,
+#if WEBKIT_CHECK_VERSION (1,1,16)
+  downloadGetNetworkResponse,
+#endif
   downloadGetSuggestedFilename,
   downloadGetDestinationUri,
   downloadGetProgress,
@@ -53,7 +57,9 @@
   currentSize,
   destinationUri,
   networkRequest,
+#if WEBKIT_CHECK_VERSION (1,1,16)
   networkResponse,
+#endif
   progress,
   status,
   suggestedFilename,
@@ -129,6 +135,17 @@
 downloadGetNetworkRequest dl =
     makeNewGObject mkNetworkRequest $ {#call download_get_network_request#} (toDownload dl)
 
+#if WEBKIT_CHECK_VERSION (1,1,16)
+-- | Retrieves the 'NetworkResponse' object that backs the download process.
+--
+-- * Since 1.1.16
+downloadGetNetworkResponse ::
+    DownloadClass self => self
+ -> IO NetworkResponse    
+downloadGetNetworkResponse dl = 
+    makeNewGObject mkNetworkResponse $ {#call download_get_network_response#} (toDownload dl)
+#endif
+
 -- | Retrieves the filename that was suggested by the server,
 -- or the one derived from the URI.
 downloadGetSuggestedFilename :: 
@@ -226,6 +243,7 @@
   newAttrFromObjectProperty "network-request"
   {#call pure webkit_network_request_get_type#}
 
+#if WEBKIT_CHECK_VERSION (1,1,16)
 -- | The NetworkResponse instance associated with the download.
 --
 -- * Since 1.1.16
@@ -233,6 +251,7 @@
 networkResponse = 
   newAttrFromObjectProperty "network-response"
   {#call pure webkit_network_response_get_type#}
+#endif
 
 -- | Determines the current progress of the download. 
 -- Notice that, although the progress changes are reported as soon as possible, 
diff --git a/Graphics/UI/Gtk/WebKit/GeolocationPolicyDecision.chs b/Graphics/UI/Gtk/WebKit/GeolocationPolicyDecision.chs
new file mode 100644
--- /dev/null
+++ b/Graphics/UI/Gtk/WebKit/GeolocationPolicyDecision.chs
@@ -0,0 +1,77 @@
+{-# LANGUAGE CPP #-}
+-- -*-haskell-*-
+-----------------------------------------------------------------------------
+--  Module      :  Graphics.UI.Gtk.WebKit.GeolocationPolicyDecision
+--  Author      :  Andy Stewart
+--  Copyright   :  (c) 2010 Andy Stewart <lazycat.manatee@gmail.com>
+-- 
+--  This library is free software; you can redistribute it and/or
+--  modify it under the terms of the GNU Lesser General Public
+--  License as published by the Free Software Foundation; either
+--  version 2.1 of the License, or (at your option) any later version.
+--
+--  This library 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
+--  Lesser General Public License for more details.
+--
+-- |
+-- Maintainer  : gtk2hs-users@lists.sourceforge.net
+-- Stability   : provisional
+-- Portability : portable (depends on GHC)
+--
+-- Object used to communicate with the application when downloading 
+-----------------------------------------------------------------------------
+
+module Graphics.UI.Gtk.WebKit.GeolocationPolicyDecision (
+#if WEBKIT_CHECK_VERSION (1,1,23)
+-- * Details
+-- | WebKitGeolocationPolicyDecision objects are given to the application when
+-- geolocation-policy-decision-requested signal is emitted. The application uses it to tell the engine
+-- whether it wants to allow or deny geolocation for a given frame.
+  
+-- * Types
+   GeolocationPolicyDecision,
+   GeolocationPolicyDecisionClass,
+   
+-- * Methods  
+   geolocationPolicyAllow,
+   geolocationPolicyDeny,
+#endif
+) where
+import Control.Monad		(liftM)
+
+import System.Glib.FFI
+import System.Glib.UTFString
+import System.Glib.GList
+import System.Glib.Attributes
+import System.Glib.Properties
+import System.Glib.GError 
+import Graphics.UI.Gtk.Gdk.Events
+
+{#import Graphics.UI.Gtk.Abstract.Object#}	(makeNewObject)
+{#import Graphics.UI.Gtk.WebKit.Types#}
+{#import Graphics.UI.Gtk.WebKit.Signals#}
+{#import Graphics.UI.Gtk.WebKit.Internal#}
+{#import System.Glib.GObject#}
+{#import Graphics.UI.Gtk.General.Selection#} ( TargetList )
+{#import Graphics.UI.Gtk.MenuComboToolbar.Menu#}
+{#import Graphics.UI.Gtk.General.Enums#}
+
+{#context lib="webkit" prefix ="webkit"#}
+
+#if WEBKIT_CHECK_VERSION (1,1,23)
+-- | Will send the allow decision to the policy implementer.
+--
+-- * Since 1.1.23
+geolocationPolicyAllow :: GeolocationPolicyDecisionClass decision => decision -> IO ()
+geolocationPolicyAllow decision =
+  {#call webkit_geolocation_policy_allow #} (toGeolocationPolicyDecision decision)
+
+-- | Will send the deny decision to the policy implementer.
+--
+-- * Since 1.1.23
+geolocationPolicyDeny :: GeolocationPolicyDecisionClass decision => decision -> IO ()
+geolocationPolicyDeny decision =
+  {#call webkit_geolocation_policy_deny #} (toGeolocationPolicyDecision decision)
+#endif
diff --git a/Graphics/UI/Gtk/WebKit/HitTestResult.chs b/Graphics/UI/Gtk/WebKit/HitTestResult.chs
--- a/Graphics/UI/Gtk/WebKit/HitTestResult.chs
+++ b/Graphics/UI/Gtk/WebKit/HitTestResult.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.HitTestResult (
 -- * Types
   HitTestResult,
+  HitTestResultClass,
 
 -- * Enums.
   HitTestResultContext(..),
diff --git a/Graphics/UI/Gtk/WebKit/NetworkRequest.chs b/Graphics/UI/Gtk/WebKit/NetworkRequest.chs
--- a/Graphics/UI/Gtk/WebKit/NetworkRequest.chs
+++ b/Graphics/UI/Gtk/WebKit/NetworkRequest.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.NetworkRequest (
 -- * Types
   NetworkRequest,
+  NetworkRequestClass,
 
 -- * Constructors
   networkRequestNew,
diff --git a/Graphics/UI/Gtk/WebKit/NetworkResponse.chs b/Graphics/UI/Gtk/WebKit/NetworkResponse.chs
--- a/Graphics/UI/Gtk/WebKit/NetworkResponse.chs
+++ b/Graphics/UI/Gtk/WebKit/NetworkResponse.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.NetworkResponse (
 -- * Types
   NetworkResponse,
+  NetworkResponseClass,
 
 -- * Methods
   networkResponseSetUri,
diff --git a/Graphics/UI/Gtk/WebKit/SecurityOrigin.chs b/Graphics/UI/Gtk/WebKit/SecurityOrigin.chs
--- a/Graphics/UI/Gtk/WebKit/SecurityOrigin.chs
+++ b/Graphics/UI/Gtk/WebKit/SecurityOrigin.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.SecurityOrigin (
 -- * Types
   SecurityOrigin,
+  SecurityOriginClass,
 
 -- * Methods  
   securityOriginGetAllWebDatabases,
diff --git a/Graphics/UI/Gtk/WebKit/SoupAuthDialog.chs b/Graphics/UI/Gtk/WebKit/SoupAuthDialog.chs
--- a/Graphics/UI/Gtk/WebKit/SoupAuthDialog.chs
+++ b/Graphics/UI/Gtk/WebKit/SoupAuthDialog.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.SoupAuthDialog (
 -- * Types
   SoupAuthDialog,
+  SoupAuthDialogClass,
 ) where
 
 import System.Glib.FFI
diff --git a/Graphics/UI/Gtk/WebKit/Types.chs b/Graphics/UI/Gtk/WebKit/Types.chs
--- a/Graphics/UI/Gtk/WebKit/Types.chs
+++ b/Graphics/UI/Gtk/WebKit/Types.chs
@@ -106,7 +106,11 @@
   WebWindowFeatures(WebWindowFeatures), WebWindowFeaturesClass,
   toWebWindowFeatures, 
   mkWebWindowFeatures, unWebWindowFeatures,
-  castToWebWindowFeatures, gTypeWebWindowFeatures
+  castToWebWindowFeatures, gTypeWebWindowFeatures,
+  GeolocationPolicyDecision(GeolocationPolicyDecision), GeolocationPolicyDecisionClass,
+  toGeolocationPolicyDecision, 
+  mkGeolocationPolicyDecision, unGeolocationPolicyDecision,
+  castToGeolocationPolicyDecision, gTypeGeolocationPolicyDecision
   ) where
 
 import Foreign.ForeignPtr (ForeignPtr, castForeignPtr, unsafeForeignPtrToPtr)
@@ -545,4 +549,27 @@
 gTypeWebWindowFeatures :: GType
 gTypeWebWindowFeatures =
   {# call fun unsafe webkit_web_window_features_get_type #}
+
+-- ************************************************** GeolocationPolicyDecision
+
+{#pointer *WebKitGeolocationPolicyDecision as GeolocationPolicyDecision foreign newtype #} deriving (Eq,Ord)
+
+mkGeolocationPolicyDecision = (GeolocationPolicyDecision, objectUnrefFromMainloop)
+unGeolocationPolicyDecision (GeolocationPolicyDecision o) = o
+
+class GObjectClass o => GeolocationPolicyDecisionClass o
+toGeolocationPolicyDecision :: GeolocationPolicyDecisionClass o => o -> GeolocationPolicyDecision
+toGeolocationPolicyDecision = unsafeCastGObject . toGObject
+
+instance GeolocationPolicyDecisionClass GeolocationPolicyDecision
+instance GObjectClass GeolocationPolicyDecision where
+  toGObject = GObject . castForeignPtr . unGeolocationPolicyDecision
+  unsafeCastGObject = GeolocationPolicyDecision . castForeignPtr . unGObject
+
+castToGeolocationPolicyDecision :: GObjectClass obj => obj -> GeolocationPolicyDecision
+castToGeolocationPolicyDecision = castTo gTypeGeolocationPolicyDecision "GeolocationPolicyDecision"
+
+gTypeGeolocationPolicyDecision :: GType
+gTypeGeolocationPolicyDecision =
+  {# call fun unsafe webkit_geolocation_policy_decision_get_type #}
 
diff --git a/Graphics/UI/Gtk/WebKit/WebBackForwardList.chs b/Graphics/UI/Gtk/WebKit/WebBackForwardList.chs
--- a/Graphics/UI/Gtk/WebKit/WebBackForwardList.chs
+++ b/Graphics/UI/Gtk/WebKit/WebBackForwardList.chs
@@ -25,7 +25,9 @@
 
 module Graphics.UI.Gtk.WebKit.WebBackForwardList (
 -- * Types
+  WebViewClass,
   WebBackForwardList,
+  WebBackForwardListClass,
 
 -- * Constructors
   webBackForwardListNewWithWebView,
diff --git a/Graphics/UI/Gtk/WebKit/WebDataSource.chs b/Graphics/UI/Gtk/WebKit/WebDataSource.chs
--- a/Graphics/UI/Gtk/WebKit/WebDataSource.chs
+++ b/Graphics/UI/Gtk/WebKit/WebDataSource.chs
@@ -31,6 +31,7 @@
 module Graphics.UI.Gtk.WebKit.WebDataSource (
 -- * Types
   WebDataSource,
+  WebDataSourceClass,
 
 -- * Constructors
   webDataSourceNew,
diff --git a/Graphics/UI/Gtk/WebKit/WebDatabase.chs b/Graphics/UI/Gtk/WebKit/WebDatabase.chs
--- a/Graphics/UI/Gtk/WebKit/WebDatabase.chs
+++ b/Graphics/UI/Gtk/WebKit/WebDatabase.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.WebDatabase (
 -- * Types
   WebDatabase,
+  WebDatabaseClass,
 
 -- * Methods  
   webDatabaseGetDisplayName,
diff --git a/Graphics/UI/Gtk/WebKit/WebFrame.chs b/Graphics/UI/Gtk/WebKit/WebFrame.chs
--- a/Graphics/UI/Gtk/WebKit/WebFrame.chs
+++ b/Graphics/UI/Gtk/WebKit/WebFrame.chs
@@ -35,6 +35,8 @@
 module Graphics.UI.Gtk.WebKit.WebFrame (
 -- * Types
   WebFrame,
+  WebFrameClass,
+  LoadStatus,
 
 -- * Constructors
   webFrameNew,
@@ -42,6 +44,9 @@
 -- * Methods
   webFrameGetWebView,
   webFrameGetName,
+#if WEBKIT_CHECK_VERSION (1,1,18)
+  webFrameGetNetworkResponse,
+#endif
   webFrameGetTitle,
   webFrameGetUri,
   webFrameGetParent,
@@ -106,6 +111,17 @@
  -> IO (Maybe String) -- ^ the name string or @Nothing@ in case failed.
 webFrameGetName webframe = 
     {#call web_frame_get_name#} (toWebFrame webframe) >>= maybePeek peekCString
+
+#if WEBKIT_CHECK_VERSION (1,1,18)
+-- | Returns a WebKitNetworkResponse object representing the response that was given to the request for
+-- the given frame, or 'Nothing' if the frame was not created by a load. 
+--
+-- * Since 1.1.18
+webFrameGetNetworkResponse :: WebFrameClass self => self -> IO (Maybe NetworkResponse)
+webFrameGetNetworkResponse frame =
+    maybeNull (makeNewGObject mkNetworkResponse) $ 
+   {#call webkit_web_frame_get_network_response#} (toWebFrame frame)
+#endif
 
 -- | Return the title of the given 'WebFrame'.
 webFrameGetTitle :: 
diff --git a/Graphics/UI/Gtk/WebKit/WebHistoryItem.chs b/Graphics/UI/Gtk/WebKit/WebHistoryItem.chs
--- a/Graphics/UI/Gtk/WebKit/WebHistoryItem.chs
+++ b/Graphics/UI/Gtk/WebKit/WebHistoryItem.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.WebHistoryItem (
 -- * Types
   WebHistoryItem,
+  WebHistoryItemClass,
 
 -- * Constructors
   webHistoryItemNew,
@@ -45,6 +46,9 @@
   webHistoryItemGetUri,
   webHistoryItemGetOriginalUri,
   webHistoryItemGetLastVisitedTime,
+#if WEBKIT_CHECK_VERSION (1,1,18)
+  webHistoryItemCopy,
+#endif
 ) where
 
 import Control.Monad		(liftM)
@@ -152,6 +156,17 @@
     liftM realToFrac $ 
       {#call web_history_item_get_last_visited_time#} 
         (toWebHistoryItem webhistoryitem)
+
+#if WEBKIT_CHECK_VERSION (1,1,18)
+-- | Makes a copy of the item for use with other WebView objects.
+--
+-- * Since 1.1.18    
+webHistoryItemCopy :: WebHistoryItemClass self => self
+ -> IO WebHistoryItem
+webHistoryItemCopy webhistoryitem =
+    makeNewGObject mkWebHistoryItem $ 
+    {#call webkit_web_history_item_copy#} (toWebHistoryItem webhistoryitem)
+#endif
 
 -- | The title of the 'WebHistoryItem'
 --
diff --git a/Graphics/UI/Gtk/WebKit/WebInspector.chs b/Graphics/UI/Gtk/WebKit/WebInspector.chs
--- a/Graphics/UI/Gtk/WebKit/WebInspector.chs
+++ b/Graphics/UI/Gtk/WebKit/WebInspector.chs
@@ -26,14 +26,23 @@
 module Graphics.UI.Gtk.WebKit.WebInspector (
 -- * Types
   WebInspector,
+  WebInspectorClass,
 
 -- * Methods
   webInspectorGetInspectedUri,
   webInspectorGetWebView,
+#if WEBKIT_CHECK_VERSION (1,1,17)
+  webInspectorInspectCoordinates,
+  webInspectorShow,
+  webInspectorClose,
+#endif
 
 -- * Attribute  
   webInspectorInspectedUri,
   webInspectorJSProfilingEnable,
+#if WEBKIT_CHECK_VERSION (1,1,17)
+  webInspectorTimelineProfilingEnabled,
+#endif
   webInspectorWebView,
 
 -- * Signals
@@ -85,6 +94,41 @@
       {#call web_inspector_get_web_view#}
         (toWebInspector inspector)
 
+#if WEBKIT_CHECK_VERSION (1,1,17)
+-- | Causes the Web Inspector to inspect the node that is located at the given coordinates of the
+-- widget. The coordinates should be relative to the WebKitWebView widget, not to the scrollable
+-- content, and may be obtained from a 'Event' directly.
+-- 
+-- This means x, and y being zero doesn't guarantee you will hit the left-most top corner of the
+-- content, since the contents may have been scrolled.
+-- 
+-- * Since 1.1.17
+webInspectorInspectCoordinates :: WebInspectorClass self
+  => self  -- ^ @webInspector@ the WebKitWebInspector that will do the inspection 
+  -> Int  -- ^ @x@             the X coordinate of the node to be inspected       
+  -> Int  -- ^ @y@             the Y coordinate of the node to be inspected       
+  -> IO ()
+webInspectorInspectCoordinates inspect x y =
+  {#call web_inspector_inspect_coordinates#}
+    (toWebInspector inspect)
+    (fromIntegral x)
+    (fromIntegral y)
+
+-- | Causes the Web Inspector to be shown.
+--
+-- * Since 1.1.17
+webInspectorShow :: WebInspectorClass self => self -> IO ()
+webInspectorShow inspect =
+  {#call webkit_web_inspector_show#} (toWebInspector inspect)
+
+-- | Causes the Web Inspector to be closed.
+--
+-- * Since 1.1.17
+webInspectorClose :: WebInspectorClass self => self -> IO ()
+webInspectorClose inspect =
+  {#call webkit_web_inspector_close#} (toWebInspector inspect)
+#endif
+
 -- * Attribute
 
 -- | The URI that is currently being inspected.
@@ -94,6 +138,16 @@
 -- | This is enabling JavaScript profiling in the Inspector. This means that Console.profiles will return the profiles.
 webInspectorJSProfilingEnable :: (WebInspectorClass self) => Attr self Bool
 webInspectorJSProfilingEnable = newAttrFromBoolProperty "javascript-profiling-enabled"
+
+#if WEBKIT_CHECK_VERSION (1,1,17)
+-- | This is enabling Timeline profiling in the Inspector.
+-- 
+-- Default value: 'False'
+-- 
+-- * Since 1.1.17
+webInspectorTimelineProfilingEnabled :: (WebInspectorClass self) => Attr self Bool
+webInspectorTimelineProfilingEnabled = newAttrFromBoolProperty "timeline-profiling-enabled"
+#endif
 
 -- | The Web View that renders the Web Inspector itself.
 webInspectorWebView :: (WebInspectorClass self) => ReadAttr self WebView
diff --git a/Graphics/UI/Gtk/WebKit/WebNavigationAction.chs b/Graphics/UI/Gtk/WebKit/WebNavigationAction.chs
--- a/Graphics/UI/Gtk/WebKit/WebNavigationAction.chs
+++ b/Graphics/UI/Gtk/WebKit/WebNavigationAction.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.WebNavigationAction (
 -- * Types
   WebNavigationAction,
+  WebNavigationActionClass,
 
 -- * Enums
   NavigationReason(..),
diff --git a/Graphics/UI/Gtk/WebKit/WebPolicyDecision.chs b/Graphics/UI/Gtk/WebKit/WebPolicyDecision.chs
--- a/Graphics/UI/Gtk/WebKit/WebPolicyDecision.chs
+++ b/Graphics/UI/Gtk/WebKit/WebPolicyDecision.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.WebPolicyDecision (
 -- * Types
   WebPolicyDecision,
+  WebPolicyDecisionClass,
 
 -- * Methods  
   webPolicyDecisionDownload,
diff --git a/Graphics/UI/Gtk/WebKit/WebResource.chs b/Graphics/UI/Gtk/WebKit/WebResource.chs
--- a/Graphics/UI/Gtk/WebKit/WebResource.chs
+++ b/Graphics/UI/Gtk/WebKit/WebResource.chs
@@ -31,6 +31,7 @@
 module Graphics.UI.Gtk.WebKit.WebResource (
 -- * Types
   WebResource,
+  WebResourceClass,
 
 -- * Constructors
   webResourceNew,
diff --git a/Graphics/UI/Gtk/WebKit/WebSettings.chs b/Graphics/UI/Gtk/WebKit/WebSettings.chs
--- a/Graphics/UI/Gtk/WebKit/WebSettings.chs
+++ b/Graphics/UI/Gtk/WebKit/WebSettings.chs
@@ -26,6 +26,8 @@
 module Graphics.UI.Gtk.WebKit.WebSettings (
 -- * Types
   WebSettings,
+  WebSettingsClass,
+  EditingBehavior,
 
 -- * Constructors
   webSettingsNew,
@@ -35,13 +37,24 @@
   webSettingsGetUserAgent,
 
 -- * Attributes
-  webSettingsAutoLoadImages,
-  webSettingsAutoShrinkImages,
+-- ** Family
   webSettingsCursiveFontFamily,
-  webSettingsDefaultEncoding,
   webSettingsDefaultFontFamily,
+  webSettingsFantasyFontFamily,
+  webSettingsMonospaceFontFamily,
+  webSettingsSansFontFamily,
+  webSettingsSerifFontFamily,
+-- ** FontSize
   webSettingsDefaultFontSize,
   webSettingsDefaultMonospaceFontSize,
+  webSettingsMinimumFontSize,
+  webSettingsMinimumLogicalFontSize,
+-- ** Image
+  webSettingsAutoLoadImages,
+  webSettingsAutoShrinkImages,
+-- ** Encoding
+  webSettingsDefaultEncoding,
+-- ** Other
   webSettingsEditingBehavior,
   webSettingsEnableCaretBrowsing,
   webSettingsEnableDeveloperExtras,
@@ -54,21 +67,28 @@
   webSettingsEnableSpellChecking,
   webSettingsEnableUniversalAccessFromFileUris,
   webSettingsEnableXssAuditor,
+  webSettingsEnableSiteSpecificQuirks,
+#if WEBKIT_CHECK_VERSION (1,1,16)
+  webSettingsEnableDomPaste,
+#endif
+#if WEBKIT_CHECK_VERSION (1,1,18)
+  webSettingsEnableDefaultContextMenu,
+  webSettingsEnablePageCache,
+#endif
+#if WEBKIT_CHECK_VERSION (1,1,23)
+  webSettingsEnableSpatialNavigation,
+#endif
   webSettingsEnforce96Dpi,
-  webSettingsFantasyFontFamily,
   webSettingsJSCanOpenWindowAuto,
-  webSettingsMinimumFontSize,
-  webSettingsMinimumLogicalFontSize,
-  webSettingsMonospaceFontFamily,
   webSettingsPrintBackgrounds,
   webSettingsResizableTextAreas,
-  webSettingsSansFontFamily,
-  webSettingsSerifFontFamily,
   webSettingsSpellCheckingLang,
+#if WEBKIT_CHECK_VERSION (1,1,17)
+  webSettingsTabKeyCyclesThroughElements,
+#endif
   webSettingsUserAgent,
   webSettingsUserStylesheetUri,
   webSettingsZoomStep,
-  webSettingsEnableSiteSpecificQuirks,
 ) where
 
 import Control.Monad		(liftM)
@@ -178,6 +198,17 @@
 webSettingsEnableDeveloperExtras :: (WebSettingsClass self) => Attr self Bool
 webSettingsEnableDeveloperExtras = newAttrFromBoolProperty "enable-developer-extras"
 
+#if WEBKIT_CHECK_VERSION (1,1,16)
+-- | Whether to enable DOM paste. If set to 'True', document.execCommand("Paste") will correctly execute
+-- and paste content of the clipboard.
+-- 
+-- Default value: 'False'
+--
+-- * Since 1.1.16
+webSettingsEnableDomPaste :: (WebSettingsClass self) => Attr self Bool
+webSettingsEnableDomPaste = newAttrFromBoolProperty "enable-dom-paste"
+#endif
+
 -- | Whether to enable HTML5 client-side SQL database support.
 webSettingsEnableHtml5Database :: (WebSettingsClass self) => Attr self Bool
 webSettingsEnableHtml5Database = newAttrFromBoolProperty "enable-html5-database"
@@ -221,8 +252,8 @@
 webSettingsEnforce96Dpi = newAttrFromBoolProperty "enforce-96-dpi"
 
 -- | The default Fantasy font family used to display text
-webSettingsFantasyFontFamily :: (WebSettingsClass self) => Attr self Bool
-webSettingsFantasyFontFamily = newAttrFromBoolProperty "fantasy-font-family"
+webSettingsFantasyFontFamily :: (WebSettingsClass self) => Attr self String
+webSettingsFantasyFontFamily = newAttrFromStringProperty "fantasy-font-family"
 
 -- | Whether JavaScript can open popup windows automatically without user intervention.
 webSettingsJSCanOpenWindowAuto :: (WebSettingsClass self) => Attr self Bool
@@ -289,6 +320,46 @@
 webSettingsSpellCheckingLang :: (WebSettingsClass self) => Attr self (Maybe String)
 webSettingsSpellCheckingLang = newAttrFromMaybeStringProperty "spell-checking-languages"
 
+#if WEBKIT_CHECK_VERSION (1,1,17)
+-- | Whether the tab key cycles through elements on the page.
+-- 
+-- If flag is 'True', pressing the tab key will focus the next element in the @webView@. If flag is 'False',
+-- the @webView@ will interpret tab key presses as normal key presses. If the selected element is
+-- editable, the tab key will cause the insertion of a tab character.
+-- 
+-- Default value: 'True'
+--
+-- * Since 1.1.17
+webSettingsTabKeyCyclesThroughElements :: (WebSettingsClass self) => Attr self Bool
+webSettingsTabKeyCyclesThroughElements = newAttrFromBoolProperty "tab-key-cycles-through-elements"
+#endif
+
+#if WEBKIT_CHECK_VERSION (1,1,18)
+-- | Whether right-clicks should be handled automatically to create, and display the context
+-- menu. Turning this off will make WebKitGTK+ not emit the populate-popup signal. Notice that the
+-- default button press event handler may still handle right clicks for other reasons, such as in-page
+-- context menus, or right-clicks that are handled by the page itself.
+-- 
+-- Default value: 'True'
+-- 
+-- * Since 1.1.18
+webSettingsEnableDefaultContextMenu :: (WebSettingsClass self) => Attr self Bool
+webSettingsEnableDefaultContextMenu = newAttrFromBoolProperty "enable-default-context-menu"
+
+-- | Enable or disable the page cache. Disabling the page cache is generally only useful for special
+-- circumstances like low-memory scenarios or special purpose applications like static HTML
+-- viewers. This setting only controls the Page Cache, this cache is different than the disk-based or
+-- memory-based traditional resource caches, its point is to make going back and forth between pages
+-- much faster. For details about the different types of caches and their purposes see:
+-- http://webkit.org/ blog/427/webkit-page-cache-i-the-basics/
+-- 
+-- Default value: 'False'
+-- 
+-- * Since 1.1.18
+webSettingsEnablePageCache :: (WebSettingsClass self) => Attr self Bool
+webSettingsEnablePageCache = newAttrFromBoolProperty "enable-page-cache"
+#endif
+
 -- | The User-Agent string used by WebKit
 -- 
 -- This will return a default User-Agent string if a custom string wasn't provided by the application. 
@@ -321,3 +392,16 @@
 webSettingsEnableSiteSpecificQuirks :: WebSettingsClass self => Attr self Bool
 webSettingsEnableSiteSpecificQuirks = newAttrFromBoolProperty "enable-site-specific-quirks"
 
+#if WEBKIT_CHECK_VERSION (1,1,23)
+-- | Whether to enable the Spatial Navigation. This feature consists in the ability to navigate between
+-- focusable elements in a Web page, such as hyperlinks and form controls, by using Left, Right, Up and
+-- Down arrow keys. For example, if an user presses the Right key, heuristics determine whether there
+-- is an element he might be trying to reach towards the right, and if there are multiple elements,
+-- which element he probably wants.
+-- 
+-- Default value: 'False'
+-- 
+-- * Since 1.1.23
+webSettingsEnableSpatialNavigation :: WebSettingsClass self => Attr self Bool
+webSettingsEnableSpatialNavigation = newAttrFromBoolProperty "enable-spatial-navigation"
+#endif
diff --git a/Graphics/UI/Gtk/WebKit/WebView.chs b/Graphics/UI/Gtk/WebKit/WebView.chs
--- a/Graphics/UI/Gtk/WebKit/WebView.chs
+++ b/Graphics/UI/Gtk/WebKit/WebView.chs
@@ -40,6 +40,7 @@
 module Graphics.UI.Gtk.WebKit.WebView (
 -- * Types
   WebView,
+  WebViewClass,
 
 -- * Enums
   NavigationResponse(..),
@@ -50,14 +51,16 @@
   webViewNew,
 
 -- * Methods
+-- ** Load
   webViewLoadUri,
   webViewLoadHtmlString,
   webViewLoadRequest,
   webViewLoadString,
-
-  webViewGetTitle,
-  webViewGetUri,
-
+-- ** Reload
+  webViewStopLoading,
+  webViewReload,
+  webViewReloadBypassCache,
+-- ** History
   webViewCanGoBack,
   webViewCanGoForward,
   webViewGoBack,
@@ -67,59 +70,58 @@
   webViewGoToBackForwardItem,
   webViewCanGoBackOrForward,
   webViewGoBackOrForward,
-
-
+-- ** Zoom
   webViewGetZoomLevel,
   webViewSetZoomLevel,
   webViewZoomIn,
   webViewZoomOut,
   webViewGetFullContentZoom,
   webViewSetFullContentZoom,
-
-  webViewStopLoading,
-  webViewReload,
-  webViewReloadBypassCache,
-
-  webViewExecuteScript,
-
+-- ** Clipboard
   webViewCanCutClipboard,
   webViewCanCopyClipboard,
   webViewCanPasteClipboard,
   webViewCutClipboard,
   webViewCopyClipboard,
   webViewPasteClipboard,
-
+-- ** Undo/Redo
   webViewCanRedo,
   webViewCanUndo,
   webViewRedo,
   webViewUndo,
-  
-  webViewCanShowMimeType,
-  webViewGetEditable,
-  webViewSetEditable,
-  webViewGetInspector,
-  webViewGetTransparent,
-  webViewSetTransparent,
-  webViewGetViewSourceMode,
-  webViewSetViewSourceMode,
-
+-- ** Selection
   webViewDeleteSelection,
   webViewHasSelection,
   webViewSelectAll,
-
+-- ** Encoding
   webViewGetEncoding,
   webViewSetCustomEncoding,
   webViewGetCustomEncoding,
-  webViewGetProgress,
-
+-- ** Source Mode
+  webViewGetViewSourceMode,
+  webViewSetViewSourceMode,
+-- ** Transparent
+  webViewGetTransparent,
+  webViewSetTransparent,
+-- ** Target List
   webViewGetCopyTargetList,
   webViewGetPasteTargetList,
-
-  webViewSearchText,
+-- ** Text Match
   webViewMarkTextMatches,
   webViewUnMarkTextMatches,
   webViewSetHighlightTextMatches,
+-- ** Other
+  webViewExecuteScript,
+  
+  webViewCanShowMimeType,
+  webViewGetEditable,
+  webViewSetEditable,
+  webViewGetInspector,
 
+  webViewGetProgress,
+
+  webViewSearchText,
+
   webViewMoveCursor,
 
   webViewGetMainFrame,
@@ -130,6 +132,13 @@
 
   webViewGetWindowFeatures,
 
+#if WEBKIT_CHECK_VERSION (1,1,18)
+  webViewGetIconUri,
+#endif
+
+  webViewGetTitle,
+  webViewGetUri,
+
 -- * Attributes
   webViewZoomLevel,
   webViewFullContentZoom,
@@ -147,6 +156,13 @@
   webViewCopyTargetList,
   webViewPasteTargetList,
   webViewWindowFeatures,
+#if WEBKIT_CHECK_VERSION (1,1,18)
+  webViewIconUri,
+#endif
+
+#if WEBKIT_CHECK_VERSION (1,1,20)
+  webViewImContext,
+#endif
  
 -- * Signals
   loadStarted,
@@ -175,7 +191,9 @@
   databaseQuotaExceeded,
   documentLoadFinished,
   downloadRequested,
+#if WEBKIT_CHECK_VERSION (1,1,18)
   iconLoaded,
+#endif
   redo,
   undo,
   mimeTypePolicyDecisionRequested,
@@ -183,6 +201,10 @@
   navigationPolicyDecisionRequested,
   newWindowPolicyDecisionRequested,
   resourceRequestStarting,
+#if WEBKIT_CHECK_VERSION (1,1,23)
+  geolocationPolicyDecisionCancelled,
+  geolocationPolicyDecisionRequested,
+#endif
 ) where
 
 import Control.Monad		(liftM)
@@ -259,6 +281,17 @@
 webViewGetWindowFeatures webview =
   makeNewGObject mkWebWindowFeatures $ {#call web_view_get_window_features#} (toWebView webview)
 
+#if WEBKIT_CHECK_VERSION (1,1,18)
+-- | Obtains the URI for the favicon for the given WebKitWebView, or 'Nothing' if there is none.
+--
+-- * Since 1.1.18
+webViewGetIconUri :: WebViewClass self => self -> IO (Maybe String)
+webViewGetIconUri webview =
+  {#call webkit_web_view_get_icon_uri #} (toWebView webview)
+  >>= maybePeek peekUTFString
+#endif
+
+
 -- | Return the main 'WebFrame' of the given 'WebView'.
 webViewGetMainFrame :: 
     WebViewClass self => self
@@ -547,14 +580,14 @@
     WebViewClass self => self
  -> IO (Maybe String) -- ^ the title of 'WebView' or Nothing in case of failed.
 webViewGetTitle webview =
-    {#call web_view_get_title#} (toWebView webview) >>= maybePeek peekCString
+    {#call web_view_get_title#} (toWebView webview) >>= maybePeek peekUTFString
 
 -- |Returns the current URI of the contents displayed by the 'WebView'
 webViewGetUri :: 
     WebViewClass self => self
  -> IO (Maybe String) -- ^ the URI of 'WebView' or Nothing in case of failed.
 webViewGetUri webview = 
-    {#call web_view_get_uri#} (toWebView webview) >>= maybePeek peekCString 
+    {#call web_view_get_uri#} (toWebView webview) >>= maybePeek peekUTFString
 
 
 -- | Stops and pending loads on the given data source.
@@ -734,7 +767,7 @@
     WebViewClass self => self 
  -> IO (Maybe String) -- ^ the default encoding or @Nothing@ in case of failed
 webViewGetEncoding webview =
-    {#call web_view_get_encoding#} (toWebView webview) >>= maybePeek peekCString
+    {#call web_view_get_encoding#} (toWebView webview) >>= maybePeek peekUTFString
 
 -- | Sets the current 'WebView' encoding, 
 -- without modifying the default one, and reloads the page
@@ -753,7 +786,7 @@
  -> IO (Maybe String) -- ^ the current encoding string
                       -- or @Nothing@ if there is none set.
 webViewGetCustomEncoding webview = 
-    {#call web_view_get_custom_encoding#} (toWebView webview) >>= maybePeek peekCString
+    {#call web_view_get_custom_encoding#} (toWebView webview) >>= maybePeek peekUTFString
 
 -- | Determines the current status of the load.
 webViewGetLoadStatus :: 
@@ -888,6 +921,29 @@
   newAttrFromObjectProperty "window-features"
   {#call pure webkit_web_window_features_get_type#}
 
+#if WEBKIT_CHECK_VERSION (1,1,18)
+-- | The URI for the favicon for the WebKitWebView.
+-- 
+-- Default value: 'Nothing'
+-- 
+-- * Since 1.1.18
+webViewIconUri :: WebViewClass self => ReadAttr self String
+webViewIconUri = readAttrFromStringProperty "icon-uri"
+#endif
+
+#if WEBKIT_CHECK_VERSION (1,1,20)
+-- | The 'IMMulticontext' for the WebKitWebView.
+-- 
+-- This is the input method context used for all text entry widgets inside the WebKitWebView. It can be
+-- used to generate context menu items for controlling the active input method.
+-- 
+-- * Since 1.1.20
+webViewImContext :: WebViewClass self => ReadAttr self IMContext
+webViewImContext = 
+  readAttrFromObjectProperty "im-context"
+  {#call pure gtk_im_context_get_type #}
+#endif
+
 -- * Signals
 
 -- | When Document title changed, this signal is emitted.
@@ -1061,10 +1117,12 @@
 downloadRequested =
     Signal (connect_OBJECT__BOOL "download-requested")
 
+#if WEBKIT_CHECK_VERSION (1,1,18)
 -- | Emitted after Icon loaded
 iconLoaded :: WebViewClass self => Signal self (IO ())
 iconLoaded =
     Signal (connect_NONE__NONE "icon-loaded")
+#endif
 
 -- | The "redo" signal is a keybinding signal which gets emitted to redo the last editing command.
 --
@@ -1144,3 +1202,19 @@
 -- but the contents may change from inbetween signal emissions.
 resourceRequestStarting :: WebViewClass self => Signal self (WebFrame -> WebResource -> NetworkRequest -> NetworkResponse -> IO ())
 resourceRequestStarting = Signal (connect_OBJECT_OBJECT_OBJECT_OBJECT__NONE "resource-request-starting")
+
+#if WEBKIT_CHECK_VERSION (1,1,23)
+-- | When a frame wants to cancel geolocation permission it had requested before.
+--
+-- * Since 1.1.23    
+geolocationPolicyDecisionCancelled :: WebViewClass self => Signal self (WebFrame -> IO ())
+geolocationPolicyDecisionCancelled = Signal (connect_OBJECT__NONE "geolocation-policy-decision-cancelled")
+
+-- | When a frame wants to get its geolocation permission. The receiver must reply with a boolean wether
+-- it handled or not the request. If the request is not handled, default behaviour is to deny
+-- geolocation.
+-- 
+-- * Since 1.1.23    
+geolocationPolicyDecisionRequested :: WebViewClass self => Signal self (WebFrame -> GeolocationPolicyDecision -> IO ())
+geolocationPolicyDecisionRequested = Signal (connect_OBJECT_OBJECT__NONE "geolocation-policy-decision-requested")
+#endif
diff --git a/Graphics/UI/Gtk/WebKit/WebWindowFeatures.chs b/Graphics/UI/Gtk/WebKit/WebWindowFeatures.chs
--- a/Graphics/UI/Gtk/WebKit/WebWindowFeatures.chs
+++ b/Graphics/UI/Gtk/WebKit/WebWindowFeatures.chs
@@ -26,6 +26,7 @@
 module Graphics.UI.Gtk.WebKit.WebWindowFeatures (
 -- * Types
   WebWindowFeatures,
+  WebWindowFeaturesClass,
 
 -- * Constructors
   webWindowFeaturesNew,
diff --git a/Gtk2HsSetup.hs b/Gtk2HsSetup.hs
--- a/Gtk2HsSetup.hs
+++ b/Gtk2HsSetup.hs
@@ -455,7 +455,7 @@
 -- existance of a .chs module may not depend on some CPP condition.  
 extractDeps :: ModDep -> IO ModDep
 extractDeps md@ModDep { mdLocation = Nothing } = return md
-extractDeps md@ModDep { mdLocation = Just f } = withFileContents f $ \con -> do
+extractDeps md@ModDep { mdLocation = Just f } = withUTF8FileContents f $ \con -> do
   let findImports acc (('{':'#':xs):xxs) = case (dropWhile ((==) ' ') xs) of
         ('i':'m':'p':'o':'r':'t':' ':ys) ->
           case simpleParse (takeWhile ((/=) '#') ys) of
diff --git a/demo/Makefile b/demo/Makefile
new file mode 100644
--- /dev/null
+++ b/demo/Makefile
@@ -0,0 +1,13 @@
+
+PROGS  = webkit
+SOURCES = Webkit.hs
+
+all : $(PROGS)
+
+webkit : Webkit.hs
+	$(HC) --make $< -o $@ $(HCFLAGS)
+
+clean:
+	rm -f $(SOURCES:.hs=.hi) $(SOURCES:.hs=.o) $(PROGS)
+
+HC=ghc
diff --git a/demo/Webkit.hs b/demo/Webkit.hs
new file mode 100644
--- /dev/null
+++ b/demo/Webkit.hs
@@ -0,0 +1,95 @@
+-- | WebKit browser demo.
+--  Author      :  Andy Stewart
+--  Copyright   :  (c) 2010 Andy Stewart <lazycat.manatee@gmail.com>
+
+-- | This simple browser base on WebKit API.
+-- For simple, i just make all link open in current window.
+-- Of course, you can integrate signal `createWebView` with `notebook`
+-- to build multi-tab browser.
+--
+-- You can click right-button for forward or backward page.
+--
+-- Usage:
+--      webkit [uri]
+--
+module Main where
+
+import Graphics.UI.Gtk
+import Graphics.UI.Gtk.WebKit.WebView
+import Graphics.UI.Gtk.WebKit.WebFrame
+
+import System.Process
+import System.Environment 
+
+-- | Main entry.
+main :: IO ()
+main = do
+  -- Get program arguments.
+  args <- getArgs
+  case args of
+    -- Display help
+    ["--help"] -> 
+       putStrLn $ "Welcome to Gtk2hs WebKit demo. :)\n\n" ++ 
+                  "Usage: webkit [uri]\n\n" ++
+                  "  -- Gtk2hs Team"
+    -- Start program.
+    [arg]    -> browser arg                     -- entry user input url
+    _        -> browser "http://www.google.com" -- entry default url
+
+-- | Internal browser fucntion.
+browser :: String -> IO ()
+browser url = do
+  -- Init.
+  initGUI
+  
+  -- Create window.
+  window <- windowNew
+  windowSetDefaultSize window 900 600
+  windowSetPosition window WinPosCenter
+  windowSetOpacity window 0.8   -- this function need window-manager support Alpha channel in X11
+
+  -- Create WebKit view.
+  webView <- webViewNew
+  
+  -- Create window box.
+  winBox <- vBoxNew False 0
+  
+  -- Create address bar.
+  addressBar <- entryNew
+
+  -- Create scroll window.
+  scrollWin <- scrolledWindowNew Nothing Nothing
+
+  -- Load uri.
+  webViewLoadUri webView url
+  entrySetText addressBar url
+
+  -- Open uri when user press `return` at address bar.
+  onEntryActivate addressBar $ do
+    uri <- entryGetText addressBar -- get uri from address bar
+    webViewLoadUri webView uri    -- load new uri
+
+  -- Add current uri to address bar when load start.
+  webView `on` loadStarted $ \frame -> do
+    currentUri <- webFrameGetUri frame
+    case currentUri of
+         Just uri -> entrySetText addressBar uri
+         Nothing  -> return ()
+
+  -- Open all link in current window.
+  webView `on` createWebView $ \frame -> do
+    newUri <- webFrameGetUri frame
+    case newUri of
+      Just uri -> webViewLoadUri webView uri
+      Nothing  -> return ()
+    return webView
+
+  -- Connect and show.
+  boxPackStart winBox addressBar PackNatural 0
+  boxPackStart winBox scrollWin PackGrow 0
+  window `containerAdd` winBox
+  scrollWin `containerAdd` webView
+  window `onDestroy` mainQuit
+  widgetShowAll window
+
+  mainGUI
diff --git a/hierarchy.list b/hierarchy.list
new file mode 100644
--- /dev/null
+++ b/hierarchy.list
@@ -0,0 +1,342 @@
+# This list is the result of a copy-and-paste from the GtkObject hierarchy
+# html documentation. Deprecated widgets are uncommented. Some additional
+# object have been defined at the end of the copied list.
+
+# The Gtk prefix of every object is removed, the other prefixes are
+# kept.  The indentation implies the object hierarchy. In case the
+# type query function cannot be derived from the name or the type name
+# is different, an alternative name and type query function can be
+# specified by appending 'as typename, <query_func>'.  In case this
+# function is not specified, the <name> is converted to
+# gtk_<name'>_get_type where <name'> is <name> where each upperscore
+# letter is converted to an underscore and lowerletter. The underscore
+# is omitted if an upperscore letter preceeded: GtkHButtonBox ->
+# gtk_hbutton_box_get_type. The generation of a type can be
+# conditional by appending 'if <tag>'. Such types are only produces if
+# --tag=<tag> is given on the command line of TypeGenerator.
+
+
+    GObject 
+        GdkDrawable 
+            GdkWindow		as DrawWindow, gdk_window_object_get_type
+#            GdkDrawableImplX11
+#                GdkWindowImplX11
+            GdkPixmap
+            GdkGLPixmap		if gtkglext
+            GdkGLWindow		if gtkglext
+        GdkColormap
+	GdkScreen		if gtk-2.2
+	GdkDisplay		if gtk-2.2
+	GdkVisual
+	GdkDevice
+        GtkSettings
+        GtkTextBuffer
+            GtkSourceBuffer	if sourceview
+            GtkSourceBuffer	if gtksourceview2
+        GtkTextTag
+            GtkSourceTag	if sourceview
+        GtkTextTagTable
+            GtkSourceTagTable	if sourceview
+        GtkStyle
+	GtkRcStyle
+        GdkDragContext
+        GdkPixbuf
+	GdkPixbufAnimation
+	    GdkPixbufSimpleAnim
+	GdkPixbufAnimationIter
+        GtkTextChildAnchor
+        GtkTextMark
+	    GtkSourceMarker	if sourceview
+            GtkSourceMark       if gtksourceview2
+        GtkObject
+            GtkWidget
+                GtkMisc
+                    GtkLabel
+                        GtkAccelLabel
+                        GtkTipsQuery	if deprecated
+                    GtkArrow
+                    GtkImage
+                GtkContainer
+                    WebKitWebView as WebView, webkit_web_view_get_type            if webkit 
+                    GtkBin
+                        GtkAlignment
+                        GtkFrame
+                            GtkAspectFrame
+                        GtkButton
+                            GtkToggleButton
+                                GtkCheckButton
+                                    GtkRadioButton
+                            GtkColorButton		if gtk-2.4
+                            GtkFontButton		if gtk-2.4
+                            GtkOptionMenu		if deprecated
+                        GtkItem
+                            GtkMenuItem
+                                GtkCheckMenuItem
+                                    GtkRadioMenuItem
+                                GtkTearoffMenuItem
+                                GtkImageMenuItem
+                                GtkSeparatorMenuItem
+                            GtkListItem			if deprecated
+#			    GtkTreeItem
+                        GtkWindow
+                            GtkDialog
+			    	GtkAboutDialog		if gtk-2.6
+                                GtkColorSelectionDialog
+                                GtkFileSelection
+				GtkFileChooserDialog	if gtk-2.4
+                                GtkFontSelectionDialog
+                                GtkInputDialog
+                                GtkMessageDialog
+                            GtkPlug	if plugNsocket
+                        GtkEventBox
+                        GtkHandleBox
+                        GtkScrolledWindow
+                        GtkViewport
+			GtkExpander			if gtk-2.4
+			GtkComboBox			if gtk-2.4
+			    GtkComboBoxEntry		if gtk-2.4
+			GtkToolItem			if gtk-2.4
+			    GtkToolButton		if gtk-2.4
+				GtkMenuToolButton	if gtk-2.6
+				GtkToggleToolButton	if gtk-2.4
+				    GtkRadioToolButton	if gtk-2.4
+			    GtkSeparatorToolItem	if gtk-2.4
+			GtkMozEmbed		if mozembed
+			VteTerminal as Terminal if vte
+                    GtkBox
+                        GtkButtonBox
+                            GtkHButtonBox
+                            GtkVButtonBox
+                        GtkVBox
+                            GtkColorSelection
+                            GtkFontSelection
+			    GtkFileChooserWidget	if gtk-2.4
+                        GtkHBox
+                            GtkCombo	if deprecated
+                            GtkFileChooserButton	if gtk-2.6
+                            GtkStatusbar
+                    GtkCList		if deprecated
+                        GtkCTree	if deprecated
+                    GtkFixed
+                    GtkPaned
+                        GtkHPaned
+                        GtkVPaned
+                    GtkIconView		if gtk-2.6
+                    GtkLayout
+                    GtkList		if deprecated
+                    GtkMenuShell
+                        GtkMenu
+                        GtkMenuBar
+                    GtkNotebook
+#                    GtkPacker
+                    GtkSocket		if plugNsocket
+                    GtkTable
+                    GtkTextView
+                        GtkSourceView	if sourceview
+                        GtkSourceView	if gtksourceview2
+                    GtkToolbar
+                    GtkTreeView
+                GtkCalendar
+                GtkCellView		if gtk-2.6
+		GtkDrawingArea
+                GtkEntry
+                    GtkSpinButton
+                GtkRuler
+                    GtkHRuler
+                    GtkVRuler
+                GtkRange
+                    GtkScale
+                        GtkHScale
+                        GtkVScale
+                    GtkScrollbar
+                        GtkHScrollbar
+                        GtkVScrollbar
+                GtkSeparator
+                    GtkHSeparator
+                    GtkVSeparator
+                GtkInvisible
+#                GtkOldEditable
+#                    GtkText
+                GtkPreview		if deprecated
+# Progress is deprecated, ProgressBar contains everything necessary
+#                GtkProgress
+                GtkProgressBar
+            GtkAdjustment
+            GtkIMContext
+                GtkIMMulticontext
+            GtkItemFactory		if deprecated
+            GtkTooltips
+			
+# These object were added by hand because they do not show up in the hierarchy
+# chart.
+# These are derived from GtkObject:
+	    GtkTreeViewColumn
+	    GtkCellRenderer
+		GtkCellRendererPixbuf
+		GtkCellRendererText
+		    GtkCellRendererCombo	if gtk-2.6
+		GtkCellRendererToggle
+		GtkCellRendererProgress	if gtk-2.6
+	    GtkFileFilter		if gtk-2.4
+            GtkBuilder if gtk-2.12
+# These are actually interfaces, but all objects that implement it are at
+# least GObjects.
+	GtkCellLayout			if gtk-2.4
+	GtkTreeSortable			if gtk-2.4
+	GtkTooltip				if gtk-2.12
+# These are derived from GObject:
+  	GtkStatusIcon                   if gtk-2.10
+        GtkTreeSelection
+        GtkTreeModel
+            GtkTreeStore
+            GtkListStore
+	GtkTreeModelSort
+	GtkTreeModelFilter		if gtk-2.4
+	GtkIconFactory
+	GtkIconTheme
+	GtkSizeGroup
+	GtkClipboard			if gtk-2.2
+	GtkAccelGroup
+	GtkAccelMap			if gtk-2.4
+	GtkEntryCompletion		if gtk-2.4
+	GtkAction			if gtk-2.4
+	    GtkToggleAction		if gtk-2.4
+		GtkRadioAction		if gtk-2.4
+	GtkActionGroup			if gtk-2.4
+	GtkUIManager			if gtk-2.4
+	GtkWindowGroup
+        GtkSourceLanguage		if sourceview
+        GtkSourceLanguage		if gtksourceview2
+        GtkSourceLanguagesManager	if sourceview
+        GtkSourceLanguageManager	if gtksourceview2
+	GladeXML			as GladeXML, glade_xml_get_type if libglade
+	GConfClient			as GConf if gconf
+# These ones are actualy interfaces, but interface implementations are GObjects
+	GtkEditable
+	GtkSourceStyle			as SourceStyleObject if gtksourceview2
+	GtkSourceStyleScheme		if sourceview
+	GtkSourceStyleScheme		if gtksourceview2
+	GtkSourceStyleSchemeManager	if gtksourceview2
+	GtkFileChooser			if gtk-2.4
+## This now became a GObject in version 2:
+	GdkGC				as GC, gdk_gc_get_type
+## These are Pango structures
+	PangoContext		as PangoContext, pango_context_get_type if pango
+	PangoLayout		as PangoLayoutRaw, pango_layout_get_type if pango
+	PangoFont		as Font, pango_font_get_type if pango
+	PangoFontFamily		as FontFamily, pango_font_family_get_type if pango
+	PangoFontFace		as FontFace, pango_font_face_get_type if pango
+	PangoFontMap		as FontMap, pango_font_face_get_type if pango
+	PangoFontset		as FontSet, pango_fontset_get_type if pango
+## This type is only available for PANGO_ENABLE_BACKEND compiled source
+##	    PangoFontsetSimple	as FontSetSimple, pango_fontset_simple_get_type
+
+## GtkGlExt classes
+	GdkGLContext		if gtkglext
+	GdkGLConfig		if gtkglext
+	GdkGLDrawable		if gtkglext
+
+## GnomeVFS classes
+	GnomeVFSVolume		as Volume, gnome_vfs_volume_get_type if gnomevfs
+	GnomeVFSDrive		as Drive, gnome_vfs_drive_get_type if gnomevfs
+	GnomeVFSVolumeMonitor	as VolumeMonitor, gnome_vfs_volume_monitor_get_type if gnomevfs
+
+## GIO classes
+# Note on all the "as" clauses: the prefix G is unfortunate since it leads
+# to two consecutive upper case letters which are not translated with an
+# underscore each (e.g. GConf -> gconf, GtkHButtonBox -> gtk_hbutton_box).
+#        GUnixMountMonitor		as UnixMountMonitor, g_unix_mount_monitor_get_type if gio
+        GOutputStream			as OutputStream, g_output_stream_get_type if gio
+            GFilterOutputStream		as FilterOutputStream, g_filter_output_stream_get_type if gio
+                GDataOutputStream	as DataOutputStream, g_data_output_stream_get_type if gio
+                GBufferedOutputStream   as BufferedOutputStream, g_buffered_output_stream_get_type if gio
+#            GUnixOutputStream		as UnixOutputStream, g_unix_output_stream_get_type if gio
+            GFileOutputStream           as FileOutputStream, g_file_output_stream_get_type if gio
+            GMemoryOutputStream		as MemoryOutputStream, g_memory_output_stream_get_type if gio
+        GInputStream			as InputStream, g_input_stream_get_type if gio
+#            GUnixInputStream		as UnixInputStream, g_unix_input_stream_get_type if gio
+            GMemoryInputStream		as MemoryInputStream, g_memory_input_stream_get_type if gio
+            GFilterInputStream		as FilterInputStream, g_filter_input_stream_get_type if gio
+                GBufferedInputStream	as BufferedInputStream, g_buffered_input_stream_get_type if gio
+                    GDataInputStream	as DataInputStream, g_data_input_stream_get_type if gio
+            GFileInputStream		as FileInputStream, g_file_input_stream_get_type if gio
+#        GDesktopAppInfo			as DesktopAppInfo, g_desktop_app_info_get_type if gio
+        GFileMonitor			as FileMonitor, g_file_monitor_get_type if gio
+        GVfs				as Vfs, g_vfs_get_type if gio
+        GMountOperation			as MountOperation, g_mount_operation_get_type if gio
+        GThemedIcon			as ThemedIcon, g_themed_icon_get_type if gio
+        GEmblem			as Emblem, g_emblem_get_type if gio
+        GEmblemedIcon			as EmblemedIcon, g_emblemed_icon_get_type if gio
+        GFileEnumerator			as FileEnumerator, g_file_enumerator_get_type if gio
+        GFilenameCompleter		as FilenameCompleter, g_filename_completer_get_type if gio
+        GFileIcon			as FileIcon, g_file_icon_get_type if gio
+        GVolumeMonitor			as VolumeMonitor, g_volume_monitor_get_type if gio
+        GCancellable			as Cancellable, g_cancellable_get_type if gio
+        GSimpleAsyncResult		as SimpleAsyncResult, g_async_result_get_type if gio
+        GFileInfo			as FileInfo, g_file_info_get_type if gio
+		GAppLaunchContext   as AppLaunchContext, g_app_launch_context_get_type if gio
+## these are actually GInterfaces
+        GIcon				as Icon, g_icon_get_type if gio
+        GSeekable			as Seekable, g_seekable_get_type if gio
+        GAppInfo			as AppInfo, g_app_info_get_type if gio
+        GVolume				as Volume, g_volume_get_type if gio
+        GAsyncResult			as AsyncResult, g_async_result_get_type if gio
+        GLoadableIcon			as LoadableIcon, g_loadable_icon_get_type if gio
+        GDrive				as Drive, g_drive_get_type if gio
+        GFile				noEq as File, g_file_get_type if gio
+        GMount				as Mount, g_mount_get_type if gio
+
+## GStreamer classes
+	GstObject			as Object,		gst_object_get_type			if gstreamer
+	    GstPad			as Pad,			gst_pad_get_type			if gstreamer
+	        GstGhostPad		as GhostPad,		gst_ghost_pad_get_type			if gstreamer
+	    GstPluginFeature		as PluginFeature,	gst_plugin_feature_get_type		if gstreamer
+	        GstElementFactory	as ElementFactory,	gst_element_factory_get_type		if gstreamer
+	        GstTypeFindFactory	as TypeFindFactory,	gst_type_find_factory_get_type		if gstreamer
+	        GstIndexFactory		as IndexFactory,	gst_index_factory_get_type		if gstreamer
+	    GstElement			as Element,		gst_element_get_type			if gstreamer
+	        GstBin			as Bin,			gst_bin_get_type			if gstreamer
+	            GstPipeline		as Pipeline,		gst_pipeline_get_type			if gstreamer
+	        GstImplementsInterface  as ImplementsInterface, gst_implements_interface_get_type	if gstreamer
+	        GstTagSetter            as TagSetter,           gst_tag_setter_get_type			if gstreamer
+                GstBaseSrc              as BaseSrc,             gst_base_src_get_type			if gstreamer
+                    GstPushSrc          as PushSrc,             gst_push_src_get_type                   if gstreamer
+                GstBaseSink             as BaseSink,            gst_base_sink_get_type                  if gstreamer
+                GstBaseTransform        as BaseTransform,       gst_base_transform_get_type             if gstreamer
+	    GstPlugin			as Plugin,		gst_plugin_get_type			if gstreamer
+	    GstRegistry			as Registry,		gst_registry_get_type			if gstreamer
+	    GstBus			as Bus,			gst_bus_get_type			if gstreamer
+	    GstClock			as Clock,		gst_clock_get_type			if gstreamer
+	        GstAudioClock		as AudioClock,		gst_audio_clock_get_type		if gstreamer
+	        GstSystemClock		as SystemClock,		gst_system_clock_get_type		if gstreamer
+                GstNetClientClock       as NetClientClock,      gst_net_client_clock_get_type           if gstreamer
+	    GstIndex			as Index,		gst_index_get_type			if gstreamer
+	    GstPadTemplate		as PadTemplate,		gst_pad_template_get_type		if gstreamer
+	    GstTask			as Task,		gst_task_get_type			if gstreamer
+	    GstXML			as XML,			gst_xml_get_type			if gstreamer
+	    GstChildProxy               as ChildProxy,          gst_child_proxy_get_type		if gstreamer
+            GstCollectPads              as CollectPads,         gst_collect_pads_get_type               if gstreamer
+## these are actually GInterfaces
+	GstURIHandler                   as URIHandler,          gst_uri_handler_get_type		if gstreamer
+        GstAdapter                      as Adapter,             gst_adapter_get_type                    if gstreamer
+        GstController                   as Controller,          gst_controller_get_type                 if gstreamer
+
+        WebKitWebFrame as WebFrame, webkit_web_frame_get_type          if webkit 
+        WebKitWebSettings as WebSettings, webkit_web_settings_get_type    if webkit
+        WebKitNetworkRequest as NetworkRequest, webkit_network_request_get_type  if webkit
+        WebKitNetworkResponse as NetworkResponse, webkit_network_response_get_type    if webkit
+        WebKitDownload as Download, webkit_download_get_type  if webkit
+        WebKitWebBackForwardList as WebBackForwardList, webkit_web_back_forward_list_get_type if webkit
+        WebKitWebHistoryItem as WebHistoryItem, webkit_web_history_item_get_type if webkit
+        WebKitWebInspector as WebInspector, webkit_web_inspector_get_type if webkit
+        WebKitHitTestResult as HitTestResult, webkit_hit_test_result_get_type if webkit
+        WebKitSecurityOrigin as SecurityOrigin, webkit_security_origin_get_type if webkit
+        WebKitSoupAuthDialog as SoupAuthDialog, webkit_soup_auth_dialog_get_type if webkit
+        WebKitWebDatabase as WebDatabase, webkit_web_database_get_type if webkit
+        WebKitWebDataSource as WebDataSource, webkit_web_data_source_get_type if webkit
+        WebKitWebNavigationAction as WebNavigationAction, webkit_web_navigation_action_get_type if webkit
+        WebKitWebPolicyDecision as WebPolicyDecision, webkit_web_policy_decision_get_type if webkit
+        WebKitWebResource as WebResource, webkit_web_resource_get_type if webkit
+        WebKitWebWindowFeatures as WebWindowFeatures, webkit_web_window_features_get_type if webkit
+        WebKitGeolocationPolicyDecision as GeolocationPolicyDecision, webkit_geolocation_policy_decision_get_type if webkit
+
diff --git a/webkit.cabal b/webkit.cabal
--- a/webkit.cabal
+++ b/webkit.cabal
@@ -1,6 +1,6 @@
 Name:           webkit
-Version:        0.11.0
-License:        GPL
+Version:        0.11.1
+License:        LGPL-2.1
 License-file:   COPYING
 Copyright:      (c) 2001-2010 The Gtk2Hs Team
 Author:         Cjacker Huang, Andy Stewart, Axel Simon
@@ -23,17 +23,22 @@
 Extra-Source-Files: hswebkit.h
                     Gtk2HsSetup.hs
                     marshal.list
+					hierarchy.list
 					
+Data-Dir:		demo
+Data-Files:		Webkit.hs
+                Makefile
+					
 x-Types-File:       Graphics/UI/Gtk/WebKit/Types.chs
 x-Types-Tag:        webkit
 x-Types-ModName:    Graphics.UI.Gtk.WebKit.Types
 x-Types-Forward:    *Graphics.UI.GtkInternals
 x-Types-Destructor: objectUnrefFromMainloop
+x-Types-Hierarchy:  hierarchy.list
 
 Source-Repository head
   type:         darcs
-  location:     http://code.haskell.org/gtk2hs/
-  subdir:       webkit
+  location:     http://code.haskell.org/webkit/
 
 Library
         build-depends:  base >= 4 && < 5, array, containers, haskell98, mtl,
@@ -63,6 +68,8 @@
           Graphics.UI.Gtk.WebKit.WebSettings
           Graphics.UI.Gtk.WebKit.WebView
           Graphics.UI.Gtk.WebKit.WebWindowFeatures
+          Graphics.UI.Gtk.WebKit.CacheModel
+          Graphics.UI.Gtk.WebKit.GeolocationPolicyDecision
         other-modules:
           Graphics.UI.Gtk.WebKit.Internal
           Graphics.UI.Gtk.WebKit.Types		  
