diff --git a/AGENTS.md b/AGENTS.md
index d70d7b8..0b780fd 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,5 +1,7 @@
# AGENTS.md
+Note: Keep AGENTS.md updated as project structure, key services, or workflows change.
+
This repo is **OF DL** (also known as OF-DL), a C# console app that downloads media from a user's OnlyFans account(s).
This document is for AI agents helping developers modify the project. It focuses on architecture, data flow, and the
most important change points.
@@ -16,45 +18,46 @@ most important change points.
**Project Layout**
-- `OF DL/Program.cs` orchestrates startup, config/auth loading, and the interactive flow.
-- `OF DL/Services/` contains application services (API, auth, download, config, DB, startup, logging, filenames).
-- `OF DL/Models/` holds configuration, auth, DTOs, entities, and mapping helpers.
-- `OF DL/Widevine/` implements Widevine CDM handling and key derivation.
-- `OF DL/CLI/` contains Spectre.Console UI helpers and progress reporting.
+- `OF DL/Program.cs` orchestrates startup, config/auth loading, and the interactive flow (CLI entrypoint).
+- `OF DL/CLI/` contains Spectre.Console UI helpers and progress reporting (CLI-only).
+- `OF DL.Core/Services/` contains application services (API, auth, download, config, DB, startup, logging, filenames).
+- `OF DL.Core/Models/` holds configuration, auth, DTOs, entities, and mapping helpers.
+- `OF DL.Core/Widevine/` implements Widevine CDM handling and key derivation.
+- `OF DL.Core/Helpers/`, `OF DL.Core/Utils/`, `OF DL.Core/Crypto/`, `OF DL.Core/Enumerations/` contain shared core logic.
- `docs/` and `mkdocs.yml` define the documentation site.
- `site/` is generated MkDocs output and should not be edited by hand.
- `docker/` contains container entrypoint and supervisor configuration.
**Key Services**
-- `ApiService` (`OF DL/Services/ApiService.cs`) builds signed headers, performs HTTP requests, and maps DTOs to
+- `ApiService` (`OF DL.Core/Services/ApiService.cs`) builds signed headers, performs HTTP requests, and maps DTOs to
entities. It also handles DRM-related calls like MPD/PSSH extraction and license requests.
-- `AuthService` (`OF DL/Services/AuthService.cs`) loads `auth.json` or performs browser-based login with PuppeteerSharp,
+- `AuthService` (`OF DL.Core/Services/AuthService.cs`) loads `auth.json` or performs browser-based login with PuppeteerSharp,
then persists auth. It also normalizes cookies.
-- `ConfigService` (`OF DL/Services/ConfigService.cs`) loads `config.conf` (HOCON), migrates legacy `config.json`, and
+- `ConfigService` (`OF DL.Core/Services/ConfigService.cs`) loads `config.conf` (HOCON), migrates legacy `config.json`, and
updates global settings (logging, text sanitization).
-- `DownloadService` (`OF DL/Services/DownloadService.cs`) downloads all media (images, video, audio) and handles DRM
+- `DownloadService` (`OF DL.Core/Services/DownloadService.cs`) downloads all media (images, video, audio) and handles DRM
video decryption and FFmpeg execution.
-- `DownloadOrchestrationService` (`OF DL/Services/DownloadOrchestrationService.cs`) coordinates user selection,
+- `DownloadOrchestrationService` (`OF DL.Core/Services/DownloadOrchestrationService.cs`) coordinates user selection,
subscription lists, per-user folder prep, and per-media-type download execution.
-- `DBService` (`OF DL/Services/DBService.cs`) manages SQLite metadata DBs for downloaded media and a `users.db` index.
-- `StartupService` (`OF DL/Services/StartupService.cs`) validates FFmpeg, rules.json, Widevine device files, and
+- `DBService` (`OF DL.Core/Services/DBService.cs`) manages SQLite metadata DBs for downloaded media and a `users.db` index.
+- `StartupService` (`OF DL.Core/Services/StartupService.cs`) validates FFmpeg, rules.json, Widevine device files, and
performs release version checks.
-- `LoggingService` (`OF DL/Services/LoggingService.cs`) writes logs to `logs/OFDL.txt` and updates log level based on
+- `LoggingService` (`OF DL.Core/Services/LoggingService.cs`) writes logs to `logs/OFDL.txt` and updates log level based on
config.
-- `FileNameService` (`OF DL/Services/FileNameService.cs`) formats filenames using the custom format rules from config.
+- `FileNameService` (`OF DL.Core/Services/FileNameService.cs`) formats filenames using the custom format rules from config.
**Models: DTOs vs Entities**
-- DTOs live under `OF DL/Models/Dtos/` and mirror API response JSON.
-- Entities live under `OF DL/Models/Entities/` and represent the internal domain used by download logic.
-- Mappers in `OF DL/Models/Mappers/` convert DTOs into entities to isolate API changes from downstream logic.
+- DTOs live under `OF DL.Core/Models/Dtos/` and mirror API response JSON.
+- Entities live under `OF DL.Core/Models/Entities/` and represent the internal domain used by download logic.
+- Mappers in `OF DL.Core/Models/Mappers/` convert DTOs into entities to isolate API changes from downstream logic.
**Configuration**
- Primary config file is `config.conf` (HOCON). `ConfigService` migrates legacy `config.json` if found and creates a
default `config.conf` if missing.
-- `Config` lives in `OF DL/Models/Config.cs` and is populated by `ConfigService.LoadConfigFromFileAsync`.
+- `Config` lives in `OF DL.Core/Models/Config.cs` and is populated by `ConfigService.LoadConfigFromFileAsync`.
- `ConfigService.UpdateConfig` is the central place where runtime config changes are applied (logging level and text
sanitization).
- CLI flag `--non-interactive` forces non-interactive mode; `ConfigService.IsCliNonInteractive` and
@@ -70,7 +73,7 @@ most important change points.
**Authentication Flow**
-- Auth data is stored in `auth.json` using the `Auth` model in `OF DL/Models/Auth.cs`.
+- Auth data is stored in `auth.json` using the `Auth` model in `OF DL.Core/Models/Auth.cs`.
- `AuthService.LoadFromBrowserAsync` launches Chrome via PuppeteerSharp, waits for login, then extracts `auth_id` and
`sess` cookies, `bcTokenSha` from localStorage (used as `X_BC`), and `USER_AGENT` from the browser.
- `AuthService.ValidateCookieString` rewrites the cookie string so it contains only `auth_id` and `sess` and ensures a
@@ -89,7 +92,7 @@ Environment variables used by auth:
fallback to local `rules.json` in the current working directory. The repo ships `OF DL/rules.json` as the default
rules file.
- Cache durations: 15 minutes for remote rules, 5 minutes for local rules.
-- `DynamicRules` shape is defined in `OF DL/Models/DynamicRules.cs` and includes `app-token`, `static_param`, `prefix`,
+- `DynamicRules` shape is defined in `OF DL.Core/Models/DynamicRules.cs` and includes `app-token`, `static_param`, `prefix`,
`suffix`, `checksum_constant`, and `checksum_indexes`.
Signature algorithm in `GetDynamicHeaders`:
@@ -107,7 +110,7 @@ Headers included in signed requests:
- Runtime Widevine device files are expected at `cdm/devices/chrome_1610/device_client_id_blob` and
`cdm/devices/chrome_1610/device_private_key` (relative to the working directory). Paths are defined in
- `OF DL/Widevine/Constants.cs` and validated in `StartupService`.
+ `OF DL.Core/Widevine/Constants.cs` and validated in `StartupService`.
DRM flow is primarily in `DownloadService.GetDecryptionInfo` and `ApiService` DRM helpers:
@@ -175,12 +178,12 @@ cookies/user-agent. Output is written to `{filename}_source.mp4`, then moved and
**Where to Look First**
- `OF DL/Program.cs` for the execution path and menu flow.
-- `OF DL/Services/ApiService.cs` for OF API calls and header signing.
-- `OF DL/Services/DownloadService.cs` for downloads and DRM handling.
-- `OF DL/Services/DownloadOrchestrationService.cs` for creator selection and flow control.
-- `OF DL/Widevine/` for CDM key generation and license parsing.
-- `OF DL/Models/Config.cs` and `OF DL/Services/ConfigService.cs` for config shape and parsing.
-- `OF DL/Services/AuthService.cs` for user-facing authentication behavior and browser login flow.
+- `OF DL.Core/Services/ApiService.cs` for OF API calls and header signing.
+- `OF DL.Core/Services/DownloadService.cs` for downloads and DRM handling.
+- `OF DL.Core/Services/DownloadOrchestrationService.cs` for creator selection and flow control.
+- `OF DL.Core/Widevine/` for CDM key generation and license parsing.
+- `OF DL.Core/Models/Config.cs` and `OF DL.Core/Services/ConfigService.cs` for config shape and parsing.
+- `OF DL.Core/Services/AuthService.cs` for user-facing authentication behavior and browser login flow.
- `docs/` for public documentation; update docs whenever user-facing behavior or configuration changes.
Documentation updates for common changes:
diff --git a/OF DL/Crypto/CryptoUtils.cs b/OF DL.Core/Crypto/CryptoUtils.cs
similarity index 100%
rename from OF DL/Crypto/CryptoUtils.cs
rename to OF DL.Core/Crypto/CryptoUtils.cs
diff --git a/OF DL/Crypto/Padding.cs b/OF DL.Core/Crypto/Padding.cs
similarity index 100%
rename from OF DL/Crypto/Padding.cs
rename to OF DL.Core/Crypto/Padding.cs
diff --git a/OF DL/Enumerations/CustomFileNameOption.cs b/OF DL.Core/Enumerations/CustomFileNameOption.cs
similarity index 100%
rename from OF DL/Enumerations/CustomFileNameOption.cs
rename to OF DL.Core/Enumerations/CustomFileNameOption.cs
diff --git a/OF DL/Enumerations/DownloadDateSelection.cs b/OF DL.Core/Enumerations/DownloadDateSelection.cs
similarity index 100%
rename from OF DL/Enumerations/DownloadDateSelection.cs
rename to OF DL.Core/Enumerations/DownloadDateSelection.cs
diff --git a/OF DL/Enumerations/LoggingLevel.cs b/OF DL.Core/Enumerations/LoggingLevel.cs
similarity index 100%
rename from OF DL/Enumerations/LoggingLevel.cs
rename to OF DL.Core/Enumerations/LoggingLevel.cs
diff --git a/OF DL/Enumerations/MediaType.cs b/OF DL.Core/Enumerations/MediaType.cs
similarity index 100%
rename from OF DL/Enumerations/MediaType.cs
rename to OF DL.Core/Enumerations/MediaType.cs
diff --git a/OF DL/Enumerations/VideoResolution.cs b/OF DL.Core/Enumerations/VideoResolution.cs
similarity index 100%
rename from OF DL/Enumerations/VideoResolution.cs
rename to OF DL.Core/Enumerations/VideoResolution.cs
diff --git a/OF DL/Helpers/Constants.cs b/OF DL.Core/Helpers/Constants.cs
similarity index 100%
rename from OF DL/Helpers/Constants.cs
rename to OF DL.Core/Helpers/Constants.cs
diff --git a/OF DL/Helpers/DownloadContext.cs b/OF DL.Core/Helpers/DownloadContext.cs
similarity index 100%
rename from OF DL/Helpers/DownloadContext.cs
rename to OF DL.Core/Helpers/DownloadContext.cs
diff --git a/OF DL/Helpers/IFileNameHelper.cs b/OF DL.Core/Helpers/IFileNameHelper.cs
similarity index 100%
rename from OF DL/Helpers/IFileNameHelper.cs
rename to OF DL.Core/Helpers/IFileNameHelper.cs
diff --git a/OF DL/Helpers/VersionHelper.cs b/OF DL.Core/Helpers/VersionHelper.cs
similarity index 100%
rename from OF DL/Helpers/VersionHelper.cs
rename to OF DL.Core/Helpers/VersionHelper.cs
diff --git a/OF DL/Models/Auth.cs b/OF DL.Core/Models/Auth.cs
similarity index 100%
rename from OF DL/Models/Auth.cs
rename to OF DL.Core/Models/Auth.cs
diff --git a/OF DL/Models/CDRMProjectRequest.cs b/OF DL.Core/Models/CDRMProjectRequest.cs
similarity index 100%
rename from OF DL/Models/CDRMProjectRequest.cs
rename to OF DL.Core/Models/CDRMProjectRequest.cs
diff --git a/OF DL/Models/Config.cs b/OF DL.Core/Models/Config.cs
similarity index 100%
rename from OF DL/Models/Config.cs
rename to OF DL.Core/Models/Config.cs
diff --git a/OF DL/Models/CreatorConfig.cs b/OF DL.Core/Models/CreatorConfig.cs
similarity index 100%
rename from OF DL/Models/CreatorConfig.cs
rename to OF DL.Core/Models/CreatorConfig.cs
diff --git a/OF DL/Models/CreatorDownloadResult.cs b/OF DL.Core/Models/CreatorDownloadResult.cs
similarity index 100%
rename from OF DL/Models/CreatorDownloadResult.cs
rename to OF DL.Core/Models/CreatorDownloadResult.cs
diff --git a/OF DL/Models/DownloadResult.cs b/OF DL.Core/Models/DownloadResult.cs
similarity index 100%
rename from OF DL/Models/DownloadResult.cs
rename to OF DL.Core/Models/DownloadResult.cs
diff --git a/OF DL/Models/Dtos/Archived/ArchivedDto.cs b/OF DL.Core/Models/Dtos/Archived/ArchivedDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Archived/ArchivedDto.cs
rename to OF DL.Core/Models/Dtos/Archived/ArchivedDto.cs
diff --git a/OF DL/Models/Dtos/Archived/InfoDto.cs b/OF DL.Core/Models/Dtos/Archived/InfoDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Archived/InfoDto.cs
rename to OF DL.Core/Models/Dtos/Archived/InfoDto.cs
diff --git a/OF DL/Models/Dtos/Archived/LinkedPostDto.cs b/OF DL.Core/Models/Dtos/Archived/LinkedPostDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Archived/LinkedPostDto.cs
rename to OF DL.Core/Models/Dtos/Archived/LinkedPostDto.cs
diff --git a/OF DL/Models/Dtos/Archived/ListItemDto.cs b/OF DL.Core/Models/Dtos/Archived/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Archived/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Archived/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Archived/MediumDto.cs b/OF DL.Core/Models/Dtos/Archived/MediumDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Archived/MediumDto.cs
rename to OF DL.Core/Models/Dtos/Archived/MediumDto.cs
diff --git a/OF DL/Models/Dtos/Common/AuthorDto.cs b/OF DL.Core/Models/Dtos/Common/AuthorDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/AuthorDto.cs
rename to OF DL.Core/Models/Dtos/Common/AuthorDto.cs
diff --git a/OF DL/Models/Dtos/Common/AvatarThumbsDto.cs b/OF DL.Core/Models/Dtos/Common/AvatarThumbsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/AvatarThumbsDto.cs
rename to OF DL.Core/Models/Dtos/Common/AvatarThumbsDto.cs
diff --git a/OF DL/Models/Dtos/Common/CountersDto.cs b/OF DL.Core/Models/Dtos/Common/CountersDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/CountersDto.cs
rename to OF DL.Core/Models/Dtos/Common/CountersDto.cs
diff --git a/OF DL/Models/Dtos/Common/DashDto.cs b/OF DL.Core/Models/Dtos/Common/DashDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/DashDto.cs
rename to OF DL.Core/Models/Dtos/Common/DashDto.cs
diff --git a/OF DL/Models/Dtos/Common/DrmDto.cs b/OF DL.Core/Models/Dtos/Common/DrmDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/DrmDto.cs
rename to OF DL.Core/Models/Dtos/Common/DrmDto.cs
diff --git a/OF DL/Models/Dtos/Common/FilesDto.cs b/OF DL.Core/Models/Dtos/Common/FilesDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/FilesDto.cs
rename to OF DL.Core/Models/Dtos/Common/FilesDto.cs
diff --git a/OF DL/Models/Dtos/Common/FullDto.cs b/OF DL.Core/Models/Dtos/Common/FullDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/FullDto.cs
rename to OF DL.Core/Models/Dtos/Common/FullDto.cs
diff --git a/OF DL/Models/Dtos/Common/HeaderSizeDto.cs b/OF DL.Core/Models/Dtos/Common/HeaderSizeDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/HeaderSizeDto.cs
rename to OF DL.Core/Models/Dtos/Common/HeaderSizeDto.cs
diff --git a/OF DL/Models/Dtos/Common/HeaderThumbsDto.cs b/OF DL.Core/Models/Dtos/Common/HeaderThumbsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/HeaderThumbsDto.cs
rename to OF DL.Core/Models/Dtos/Common/HeaderThumbsDto.cs
diff --git a/OF DL/Models/Dtos/Common/HlsDto.cs b/OF DL.Core/Models/Dtos/Common/HlsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/HlsDto.cs
rename to OF DL.Core/Models/Dtos/Common/HlsDto.cs
diff --git a/OF DL/Models/Dtos/Common/ManifestDto.cs b/OF DL.Core/Models/Dtos/Common/ManifestDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/ManifestDto.cs
rename to OF DL.Core/Models/Dtos/Common/ManifestDto.cs
diff --git a/OF DL/Models/Dtos/Common/PreviewDto.cs b/OF DL.Core/Models/Dtos/Common/PreviewDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/PreviewDto.cs
rename to OF DL.Core/Models/Dtos/Common/PreviewDto.cs
diff --git a/OF DL/Models/Dtos/Common/SignatureDto.cs b/OF DL.Core/Models/Dtos/Common/SignatureDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/SignatureDto.cs
rename to OF DL.Core/Models/Dtos/Common/SignatureDto.cs
diff --git a/OF DL/Models/Dtos/Common/SourceDto.cs b/OF DL.Core/Models/Dtos/Common/SourceDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/SourceDto.cs
rename to OF DL.Core/Models/Dtos/Common/SourceDto.cs
diff --git a/OF DL/Models/Dtos/Common/SourcesDto.cs b/OF DL.Core/Models/Dtos/Common/SourcesDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/SourcesDto.cs
rename to OF DL.Core/Models/Dtos/Common/SourcesDto.cs
diff --git a/OF DL/Models/Dtos/Common/SquarePreviewDto.cs b/OF DL.Core/Models/Dtos/Common/SquarePreviewDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/SquarePreviewDto.cs
rename to OF DL.Core/Models/Dtos/Common/SquarePreviewDto.cs
diff --git a/OF DL/Models/Dtos/Common/SubscribedByDataDto.cs b/OF DL.Core/Models/Dtos/Common/SubscribedByDataDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/SubscribedByDataDto.cs
rename to OF DL.Core/Models/Dtos/Common/SubscribedByDataDto.cs
diff --git a/OF DL/Models/Dtos/Common/SubscribedOnDataDto.cs b/OF DL.Core/Models/Dtos/Common/SubscribedOnDataDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/SubscribedOnDataDto.cs
rename to OF DL.Core/Models/Dtos/Common/SubscribedOnDataDto.cs
diff --git a/OF DL/Models/Dtos/Common/ThumbDto.cs b/OF DL.Core/Models/Dtos/Common/ThumbDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/ThumbDto.cs
rename to OF DL.Core/Models/Dtos/Common/ThumbDto.cs
diff --git a/OF DL/Models/Dtos/Common/VideoDto.cs b/OF DL.Core/Models/Dtos/Common/VideoDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/VideoDto.cs
rename to OF DL.Core/Models/Dtos/Common/VideoDto.cs
diff --git a/OF DL/Models/Dtos/Common/VideoSourcesDto.cs b/OF DL.Core/Models/Dtos/Common/VideoSourcesDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Common/VideoSourcesDto.cs
rename to OF DL.Core/Models/Dtos/Common/VideoSourcesDto.cs
diff --git a/OF DL/Models/Dtos/Highlights/HighlightMediaDto.cs b/OF DL.Core/Models/Dtos/Highlights/HighlightMediaDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Highlights/HighlightMediaDto.cs
rename to OF DL.Core/Models/Dtos/Highlights/HighlightMediaDto.cs
diff --git a/OF DL/Models/Dtos/Highlights/HighlightsDto.cs b/OF DL.Core/Models/Dtos/Highlights/HighlightsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Highlights/HighlightsDto.cs
rename to OF DL.Core/Models/Dtos/Highlights/HighlightsDto.cs
diff --git a/OF DL/Models/Dtos/Highlights/ListItemDto.cs b/OF DL.Core/Models/Dtos/Highlights/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Highlights/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Highlights/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Highlights/MediumDto.cs b/OF DL.Core/Models/Dtos/Highlights/MediumDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Highlights/MediumDto.cs
rename to OF DL.Core/Models/Dtos/Highlights/MediumDto.cs
diff --git a/OF DL/Models/Dtos/Highlights/StoryDto.cs b/OF DL.Core/Models/Dtos/Highlights/StoryDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Highlights/StoryDto.cs
rename to OF DL.Core/Models/Dtos/Highlights/StoryDto.cs
diff --git a/OF DL/Models/Dtos/Lists/HeaderSizeDto.cs b/OF DL.Core/Models/Dtos/Lists/HeaderSizeDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/HeaderSizeDto.cs
rename to OF DL.Core/Models/Dtos/Lists/HeaderSizeDto.cs
diff --git a/OF DL/Models/Dtos/Lists/HeaderThumbsDto.cs b/OF DL.Core/Models/Dtos/Lists/HeaderThumbsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/HeaderThumbsDto.cs
rename to OF DL.Core/Models/Dtos/Lists/HeaderThumbsDto.cs
diff --git a/OF DL/Models/Dtos/Lists/ListsStateDto.cs b/OF DL.Core/Models/Dtos/Lists/ListsStateDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/ListsStateDto.cs
rename to OF DL.Core/Models/Dtos/Lists/ListsStateDto.cs
diff --git a/OF DL/Models/Dtos/Lists/SubscribeDto.cs b/OF DL.Core/Models/Dtos/Lists/SubscribeDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/SubscribeDto.cs
rename to OF DL.Core/Models/Dtos/Lists/SubscribeDto.cs
diff --git a/OF DL/Models/Dtos/Lists/SubscribedByDataDto.cs b/OF DL.Core/Models/Dtos/Lists/SubscribedByDataDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/SubscribedByDataDto.cs
rename to OF DL.Core/Models/Dtos/Lists/SubscribedByDataDto.cs
diff --git a/OF DL/Models/Dtos/Lists/SubscribedOnDataDto.cs b/OF DL.Core/Models/Dtos/Lists/SubscribedOnDataDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/SubscribedOnDataDto.cs
rename to OF DL.Core/Models/Dtos/Lists/SubscribedOnDataDto.cs
diff --git a/OF DL/Models/Dtos/Lists/SubscriptionBundleDto.cs b/OF DL.Core/Models/Dtos/Lists/SubscriptionBundleDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/SubscriptionBundleDto.cs
rename to OF DL.Core/Models/Dtos/Lists/SubscriptionBundleDto.cs
diff --git a/OF DL/Models/Dtos/Lists/UserListDto.cs b/OF DL.Core/Models/Dtos/Lists/UserListDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/UserListDto.cs
rename to OF DL.Core/Models/Dtos/Lists/UserListDto.cs
diff --git a/OF DL/Models/Dtos/Lists/UserListItemDto.cs b/OF DL.Core/Models/Dtos/Lists/UserListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/UserListItemDto.cs
rename to OF DL.Core/Models/Dtos/Lists/UserListItemDto.cs
diff --git a/OF DL/Models/Dtos/Lists/UserListUserDto.cs b/OF DL.Core/Models/Dtos/Lists/UserListUserDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/UserListUserDto.cs
rename to OF DL.Core/Models/Dtos/Lists/UserListUserDto.cs
diff --git a/OF DL/Models/Dtos/Lists/UsersListDto.cs b/OF DL.Core/Models/Dtos/Lists/UsersListDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Lists/UsersListDto.cs
rename to OF DL.Core/Models/Dtos/Lists/UsersListDto.cs
diff --git a/OF DL/Models/Dtos/Messages/FromUserDto.cs b/OF DL.Core/Models/Dtos/Messages/FromUserDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/FromUserDto.cs
rename to OF DL.Core/Models/Dtos/Messages/FromUserDto.cs
diff --git a/OF DL/Models/Dtos/Messages/InfoDto.cs b/OF DL.Core/Models/Dtos/Messages/InfoDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/InfoDto.cs
rename to OF DL.Core/Models/Dtos/Messages/InfoDto.cs
diff --git a/OF DL/Models/Dtos/Messages/ListItemDto.cs b/OF DL.Core/Models/Dtos/Messages/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Messages/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Messages/ListsStateDto.cs b/OF DL.Core/Models/Dtos/Messages/ListsStateDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/ListsStateDto.cs
rename to OF DL.Core/Models/Dtos/Messages/ListsStateDto.cs
diff --git a/OF DL/Models/Dtos/Messages/MediumDto.cs b/OF DL.Core/Models/Dtos/Messages/MediumDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/MediumDto.cs
rename to OF DL.Core/Models/Dtos/Messages/MediumDto.cs
diff --git a/OF DL/Models/Dtos/Messages/MessagesDto.cs b/OF DL.Core/Models/Dtos/Messages/MessagesDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/MessagesDto.cs
rename to OF DL.Core/Models/Dtos/Messages/MessagesDto.cs
diff --git a/OF DL/Models/Dtos/Messages/SingleMessageDto.cs b/OF DL.Core/Models/Dtos/Messages/SingleMessageDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Messages/SingleMessageDto.cs
rename to OF DL.Core/Models/Dtos/Messages/SingleMessageDto.cs
diff --git a/OF DL/Models/Dtos/Posts/InfoDto.cs b/OF DL.Core/Models/Dtos/Posts/InfoDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Posts/InfoDto.cs
rename to OF DL.Core/Models/Dtos/Posts/InfoDto.cs
diff --git a/OF DL/Models/Dtos/Posts/ListItemDto.cs b/OF DL.Core/Models/Dtos/Posts/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Posts/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Posts/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Posts/MediumDto.cs b/OF DL.Core/Models/Dtos/Posts/MediumDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Posts/MediumDto.cs
rename to OF DL.Core/Models/Dtos/Posts/MediumDto.cs
diff --git a/OF DL/Models/Dtos/Posts/PostDto.cs b/OF DL.Core/Models/Dtos/Posts/PostDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Posts/PostDto.cs
rename to OF DL.Core/Models/Dtos/Posts/PostDto.cs
diff --git a/OF DL/Models/Dtos/Posts/SinglePostDto.cs b/OF DL.Core/Models/Dtos/Posts/SinglePostDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Posts/SinglePostDto.cs
rename to OF DL.Core/Models/Dtos/Posts/SinglePostDto.cs
diff --git a/OF DL/Models/Dtos/Purchased/FromUserDto.cs b/OF DL.Core/Models/Dtos/Purchased/FromUserDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Purchased/FromUserDto.cs
rename to OF DL.Core/Models/Dtos/Purchased/FromUserDto.cs
diff --git a/OF DL/Models/Dtos/Purchased/ListItemDto.cs b/OF DL.Core/Models/Dtos/Purchased/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Purchased/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Purchased/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Purchased/PurchasedDto.cs b/OF DL.Core/Models/Dtos/Purchased/PurchasedDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Purchased/PurchasedDto.cs
rename to OF DL.Core/Models/Dtos/Purchased/PurchasedDto.cs
diff --git a/OF DL/Models/Dtos/Stories/MediumDto.cs b/OF DL.Core/Models/Dtos/Stories/MediumDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Stories/MediumDto.cs
rename to OF DL.Core/Models/Dtos/Stories/MediumDto.cs
diff --git a/OF DL/Models/Dtos/Stories/StoryDto.cs b/OF DL.Core/Models/Dtos/Stories/StoryDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Stories/StoryDto.cs
rename to OF DL.Core/Models/Dtos/Stories/StoryDto.cs
diff --git a/OF DL/Models/Dtos/Streams/InfoDto.cs b/OF DL.Core/Models/Dtos/Streams/InfoDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Streams/InfoDto.cs
rename to OF DL.Core/Models/Dtos/Streams/InfoDto.cs
diff --git a/OF DL/Models/Dtos/Streams/ListItemDto.cs b/OF DL.Core/Models/Dtos/Streams/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Streams/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Streams/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Streams/MediumDto.cs b/OF DL.Core/Models/Dtos/Streams/MediumDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Streams/MediumDto.cs
rename to OF DL.Core/Models/Dtos/Streams/MediumDto.cs
diff --git a/OF DL/Models/Dtos/Streams/StreamsDto.cs b/OF DL.Core/Models/Dtos/Streams/StreamsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Streams/StreamsDto.cs
rename to OF DL.Core/Models/Dtos/Streams/StreamsDto.cs
diff --git a/OF DL/Models/Dtos/Subscriptions/ListItemDto.cs b/OF DL.Core/Models/Dtos/Subscriptions/ListItemDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Subscriptions/ListItemDto.cs
rename to OF DL.Core/Models/Dtos/Subscriptions/ListItemDto.cs
diff --git a/OF DL/Models/Dtos/Subscriptions/ListsStateDto.cs b/OF DL.Core/Models/Dtos/Subscriptions/ListsStateDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Subscriptions/ListsStateDto.cs
rename to OF DL.Core/Models/Dtos/Subscriptions/ListsStateDto.cs
diff --git a/OF DL/Models/Dtos/Subscriptions/SubscribeDto.cs b/OF DL.Core/Models/Dtos/Subscriptions/SubscribeDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Subscriptions/SubscribeDto.cs
rename to OF DL.Core/Models/Dtos/Subscriptions/SubscribeDto.cs
diff --git a/OF DL/Models/Dtos/Subscriptions/SubscriptionsDto.cs b/OF DL.Core/Models/Dtos/Subscriptions/SubscriptionsDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Subscriptions/SubscriptionsDto.cs
rename to OF DL.Core/Models/Dtos/Subscriptions/SubscriptionsDto.cs
diff --git a/OF DL/Models/Dtos/Users/ListsStateDto.cs b/OF DL.Core/Models/Dtos/Users/ListsStateDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Users/ListsStateDto.cs
rename to OF DL.Core/Models/Dtos/Users/ListsStateDto.cs
diff --git a/OF DL/Models/Dtos/Users/SubscribeDto.cs b/OF DL.Core/Models/Dtos/Users/SubscribeDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Users/SubscribeDto.cs
rename to OF DL.Core/Models/Dtos/Users/SubscribeDto.cs
diff --git a/OF DL/Models/Dtos/Users/UserDto.cs b/OF DL.Core/Models/Dtos/Users/UserDto.cs
similarity index 100%
rename from OF DL/Models/Dtos/Users/UserDto.cs
rename to OF DL.Core/Models/Dtos/Users/UserDto.cs
diff --git a/OF DL/Models/DynamicRules.cs b/OF DL.Core/Models/DynamicRules.cs
similarity index 100%
rename from OF DL/Models/DynamicRules.cs
rename to OF DL.Core/Models/DynamicRules.cs
diff --git a/OF DL/Models/Entities/Archived/Archived.cs b/OF DL.Core/Models/Entities/Archived/Archived.cs
similarity index 100%
rename from OF DL/Models/Entities/Archived/Archived.cs
rename to OF DL.Core/Models/Entities/Archived/Archived.cs
diff --git a/OF DL/Models/Entities/Archived/ArchivedCollection.cs b/OF DL.Core/Models/Entities/Archived/ArchivedCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Archived/ArchivedCollection.cs
rename to OF DL.Core/Models/Entities/Archived/ArchivedCollection.cs
diff --git a/OF DL/Models/Entities/Archived/ListItem.cs b/OF DL.Core/Models/Entities/Archived/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Archived/ListItem.cs
rename to OF DL.Core/Models/Entities/Archived/ListItem.cs
diff --git a/OF DL/Models/Entities/Archived/Medium.cs b/OF DL.Core/Models/Entities/Archived/Medium.cs
similarity index 100%
rename from OF DL/Models/Entities/Archived/Medium.cs
rename to OF DL.Core/Models/Entities/Archived/Medium.cs
diff --git a/OF DL/Models/Entities/Common/Author.cs b/OF DL.Core/Models/Entities/Common/Author.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Author.cs
rename to OF DL.Core/Models/Entities/Common/Author.cs
diff --git a/OF DL/Models/Entities/Common/Dash.cs b/OF DL.Core/Models/Entities/Common/Dash.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Dash.cs
rename to OF DL.Core/Models/Entities/Common/Dash.cs
diff --git a/OF DL/Models/Entities/Common/Drm.cs b/OF DL.Core/Models/Entities/Common/Drm.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Drm.cs
rename to OF DL.Core/Models/Entities/Common/Drm.cs
diff --git a/OF DL/Models/Entities/Common/Files.cs b/OF DL.Core/Models/Entities/Common/Files.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Files.cs
rename to OF DL.Core/Models/Entities/Common/Files.cs
diff --git a/OF DL/Models/Entities/Common/FromUser.cs b/OF DL.Core/Models/Entities/Common/FromUser.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/FromUser.cs
rename to OF DL.Core/Models/Entities/Common/FromUser.cs
diff --git a/OF DL/Models/Entities/Common/Full.cs b/OF DL.Core/Models/Entities/Common/Full.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Full.cs
rename to OF DL.Core/Models/Entities/Common/Full.cs
diff --git a/OF DL/Models/Entities/Common/Manifest.cs b/OF DL.Core/Models/Entities/Common/Manifest.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Manifest.cs
rename to OF DL.Core/Models/Entities/Common/Manifest.cs
diff --git a/OF DL/Models/Entities/Common/Preview.cs b/OF DL.Core/Models/Entities/Common/Preview.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Preview.cs
rename to OF DL.Core/Models/Entities/Common/Preview.cs
diff --git a/OF DL/Models/Entities/Common/Signature.cs b/OF DL.Core/Models/Entities/Common/Signature.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/Signature.cs
rename to OF DL.Core/Models/Entities/Common/Signature.cs
diff --git a/OF DL/Models/Entities/Common/VideoSources.cs b/OF DL.Core/Models/Entities/Common/VideoSources.cs
similarity index 100%
rename from OF DL/Models/Entities/Common/VideoSources.cs
rename to OF DL.Core/Models/Entities/Common/VideoSources.cs
diff --git a/OF DL/Models/Entities/Highlights/HighlightMedia.cs b/OF DL.Core/Models/Entities/Highlights/HighlightMedia.cs
similarity index 100%
rename from OF DL/Models/Entities/Highlights/HighlightMedia.cs
rename to OF DL.Core/Models/Entities/Highlights/HighlightMedia.cs
diff --git a/OF DL/Models/Entities/Highlights/Highlights.cs b/OF DL.Core/Models/Entities/Highlights/Highlights.cs
similarity index 100%
rename from OF DL/Models/Entities/Highlights/Highlights.cs
rename to OF DL.Core/Models/Entities/Highlights/Highlights.cs
diff --git a/OF DL/Models/Entities/Highlights/ListItem.cs b/OF DL.Core/Models/Entities/Highlights/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Highlights/ListItem.cs
rename to OF DL.Core/Models/Entities/Highlights/ListItem.cs
diff --git a/OF DL/Models/Entities/Highlights/Medium.cs b/OF DL.Core/Models/Entities/Highlights/Medium.cs
similarity index 100%
rename from OF DL/Models/Entities/Highlights/Medium.cs
rename to OF DL.Core/Models/Entities/Highlights/Medium.cs
diff --git a/OF DL/Models/Entities/Highlights/Story.cs b/OF DL.Core/Models/Entities/Highlights/Story.cs
similarity index 100%
rename from OF DL/Models/Entities/Highlights/Story.cs
rename to OF DL.Core/Models/Entities/Highlights/Story.cs
diff --git a/OF DL/Models/Entities/Lists/UserList.cs b/OF DL.Core/Models/Entities/Lists/UserList.cs
similarity index 100%
rename from OF DL/Models/Entities/Lists/UserList.cs
rename to OF DL.Core/Models/Entities/Lists/UserList.cs
diff --git a/OF DL/Models/Entities/Lists/UserListItem.cs b/OF DL.Core/Models/Entities/Lists/UserListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Lists/UserListItem.cs
rename to OF DL.Core/Models/Entities/Lists/UserListItem.cs
diff --git a/OF DL/Models/Entities/Lists/UsersList.cs b/OF DL.Core/Models/Entities/Lists/UsersList.cs
similarity index 100%
rename from OF DL/Models/Entities/Lists/UsersList.cs
rename to OF DL.Core/Models/Entities/Lists/UsersList.cs
diff --git a/OF DL/Models/Entities/Messages/ListItem.cs b/OF DL.Core/Models/Entities/Messages/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Messages/ListItem.cs
rename to OF DL.Core/Models/Entities/Messages/ListItem.cs
diff --git a/OF DL/Models/Entities/Messages/Medium.cs b/OF DL.Core/Models/Entities/Messages/Medium.cs
similarity index 100%
rename from OF DL/Models/Entities/Messages/Medium.cs
rename to OF DL.Core/Models/Entities/Messages/Medium.cs
diff --git a/OF DL/Models/Entities/Messages/MessageCollection.cs b/OF DL.Core/Models/Entities/Messages/MessageCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Messages/MessageCollection.cs
rename to OF DL.Core/Models/Entities/Messages/MessageCollection.cs
diff --git a/OF DL/Models/Entities/Messages/Messages.cs b/OF DL.Core/Models/Entities/Messages/Messages.cs
similarity index 100%
rename from OF DL/Models/Entities/Messages/Messages.cs
rename to OF DL.Core/Models/Entities/Messages/Messages.cs
diff --git a/OF DL/Models/Entities/Messages/SingleMessage.cs b/OF DL.Core/Models/Entities/Messages/SingleMessage.cs
similarity index 100%
rename from OF DL/Models/Entities/Messages/SingleMessage.cs
rename to OF DL.Core/Models/Entities/Messages/SingleMessage.cs
diff --git a/OF DL/Models/Entities/Posts/ListItem.cs b/OF DL.Core/Models/Entities/Posts/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Posts/ListItem.cs
rename to OF DL.Core/Models/Entities/Posts/ListItem.cs
diff --git a/OF DL/Models/Entities/Posts/Medium.cs b/OF DL.Core/Models/Entities/Posts/Medium.cs
similarity index 100%
rename from OF DL/Models/Entities/Posts/Medium.cs
rename to OF DL.Core/Models/Entities/Posts/Medium.cs
diff --git a/OF DL/Models/Entities/Posts/Post.cs b/OF DL.Core/Models/Entities/Posts/Post.cs
similarity index 100%
rename from OF DL/Models/Entities/Posts/Post.cs
rename to OF DL.Core/Models/Entities/Posts/Post.cs
diff --git a/OF DL/Models/Entities/Posts/PostCollection.cs b/OF DL.Core/Models/Entities/Posts/PostCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Posts/PostCollection.cs
rename to OF DL.Core/Models/Entities/Posts/PostCollection.cs
diff --git a/OF DL/Models/Entities/Posts/SinglePost.cs b/OF DL.Core/Models/Entities/Posts/SinglePost.cs
similarity index 100%
rename from OF DL/Models/Entities/Posts/SinglePost.cs
rename to OF DL.Core/Models/Entities/Posts/SinglePost.cs
diff --git a/OF DL/Models/Entities/Posts/SinglePostCollection.cs b/OF DL.Core/Models/Entities/Posts/SinglePostCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Posts/SinglePostCollection.cs
rename to OF DL.Core/Models/Entities/Posts/SinglePostCollection.cs
diff --git a/OF DL/Models/Entities/Purchased/ListItem.cs b/OF DL.Core/Models/Entities/Purchased/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Purchased/ListItem.cs
rename to OF DL.Core/Models/Entities/Purchased/ListItem.cs
diff --git a/OF DL/Models/Entities/Purchased/PaidMessageCollection.cs b/OF DL.Core/Models/Entities/Purchased/PaidMessageCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Purchased/PaidMessageCollection.cs
rename to OF DL.Core/Models/Entities/Purchased/PaidMessageCollection.cs
diff --git a/OF DL/Models/Entities/Purchased/PaidPostCollection.cs b/OF DL.Core/Models/Entities/Purchased/PaidPostCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Purchased/PaidPostCollection.cs
rename to OF DL.Core/Models/Entities/Purchased/PaidPostCollection.cs
diff --git a/OF DL/Models/Entities/Purchased/Purchased.cs b/OF DL.Core/Models/Entities/Purchased/Purchased.cs
similarity index 100%
rename from OF DL/Models/Entities/Purchased/Purchased.cs
rename to OF DL.Core/Models/Entities/Purchased/Purchased.cs
diff --git a/OF DL/Models/Entities/Purchased/PurchasedTabCollection.cs b/OF DL.Core/Models/Entities/Purchased/PurchasedTabCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Purchased/PurchasedTabCollection.cs
rename to OF DL.Core/Models/Entities/Purchased/PurchasedTabCollection.cs
diff --git a/OF DL/Models/Entities/Purchased/SinglePaidMessageCollection.cs b/OF DL.Core/Models/Entities/Purchased/SinglePaidMessageCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Purchased/SinglePaidMessageCollection.cs
rename to OF DL.Core/Models/Entities/Purchased/SinglePaidMessageCollection.cs
diff --git a/OF DL/Models/Entities/Stories/Medium.cs b/OF DL.Core/Models/Entities/Stories/Medium.cs
similarity index 100%
rename from OF DL/Models/Entities/Stories/Medium.cs
rename to OF DL.Core/Models/Entities/Stories/Medium.cs
diff --git a/OF DL/Models/Entities/Stories/Stories.cs b/OF DL.Core/Models/Entities/Stories/Stories.cs
similarity index 100%
rename from OF DL/Models/Entities/Stories/Stories.cs
rename to OF DL.Core/Models/Entities/Stories/Stories.cs
diff --git a/OF DL/Models/Entities/Streams/ListItem.cs b/OF DL.Core/Models/Entities/Streams/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Streams/ListItem.cs
rename to OF DL.Core/Models/Entities/Streams/ListItem.cs
diff --git a/OF DL/Models/Entities/Streams/Medium.cs b/OF DL.Core/Models/Entities/Streams/Medium.cs
similarity index 100%
rename from OF DL/Models/Entities/Streams/Medium.cs
rename to OF DL.Core/Models/Entities/Streams/Medium.cs
diff --git a/OF DL/Models/Entities/Streams/Streams.cs b/OF DL.Core/Models/Entities/Streams/Streams.cs
similarity index 100%
rename from OF DL/Models/Entities/Streams/Streams.cs
rename to OF DL.Core/Models/Entities/Streams/Streams.cs
diff --git a/OF DL/Models/Entities/Streams/StreamsCollection.cs b/OF DL.Core/Models/Entities/Streams/StreamsCollection.cs
similarity index 100%
rename from OF DL/Models/Entities/Streams/StreamsCollection.cs
rename to OF DL.Core/Models/Entities/Streams/StreamsCollection.cs
diff --git a/OF DL/Models/Entities/Subscriptions/ListItem.cs b/OF DL.Core/Models/Entities/Subscriptions/ListItem.cs
similarity index 100%
rename from OF DL/Models/Entities/Subscriptions/ListItem.cs
rename to OF DL.Core/Models/Entities/Subscriptions/ListItem.cs
diff --git a/OF DL/Models/Entities/Subscriptions/Subscriptions.cs b/OF DL.Core/Models/Entities/Subscriptions/Subscriptions.cs
similarity index 100%
rename from OF DL/Models/Entities/Subscriptions/Subscriptions.cs
rename to OF DL.Core/Models/Entities/Subscriptions/Subscriptions.cs
diff --git a/OF DL/Models/Entities/Users/User.cs b/OF DL.Core/Models/Entities/Users/User.cs
similarity index 100%
rename from OF DL/Models/Entities/Users/User.cs
rename to OF DL.Core/Models/Entities/Users/User.cs
diff --git a/OF DL/Models/FileNameFormatConfig.cs b/OF DL.Core/Models/FileNameFormatConfig.cs
similarity index 100%
rename from OF DL/Models/FileNameFormatConfig.cs
rename to OF DL.Core/Models/FileNameFormatConfig.cs
diff --git a/OF DL/Models/IFileNameFormatConfig.cs b/OF DL.Core/Models/IFileNameFormatConfig.cs
similarity index 100%
rename from OF DL/Models/IFileNameFormatConfig.cs
rename to OF DL.Core/Models/IFileNameFormatConfig.cs
diff --git a/OF DL/Models/LatestReleaseApiResponse.cs b/OF DL.Core/Models/LatestReleaseApiResponse.cs
similarity index 100%
rename from OF DL/Models/LatestReleaseApiResponse.cs
rename to OF DL.Core/Models/LatestReleaseApiResponse.cs
diff --git a/OF DL/Models/Mappers/ArchivedMapper.cs b/OF DL.Core/Models/Mappers/ArchivedMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/ArchivedMapper.cs
rename to OF DL.Core/Models/Mappers/ArchivedMapper.cs
diff --git a/OF DL/Models/Mappers/HighlightsMapper.cs b/OF DL.Core/Models/Mappers/HighlightsMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/HighlightsMapper.cs
rename to OF DL.Core/Models/Mappers/HighlightsMapper.cs
diff --git a/OF DL/Models/Mappers/MessagesMapper.cs b/OF DL.Core/Models/Mappers/MessagesMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/MessagesMapper.cs
rename to OF DL.Core/Models/Mappers/MessagesMapper.cs
diff --git a/OF DL/Models/Mappers/PostMapper.cs b/OF DL.Core/Models/Mappers/PostMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/PostMapper.cs
rename to OF DL.Core/Models/Mappers/PostMapper.cs
diff --git a/OF DL/Models/Mappers/PurchasedMapper.cs b/OF DL.Core/Models/Mappers/PurchasedMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/PurchasedMapper.cs
rename to OF DL.Core/Models/Mappers/PurchasedMapper.cs
diff --git a/OF DL/Models/Mappers/StoriesMapper.cs b/OF DL.Core/Models/Mappers/StoriesMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/StoriesMapper.cs
rename to OF DL.Core/Models/Mappers/StoriesMapper.cs
diff --git a/OF DL/Models/Mappers/StreamsMapper.cs b/OF DL.Core/Models/Mappers/StreamsMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/StreamsMapper.cs
rename to OF DL.Core/Models/Mappers/StreamsMapper.cs
diff --git a/OF DL/Models/Mappers/SubscriptionsMapper.cs b/OF DL.Core/Models/Mappers/SubscriptionsMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/SubscriptionsMapper.cs
rename to OF DL.Core/Models/Mappers/SubscriptionsMapper.cs
diff --git a/OF DL/Models/Mappers/UserListsMapper.cs b/OF DL.Core/Models/Mappers/UserListsMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/UserListsMapper.cs
rename to OF DL.Core/Models/Mappers/UserListsMapper.cs
diff --git a/OF DL/Models/Mappers/UserMapper.cs b/OF DL.Core/Models/Mappers/UserMapper.cs
similarity index 100%
rename from OF DL/Models/Mappers/UserMapper.cs
rename to OF DL.Core/Models/Mappers/UserMapper.cs
diff --git a/OF DL/Models/OFDLRequest.cs b/OF DL.Core/Models/OFDLRequest.cs
similarity index 100%
rename from OF DL/Models/OFDLRequest.cs
rename to OF DL.Core/Models/OFDLRequest.cs
diff --git a/OF DL/Models/ShortDateConverter.cs b/OF DL.Core/Models/ShortDateConverter.cs
similarity index 100%
rename from OF DL/Models/ShortDateConverter.cs
rename to OF DL.Core/Models/ShortDateConverter.cs
diff --git a/OF DL/Models/StartupResult.cs b/OF DL.Core/Models/StartupResult.cs
similarity index 100%
rename from OF DL/Models/StartupResult.cs
rename to OF DL.Core/Models/StartupResult.cs
diff --git a/OF DL/Models/ToggleableConfigAttribute.cs b/OF DL.Core/Models/ToggleableConfigAttribute.cs
similarity index 100%
rename from OF DL/Models/ToggleableConfigAttribute.cs
rename to OF DL.Core/Models/ToggleableConfigAttribute.cs
diff --git a/OF DL.Core/OF DL.Core.csproj b/OF DL.Core/OF DL.Core.csproj
new file mode 100644
index 0000000..88e3b0c
--- /dev/null
+++ b/OF DL.Core/OF DL.Core.csproj
@@ -0,0 +1,26 @@
+
+
+
+ net8.0
+ OF_DL
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OF DL/Services/ApiService.cs b/OF DL.Core/Services/ApiService.cs
similarity index 100%
rename from OF DL/Services/ApiService.cs
rename to OF DL.Core/Services/ApiService.cs
diff --git a/OF DL/Services/AuthService.cs b/OF DL.Core/Services/AuthService.cs
similarity index 100%
rename from OF DL/Services/AuthService.cs
rename to OF DL.Core/Services/AuthService.cs
diff --git a/OF DL/Services/ConfigService.cs b/OF DL.Core/Services/ConfigService.cs
similarity index 100%
rename from OF DL/Services/ConfigService.cs
rename to OF DL.Core/Services/ConfigService.cs
diff --git a/OF DL/Services/DBService.cs b/OF DL.Core/Services/DBService.cs
similarity index 100%
rename from OF DL/Services/DBService.cs
rename to OF DL.Core/Services/DBService.cs
diff --git a/OF DL/Services/DownloadOrchestrationService.cs b/OF DL.Core/Services/DownloadOrchestrationService.cs
similarity index 100%
rename from OF DL/Services/DownloadOrchestrationService.cs
rename to OF DL.Core/Services/DownloadOrchestrationService.cs
diff --git a/OF DL/Services/DownloadService.cs b/OF DL.Core/Services/DownloadService.cs
similarity index 100%
rename from OF DL/Services/DownloadService.cs
rename to OF DL.Core/Services/DownloadService.cs
diff --git a/OF DL/Services/FileNameService.cs b/OF DL.Core/Services/FileNameService.cs
similarity index 100%
rename from OF DL/Services/FileNameService.cs
rename to OF DL.Core/Services/FileNameService.cs
diff --git a/OF DL/Services/IAPIService.cs b/OF DL.Core/Services/IAPIService.cs
similarity index 100%
rename from OF DL/Services/IAPIService.cs
rename to OF DL.Core/Services/IAPIService.cs
diff --git a/OF DL/Services/IAuthService.cs b/OF DL.Core/Services/IAuthService.cs
similarity index 100%
rename from OF DL/Services/IAuthService.cs
rename to OF DL.Core/Services/IAuthService.cs
diff --git a/OF DL/Services/IConfigService.cs b/OF DL.Core/Services/IConfigService.cs
similarity index 100%
rename from OF DL/Services/IConfigService.cs
rename to OF DL.Core/Services/IConfigService.cs
diff --git a/OF DL/Services/IDBService.cs b/OF DL.Core/Services/IDBService.cs
similarity index 100%
rename from OF DL/Services/IDBService.cs
rename to OF DL.Core/Services/IDBService.cs
diff --git a/OF DL/Services/IDownloadEventHandler.cs b/OF DL.Core/Services/IDownloadEventHandler.cs
similarity index 100%
rename from OF DL/Services/IDownloadEventHandler.cs
rename to OF DL.Core/Services/IDownloadEventHandler.cs
diff --git a/OF DL/Services/IDownloadOrchestrationService.cs b/OF DL.Core/Services/IDownloadOrchestrationService.cs
similarity index 100%
rename from OF DL/Services/IDownloadOrchestrationService.cs
rename to OF DL.Core/Services/IDownloadOrchestrationService.cs
diff --git a/OF DL/Services/IDownloadService.cs b/OF DL.Core/Services/IDownloadService.cs
similarity index 100%
rename from OF DL/Services/IDownloadService.cs
rename to OF DL.Core/Services/IDownloadService.cs
diff --git a/OF DL/Services/IFileNameService.cs b/OF DL.Core/Services/IFileNameService.cs
similarity index 100%
rename from OF DL/Services/IFileNameService.cs
rename to OF DL.Core/Services/IFileNameService.cs
diff --git a/OF DL/Services/ILoggingService.cs b/OF DL.Core/Services/ILoggingService.cs
similarity index 100%
rename from OF DL/Services/ILoggingService.cs
rename to OF DL.Core/Services/ILoggingService.cs
diff --git a/OF DL/Services/IProgressReporter.cs b/OF DL.Core/Services/IProgressReporter.cs
similarity index 100%
rename from OF DL/Services/IProgressReporter.cs
rename to OF DL.Core/Services/IProgressReporter.cs
diff --git a/OF DL/Services/IStartupService.cs b/OF DL.Core/Services/IStartupService.cs
similarity index 100%
rename from OF DL/Services/IStartupService.cs
rename to OF DL.Core/Services/IStartupService.cs
diff --git a/OF DL/Services/IStatusReporter.cs b/OF DL.Core/Services/IStatusReporter.cs
similarity index 100%
rename from OF DL/Services/IStatusReporter.cs
rename to OF DL.Core/Services/IStatusReporter.cs
diff --git a/OF DL/Services/LoggingService.cs b/OF DL.Core/Services/LoggingService.cs
similarity index 100%
rename from OF DL/Services/LoggingService.cs
rename to OF DL.Core/Services/LoggingService.cs
diff --git a/OF DL/Services/StartupService.cs b/OF DL.Core/Services/StartupService.cs
similarity index 100%
rename from OF DL/Services/StartupService.cs
rename to OF DL.Core/Services/StartupService.cs
diff --git a/OF DL/Utils/HttpUtil.cs b/OF DL.Core/Utils/HttpUtil.cs
similarity index 100%
rename from OF DL/Utils/HttpUtil.cs
rename to OF DL.Core/Utils/HttpUtil.cs
diff --git a/OF DL/Utils/ThrottledStream.cs b/OF DL.Core/Utils/ThrottledStream.cs
similarity index 100%
rename from OF DL/Utils/ThrottledStream.cs
rename to OF DL.Core/Utils/ThrottledStream.cs
diff --git a/OF DL/Utils/XmlUtils.cs b/OF DL.Core/Utils/XmlUtils.cs
similarity index 100%
rename from OF DL/Utils/XmlUtils.cs
rename to OF DL.Core/Utils/XmlUtils.cs
diff --git a/OF DL/Widevine/CDM.cs b/OF DL.Core/Widevine/CDM.cs
similarity index 100%
rename from OF DL/Widevine/CDM.cs
rename to OF DL.Core/Widevine/CDM.cs
diff --git a/OF DL/Widevine/CDMApi.cs b/OF DL.Core/Widevine/CDMApi.cs
similarity index 100%
rename from OF DL/Widevine/CDMApi.cs
rename to OF DL.Core/Widevine/CDMApi.cs
diff --git a/OF DL/Widevine/CDMDevice.cs b/OF DL.Core/Widevine/CDMDevice.cs
similarity index 100%
rename from OF DL/Widevine/CDMDevice.cs
rename to OF DL.Core/Widevine/CDMDevice.cs
diff --git a/OF DL/Widevine/Constants.cs b/OF DL.Core/Widevine/Constants.cs
similarity index 100%
rename from OF DL/Widevine/Constants.cs
rename to OF DL.Core/Widevine/Constants.cs
diff --git a/OF DL/Widevine/ContentKey.cs b/OF DL.Core/Widevine/ContentKey.cs
similarity index 100%
rename from OF DL/Widevine/ContentKey.cs
rename to OF DL.Core/Widevine/ContentKey.cs
diff --git a/OF DL/Widevine/DerivedKeys.cs b/OF DL.Core/Widevine/DerivedKeys.cs
similarity index 100%
rename from OF DL/Widevine/DerivedKeys.cs
rename to OF DL.Core/Widevine/DerivedKeys.cs
diff --git a/OF DL/Widevine/PSSHBox.cs b/OF DL.Core/Widevine/PSSHBox.cs
similarity index 100%
rename from OF DL/Widevine/PSSHBox.cs
rename to OF DL.Core/Widevine/PSSHBox.cs
diff --git a/OF DL/Widevine/Session.cs b/OF DL.Core/Widevine/Session.cs
similarity index 100%
rename from OF DL/Widevine/Session.cs
rename to OF DL.Core/Widevine/Session.cs
diff --git a/OF DL/Widevine/WvProto2.cs b/OF DL.Core/Widevine/WvProto2.cs
similarity index 100%
rename from OF DL/Widevine/WvProto2.cs
rename to OF DL.Core/Widevine/WvProto2.cs
diff --git a/OF DL.sln b/OF DL.sln
index 2434220..62e5364 100644
--- a/OF DL.sln
+++ b/OF DL.sln
@@ -5,6 +5,8 @@ VisualStudioVersion = 17.5.33516.290
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OF DL", "OF DL\OF DL.csproj", "{318B2CE3-D046-4276-A2CF-89E6DF32F1B3}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OF DL.Core", "OF DL.Core\OF DL.Core.csproj", "{7B8B6A26-6732-4B3A-AE62-1CE589DFF8F2}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
{318B2CE3-D046-4276-A2CF-89E6DF32F1B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{318B2CE3-D046-4276-A2CF-89E6DF32F1B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{318B2CE3-D046-4276-A2CF-89E6DF32F1B3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7B8B6A26-6732-4B3A-AE62-1CE589DFF8F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7B8B6A26-6732-4B3A-AE62-1CE589DFF8F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7B8B6A26-6732-4B3A-AE62-1CE589DFF8F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7B8B6A26-6732-4B3A-AE62-1CE589DFF8F2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/OF DL/OF DL.csproj b/OF DL/OF DL.csproj
index 8bc38a9..63aeb86 100644
--- a/OF DL/OF DL.csproj
+++ b/OF DL/OF DL.csproj
@@ -14,19 +14,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+