def __init__(
            self,
            ic: IdentityController,
            api_factory: APIFactory,
            start_sub: str = None):
        Gtk.Window.__init__(self, title='Something For Reddit',
                            icon_name='today.sam.reddit-is-gtk')
        self.add_events(Gdk.EventMask.KEY_PRESS_MASK)
        self.set_default_size(600, 600)
        self.set_wmclass("reddit-is-gtk", "Something For Reddit")

        self._ic = ic
        self._ic.token_changed.connect(self._token_changed_cb)
        self._api = None
        self._api_factory = api_factory

        settings = Gtk.Settings.get_default()
        screen = Gdk.Screen.get_default()
        css_provider = Gtk.CssProvider.get_default()
        if settings.props.gtk_application_prefer_dark_theme:
            css_provider.load_from_resource(
                '/today/sam/reddit-is-gtk/style.dark.css')
        else:
            css_provider.load_from_resource(
                '/today/sam/reddit-is-gtk/style.css')
        context = Gtk.StyleContext()
        context.add_provider_for_screen(screen, css_provider,
                                        Gtk.STYLE_PROVIDER_PRIORITY_USER)

        self._paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)
        self.add(self._paned)
        self._paned.show()

        self._webview = FullscreenableWebview()
        self._webview_bin = ProgressContainer(self._webview)
        self._comments = None
        self._stack = Gtk.Stack()
        self._stack.connect('notify::visible-child', self.__stack_child_cb)
        self._paned.add2(self._stack)
        #self._paned.child_set_property(self._stack, 'shrink', True)
        self._stack.show()

        self._sublist_bin = Gtk.Box()
        self._paned.add1(self._sublist_bin)
        self._sublist_bin.show()
        self._sublist = None

        self._make_header()
        left = Gtk.SizeGroup(mode=Gtk.SizeGroupMode.HORIZONTAL)
        left.add_widget(self._left_header)
        left.add_widget(self._sublist_bin)
        self._paned.connect('notify::position',
                            self.__notify_position_cb,
                            self._header_paned)
        self._header_paned.connect('notify::position',
                                   self.__notify_position_cb,
                                   self._paned)

        self._token_changed_cb(self._ic)