def create_app_dictionary():
    #Create App Dictionary: Main function
    requests.packages.urllib3.disable_warnings()
    catalog = Catalog(url=os.environ['CATALOG_URL'])
    nms = NarrativeMethodStore(url=os.environ['NARRATIVE_METHOD_STORE'])

    apps = nms.list_methods({"tag": "release"})
    apps_datastruc = pd.DataFrame.from_dict(apps)
    ModDfApps = data_configure(apps_datastruc)
    ModDfApps.drop([
        'app_type', 'authors', 'git_commit_hash', 'icon', 'input_types',
        'module_name', 'name', 'namespace', 'output_types', 'subtitle',
        'tooltip', 'ver'
    ],
                   axis=1,
                   inplace=True)
    keys = list(
        set([
            item for sublist in list(ModDfApps.categories) for item in sublist
        ]))
    app_dict = {k: [] for k in keys}

    for i in ModDfApps.index.values:

        app_category_lst = ModDfApps["categories"][i]
        for category in app_category_lst:
            if category in app_dict.keys():
                app_dict[category].append(ModDfApps["id"][i])
                app_dict[category] = list(set(app_dict[category]))
            else:
                raise KeyError("{} not a KBase app category".format(category))
    return app_dict