    def __init__(self, bus, object_path):
        super(Engine, self).__init__(connection=bus.get_connection(),
                                     object_path=object_path)

        # create anthy context
        self.__context = Anthy.GContext()
        self.__context.set_encoding(Anthy.UTF8_ENCODING)

        # init state
        self.__idle_id = 0
        self.__prop_dict = {}
        self.__input_purpose = 0
        self.__has_input_purpose = False
        if hasattr(IBus, 'InputPurpose'):
            self.__has_input_purpose = True
        try:
            self.__is_utf8 = (getpreferredencoding().lower() == 'utf-8')
        except:
            self.__is_utf8 = False
        self.__ibus_version = 0.0

#        self.__lookup_table = ibus.LookupTable.new(page_size=9,
#                                                   cursor_pos=0,
#                                                   cursor_visible=True,
#                                                   round=True)
        size = self.__prefs.get_value('common', 'page_size')
        self.__lookup_table = IBus.LookupTable.new(page_size=size,
                                                   cursor_pos=0,
                                                   cursor_visible=True,
                                                   round=True)
        self.__prop_list = self.__init_props()

        self.__init_signal()
        # use reset to init values
        self.__reset()

        ibus_config = bus.get_config()
        if ibus_config != None:
            ibus_config.connect('value-changed',
                                self.__config_value_changed_cb)
Weaknesses in this category are related to the management of credentials.