diff --git a/Cajetan.OF-DL.slnx b/Cajetan.OF-DL.slnx
new file mode 100644
index 0000000..0d7247c
--- /dev/null
+++ b/Cajetan.OF-DL.slnx
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/Cajetan.OF-DL/Cajetan.OF-DL.csproj b/Cajetan.OF-DL/Cajetan.OF-DL.csproj
new file mode 100644
index 0000000..b63f27b
--- /dev/null
+++ b/Cajetan.OF-DL/Cajetan.OF-DL.csproj
@@ -0,0 +1,48 @@
+
+
+
+ Exe
+ net10.0
+ OF_DL
+ enable
+ enable
+ Icon\download.ico
+
+
+
+ false
+ true
+ embedded
+
+
+
+
+
+
+
+
+ ..\OF DL\References\Spectre.Console.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Cajetan.OF-DL/Icon/download.ico b/Cajetan.OF-DL/Icon/download.ico
new file mode 100644
index 0000000..222e2cc
Binary files /dev/null and b/Cajetan.OF-DL/Icon/download.ico differ
diff --git a/Cajetan.OF-DL/ProgramCajetan.cs b/Cajetan.OF-DL/ProgramCajetan.cs
new file mode 100644
index 0000000..a7bcb1c
--- /dev/null
+++ b/Cajetan.OF-DL/ProgramCajetan.cs
@@ -0,0 +1,51 @@
+using Microsoft.Extensions.DependencyInjection;
+
+AnsiConsole.Write(new FigletText("Welcome to OF-DL").Color(Color.Red));
+
+ServiceCollection services = await ConfigureServices(args);
+
+
+
+static async Task ConfigureServices(string[] args)
+{
+ // Set up dependency injection with LoggingService and ConfigService
+ ServiceCollection services = new();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton(new ExitHelper(new SpectreDownloadEventHandler()));
+ ServiceProvider tempServiceProvider = services.BuildServiceProvider();
+
+ ILoggingService loggingService = tempServiceProvider.GetRequiredService();
+ IConfigService configService = tempServiceProvider.GetRequiredService();
+ ExitHelper exitHelper = tempServiceProvider.GetRequiredService();
+
+ if (!await configService.LoadConfigurationAsync(args))
+ {
+ AnsiConsole.MarkupLine("\n[red]config.conf is not valid, check your syntax![/]\n");
+ if (!configService.IsCliNonInteractive)
+ {
+ AnsiConsole.MarkupLine("[red]Press any key to exit.[/]");
+ Console.ReadKey();
+ }
+
+ exitHelper.ExitWithCode(3);
+ }
+
+ AnsiConsole.Markup("[green]config.conf located successfully!\n[/]");
+
+ // Set up full dependency injection with loaded config
+ services = [];
+ services.AddSingleton(loggingService);
+ services.AddSingleton(configService);
+ services.AddSingleton(exitHelper);
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+ services.AddSingleton();
+
+ return services;
+}
diff --git a/Cajetan.OF-DL/Properties/GlobalUsings.cs b/Cajetan.OF-DL/Properties/GlobalUsings.cs
new file mode 100644
index 0000000..3bb5015
--- /dev/null
+++ b/Cajetan.OF-DL/Properties/GlobalUsings.cs
@@ -0,0 +1,9 @@
+global using Spectre.Console;
+global using OF_DL;
+global using OF_DL.CLI;
+global using OF_DL.Crypto;
+global using OF_DL.Enumerations;
+global using OF_DL.Helpers;
+global using OF_DL.Models;
+global using OF_DL.Services;
+global using OF_DL.Utils;