def make_continent_view(self, type, callback, append_to):
        cc = ContinentCountries()
        if (type == 'rep'):
            data = cc.rep_continents
        elif (type == 'par'):
            data = cc.par_continents

        list = QTreeView()
        model = QStandardItemModel(0, 1)

        for key, values in sorted(data.items()):
            continent = QStandardItem(key)
            continent.setCheckable(True)

            for country in values:
                country = QStandardItem(country)
                country.setCheckable(True)

                continent.setChild(continent.rowCount(), country)

            model.setItem(model.rowCount(), continent)

        if (type == 'rep'):
            self.rep_top_item = model.index(0, 0)
        elif (type == 'par'):
            self.par_top_item = model.index(0, 0)

        model.itemChanged.connect(callback)
        list.setModel(model)
        list.setEditTriggers(QAbstractItemView.NoEditTriggers)
        list.setHeaderHidden(True)
        list.expandAll()

        proxy_model = FindFilterProxyModel()
        proxy_model.setSourceModel(model)
        proxy_model.setFilterKeyColumn(-1)
        list.setModel(proxy_model)
        list.expandAll()

        append_to.layout().addWidget(list)

        return [list, proxy_model, model]