async void OnGUI()
        {
            GUILayout.Label("Base Settings", EditorStyles.boldLabel);
            Config.PersonalAccessToken =
                EditorGUILayout.TextField("Personal Access Token", Config.PersonalAccessToken);
            Config.Organization = EditorGUILayout.TextField("Organization", Config.Organization);
            Config.FeedName     = EditorGUILayout.TextField("FeedName", Config.FeedName);
            Config.PackageName  = EditorGUILayout.TextField("PackageName", Config.PackageName);
            if (GUILayout.Button("Save Config"))
            {
                string configJsonPath =
                    Path.Combine("Assets", "Scripts", "Editor", "ArtifactPuller", "puller_config.json");
                File.WriteAllText(configJsonPath, _serializer.Serialize(Config));
            }

            if (GUILayout.Button("Download"))
            {
                using (AzureDevopsClient client = new AzureDevopsClient(Config.PersonalAccessToken, _serializer))
                {
                    try
                    {
                        var byteArray = await client.DownloadPackage(Config.Organization, Config.FeedName, Config.PackageName);

                        if (!Directory.Exists(TargetDLLsPath))
                        {
                            Directory.CreateDirectory(TargetDLLsPath);
                        }

                        string temporaryDecompressionPath = Path.Combine(TargetDLLsPath, "tmp_zipFolder");
                        if (!Directory.Exists(temporaryDecompressionPath))
                        {
                            Directory.CreateDirectory(temporaryDecompressionPath);
                        }

                        string zipFilePath = Path.Combine(TargetDLLsPath, "packageZip.rar");
                        File.WriteAllBytes(zipFilePath, byteArray);

                        _extractor.ExtractIntoFolder(zipFilePath, temporaryDecompressionPath);

                        string[] dllResults = Directory.GetFiles(temporaryDecompressionPath, Config.PackageName + ".dll",
                                                                 SearchOption.AllDirectories);

                        string dllOutputPath = Path.Combine(TargetDLLsPath, Path.GetFileName(dllResults[0]));
                        File.Copy(dllResults[0], dllOutputPath, true);

                        File.Delete(zipFilePath);
                        Directory.Delete(temporaryDecompressionPath, true);
                        Debug.LogFormat("Successfully Extracted Packages at {0}", dllOutputPath);
                    }
                    catch (Exception exp)
                    {
                        Debug.LogErrorFormat("Error while downloading. Exp: {0}. St:{1}", exp.Message, exp.StackTrace);
                    }
                }
            }
        }