    # KidKit
    # Webware for Python
    # See Docs/index.html

    def InstallInWebKit(appServer):
        app = appServer.application()
        from WebKit.PlugIn import PlugInError
        try:
            try:
                from KidKit.Properties import requiredSoftware
            except ImportError:
                raise PlugInError, 'Cannot determine required software.'
            for soft in requiredSoftware:
                if soft['name'] == 'kid':
                    requiredKidVersion = soft['version']
                    break
            else:
                raise PlugInError, 'Cannot determine required Kid version.'
            try:
                import kid
            except ImportError:
                raise PlugInError, \
                    'Cannot import Kid. This needs to be installed to use KidKit.'
            try:
                kidVersion = tuple(map(lambda s:
                        int('0' + ''.join(filter(lambda c: c.isdigit(), s))),
                    kid.__version__.split('.', 3)[:3]))
            except ImportError:
                raise PlugInError, 'Cannot determine Kid version.'
            if kidVersion < requiredKidVersion:
                raise PlugInError, \
                    'KidKit needs at least Kid version %s (installed is %s).' \
                    % ('.'.join(map(str, requiredKidVersion)),
                        '.'.join(map(str, kidVersion)))
            try:
                from KidServletFactory import KidServletFactory
                app.addServletFactory(KidServletFactory(app))
            except Exception:
                from traceback import print_exc
                print_exc()
                raise PlugInError, 'Cannot install Kid servlet factory.'
        except PlugInError, e:
            print e
            print "KidKit will not be loaded, '.kid' extension will be ignored."
            # We need to disable the '.kid' extension because otherwise the kid
            # templates would be delivered as ordinary files (security problem).
            e = app.setting('ExtensionsToIgnore', [])
            if '.kid' not in e:
                e.append('.kid')
                app.setSetting('ExtensionsToIgnore', e)
            e = app.setting('FilesToHide', [])
            if '*.kid' not in e:
                e.append('*.kid')
                app.setSetting('FilesToHide', e)
            from WebKit.URLParser import initParser
            initParser(app)