diff --git a/.php_cs b/.php_cs
index 8a52ffee..e72e8e70 100644
--- a/.php_cs
+++ b/.php_cs
@@ -47,6 +47,7 @@ return PhpCsFixer\Config::create()
         'psr4' => true,
         'random_api_migration' => true,
         'single_line_throw' => false,
+        'single_trait_insert_per_statement' => false,
         'standardize_not_equals' => true,
         'ternary_to_null_coalescing' => true,
         'yoda_style' => [
diff --git a/app/Console/Commands/Server/BulkPowerActionCommand.php b/app/Console/Commands/Server/BulkPowerActionCommand.php
index 5e728a03..38387990 100644
--- a/app/Console/Commands/Server/BulkPowerActionCommand.php
+++ b/app/Console/Commands/Server/BulkPowerActionCommand.php
@@ -5,14 +5,14 @@ namespace Pterodactyl\Console\Commands\Server;
 use Illuminate\Console\Command;
 use GuzzleHttp\Exception\RequestException;
 use Illuminate\Validation\ValidationException;
-use Pterodactyl\Repositories\Daemon\PowerRepository;
 use Illuminate\Validation\Factory as ValidatorFactory;
+use Pterodactyl\Repositories\Wings\DaemonPowerRepository;
 use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
 
 class BulkPowerActionCommand extends Command
 {
     /**
-     * @var \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface
+     * @var \Pterodactyl\Repositories\Wings\DaemonPowerRepository
      */
     private $powerRepository;
 
@@ -42,27 +42,26 @@ class BulkPowerActionCommand extends Command
     /**
      * BulkPowerActionCommand constructor.
      *
-     * @param \Pterodactyl\Repositories\Daemon\PowerRepository $powerRepository
+     * @param \Pterodactyl\Repositories\Wings\DaemonPowerRepository $powerRepository
      * @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $repository
      * @param \Illuminate\Validation\Factory $validator
      */
     public function __construct(
-        PowerRepository $powerRepository,
+        DaemonPowerRepository $powerRepository,
         ServerRepositoryInterface $repository,
         ValidatorFactory $validator
     ) {
         parent::__construct();
 
-        $this->powerRepository = $powerRepository;
         $this->repository = $repository;
         $this->validator = $validator;
+        $this->powerRepository = $powerRepository;
     }
 
     /**
      * Handle the bulk power request.
      *
      * @throws \Illuminate\Validation\ValidationException
-     * @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException
      */
     public function handle()
     {
@@ -105,7 +104,7 @@ class BulkPowerActionCommand extends Command
                 $this->powerRepository
                     ->setNode($server->node)
                     ->setServer($server)
-                    ->sendSignal($action);
+                    ->send($action);
             } catch (RequestException $exception) {
                 $this->output->error(trans('command/messages.server.power.action_failed', [
                     'name' => $server->name,
diff --git a/app/Console/Commands/Server/BulkReinstallActionCommand.php b/app/Console/Commands/Server/BulkReinstallActionCommand.php
index b15fbfaa..a56cefc7 100644
--- a/app/Console/Commands/Server/BulkReinstallActionCommand.php
+++ b/app/Console/Commands/Server/BulkReinstallActionCommand.php
@@ -12,8 +12,8 @@ namespace Pterodactyl\Console\Commands\Server;
 use Webmozart\Assert\Assert;
 use Illuminate\Console\Command;
 use GuzzleHttp\Exception\RequestException;
+use Pterodactyl\Repositories\Eloquent\ServerRepository;
 use Pterodactyl\Repositories\Wings\DaemonServerRepository;
-use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
 use Pterodactyl\Services\Servers\ServerConfigurationStructureService;
 
 class BulkReinstallActionCommand extends Command
@@ -21,23 +21,23 @@ class BulkReinstallActionCommand extends Command
     /**
      * @var \Pterodactyl\Services\Servers\ServerConfigurationStructureService
      */
-    protected $configurationStructureService;
+    private $configurationStructureService;
 
     /**
-     * @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
+     * @var \Pterodactyl\Repositories\Wings\DaemonServerRepository
      */
-    protected $daemonRepository;
+    private $daemonRepository;
+
+    /**
+     * @var \Pterodactyl\Repositories\Eloquent\ServerRepository
+     */
+    private $repository;
 
     /**
      * @var string
      */
     protected $description = 'Reinstall a single server, all servers on a node, or all servers on the panel.';
 
-    /**
-     * @var \Pterodactyl\Repositories\Wings\DaemonServerRepository
-     */
-    protected $repository;
-
     /**
      * @var string
      */
@@ -50,12 +50,12 @@ class BulkReinstallActionCommand extends Command
      *
      * @param \Pterodactyl\Repositories\Wings\DaemonServerRepository $daemonRepository
      * @param \Pterodactyl\Services\Servers\ServerConfigurationStructureService $configurationStructureService
-     * @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $repository
+     * @param \Pterodactyl\Repositories\Eloquent\ServerRepository $repository
      */
     public function __construct(
         DaemonServerRepository $daemonRepository,
         ServerConfigurationStructureService $configurationStructureService,
-        ServerRepositoryInterface $repository
+        ServerRepository $repository
     ) {
         parent::__construct();
 
@@ -101,7 +101,7 @@ class BulkReinstallActionCommand extends Command
     /**
      * Return the servers to be reinstalled.
      *
-     * @return \Illuminate\Database\Eloquent\Collection
+     * @return \Illuminate\Support\Collection
      */
     private function getServersToProcess()
     {
diff --git a/app/Contracts/Repository/Daemon/BaseRepositoryInterface.php b/app/Contracts/Repository/Daemon/BaseRepositoryInterface.php
deleted file mode 100644
index 791dcc81..00000000
--- a/app/Contracts/Repository/Daemon/BaseRepositoryInterface.php
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-
-namespace Pterodactyl\Contracts\Repository\Daemon;
-
-use GuzzleHttp\Client;
-use Pterodactyl\Models\Node;
-use Pterodactyl\Models\Server;
-
-/**
- * @deprecated
- */
-interface BaseRepositoryInterface
-{
-    /**
-     * Set the node model to be used for this daemon connection.
-     *
-     * @param \Pterodactyl\Models\Node $node
-     * @return $this
-     */
-    public function setNode(Node $node);
-
-    /**
-     * Return the node model being used.
-     *
-     * @return \Pterodactyl\Models\Node|null
-     */
-    public function getNode();
-
-    /**
-     * Set the Server model to use when requesting information from the Daemon.
-     *
-     * @param \Pterodactyl\Models\Server $server
-     * @return $this
-     */
-    public function setServer(Server $server);
-
-    /**
-     * Return the Server model.
-     *
-     * @return \Pterodactyl\Models\Server|null
-     */
-    public function getServer();
-
-    /**
-     * Set the token to be used in the X-Access-Token header for requests to the daemon.
-     *
-     * @param string $token
-     * @return $this
-     */
-    public function setToken(string $token);
-
-    /**
-     * Return the access token being used for requests.
-     *
-     * @return string|null
-     */
-    public function getToken();
-
-    /**
-     * Return an instance of the Guzzle HTTP Client to be used for requests.
-     *
-     * @param array $headers
-     * @return \GuzzleHttp\Client
-     *
-     * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
-     */
-    public function getHttpClient(array $headers = []): Client;
-}
diff --git a/app/Contracts/Repository/Daemon/CommandRepositoryInterface.php b/app/Contracts/Repository/Daemon/CommandRepositoryInterface.php
deleted file mode 100644
index 057fd4ba..00000000
--- a/app/Contracts/Repository/Daemon/CommandRepositoryInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Pterodactyl\Contracts\Repository\Daemon;
-
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * @deprecated
- */
-interface CommandRepositoryInterface extends BaseRepositoryInterface
-{
-    /**
-     * Send a command to a server.
-     *
-     * @param string $command
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function send(string $command): ResponseInterface;
-}
diff --git a/app/Contracts/Repository/Daemon/ConfigurationRepositoryInterface.php b/app/Contracts/Repository/Daemon/ConfigurationRepositoryInterface.php
deleted file mode 100644
index 0e3d8114..00000000
--- a/app/Contracts/Repository/Daemon/ConfigurationRepositoryInterface.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace Pterodactyl\Contracts\Repository\Daemon;
-
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * @deprecated
- */
-interface ConfigurationRepositoryInterface extends BaseRepositoryInterface
-{
-    /**
-     * Update the configuration details for the specified node using data from the database.
-     *
-     * @param array $overrides
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function update(array $overrides = []): ResponseInterface;
-}
diff --git a/app/Contracts/Repository/Daemon/FileRepositoryInterface.php b/app/Contracts/Repository/Daemon/FileRepositoryInterface.php
deleted file mode 100644
index 90d75e3d..00000000
--- a/app/Contracts/Repository/Daemon/FileRepositoryInterface.php
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-
-namespace Pterodactyl\Contracts\Repository\Daemon;
-
-use stdClass;
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * @deprecated
- */
-interface FileRepositoryInterface extends BaseRepositoryInterface
-{
-    /**
-     * Return stat information for a given file.
-     *
-     * @param string $path
-     * @return \stdClass
-     *
-     * @throws \GuzzleHttp\Exception\TransferException
-     */
-    public function getFileStat(string $path): stdClass;
-
-    /**
-     * Return the contents of a given file if it can be edited in the Panel.
-     *
-     * @param string $path
-     * @param int|null $notLargerThan
-     * @return string
-     */
-    public function getContent(string $path, int $notLargerThan = null): string;
-
-    /**
-     * Save new contents to a given file.
-     *
-     * @param string $path
-     * @param string $content
-     * @return \Psr\Http\Message\ResponseInterface
-     *
-     * @throws \GuzzleHttp\Exception\TransferException
-     */
-    public function putContent(string $path, string $content): ResponseInterface;
-
-    /**
-     * Return a directory listing for a given path.
-     *
-     * @param string $path
-     * @return array
-     *
-     * @throws \GuzzleHttp\Exception\TransferException
-     */
-    public function getDirectory(string $path): array;
-
-    /**
-     * Creates a new directory for the server in the given $path.
-     *
-     * @param string $name
-     * @param string $path
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function createDirectory(string $name, string $path): ResponseInterface;
-
-    /**
-     * Renames or moves a file on the remote machine.
-     *
-     * @param string $from
-     * @param string $to
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function renameFile(string $from, string $to): ResponseInterface;
-
-    /**
-     * Copy a given file and give it a unique name.
-     *
-     * @param string $location
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function copyFile(string $location): ResponseInterface;
-
-    /**
-     * Delete a file or folder for the server.
-     *
-     * @param string $location
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function deleteFile(string $location): ResponseInterface;
-}
diff --git a/app/Contracts/Repository/Daemon/PowerRepositoryInterface.php b/app/Contracts/Repository/Daemon/PowerRepositoryInterface.php
deleted file mode 100644
index 3d4eef04..00000000
--- a/app/Contracts/Repository/Daemon/PowerRepositoryInterface.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-
-namespace Pterodactyl\Contracts\Repository\Daemon;
-
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * @deprecated
- */
-interface PowerRepositoryInterface extends BaseRepositoryInterface
-{
-    const SIGNAL_START = 'start';
-    const SIGNAL_STOP = 'stop';
-    const SIGNAL_RESTART = 'restart';
-    const SIGNAL_KILL = 'kill';
-
-    /**
-     * Send a power signal to a server.
-     *
-     * @param string $signal
-     * @return \Psr\Http\Message\ResponseInterface
-     *
-     * @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException
-     */
-    public function sendSignal(string $signal): ResponseInterface;
-}
diff --git a/app/Contracts/Repository/Daemon/ServerRepositoryInterface.php b/app/Contracts/Repository/Daemon/ServerRepositoryInterface.php
deleted file mode 100644
index 8a6837bf..00000000
--- a/app/Contracts/Repository/Daemon/ServerRepositoryInterface.php
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-
-namespace Pterodactyl\Contracts\Repository\Daemon;
-
-use Psr\Http\Message\ResponseInterface;
-
-/**
- * @deprecated
- */
-interface ServerRepositoryInterface extends BaseRepositoryInterface
-{
-    /**
-     * Create a new server on the daemon for the panel.
-     *
-     * @param array $structure
-     * @param array $overrides
-     * @return \Psr\Http\Message\ResponseInterface
-     *
-     * @throws \GuzzleHttp\Exception\RequestException
-     */
-    public function create(array $structure, array $overrides = []): ResponseInterface;
-
-    /**
-     * Update server details on the daemon.
-     *
-     * @param array $data
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function update(array $data): ResponseInterface;
-
-    /**
-     * Mark a server to be reinstalled on the system.
-     *
-     * @param array|null $data
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function reinstall(array $data = null): ResponseInterface;
-
-    /**
-     * Mark a server as needing a container rebuild the next time the server is booted.
-     *
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function rebuild(): ResponseInterface;
-
-    /**
-     * Suspend a server on the daemon.
-     *
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function suspend(): ResponseInterface;
-
-    /**
-     * Un-suspend a server on the daemon.
-     *
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function unsuspend(): ResponseInterface;
-
-    /**
-     * Delete a server on the daemon.
-     *
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function delete(): ResponseInterface;
-
-    /**
-     * Return details on a specific server.
-     *
-     * @return \Psr\Http\Message\ResponseInterface
-     */
-    public function details(): ResponseInterface;
-
-    /**
-     * Revoke an access key on the daemon before the time is expired.
-     *
-     * @param string|array $key
-     * @return \Psr\Http\Message\ResponseInterface
-     *
-     * @throws \GuzzleHttp\Exception\RequestException
-     */
-    public function revokeAccessKey($key): ResponseInterface;
-}
diff --git a/app/Http/Controllers/Api/Remote/ValidateKeyController.php b/app/Http/Controllers/Api/Remote/ValidateKeyController.php
deleted file mode 100644
index 9ed52f7f..00000000
--- a/app/Http/Controllers/Api/Remote/ValidateKeyController.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/*
- * Pterodactyl - Panel
- * Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-namespace Pterodactyl\Http\Controllers\Api\Remote;
-
-use Spatie\Fractal\Fractal;
-use Illuminate\Http\Response;
-use Pterodactyl\Http\Controllers\Controller;
-use Illuminate\Contracts\Foundation\Application;
-use Illuminate\Foundation\Testing\HttpException;
-use League\Fractal\Serializer\JsonApiSerializer;
-use Pterodactyl\Transformers\Daemon\ApiKeyTransformer;
-use Pterodactyl\Exceptions\Repository\RecordNotFoundException;
-use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
-use Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface;
-
-class ValidateKeyController extends Controller
-{
-    /**
-     * @var \Illuminate\Contracts\Foundation\Application
-     */
-    protected $app;
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface
-     */
-    protected $daemonKeyRepository;
-
-    /**
-     * @var \Spatie\Fractal\Fractal
-     */
-    protected $fractal;
-
-    /**
-     * ValidateKeyController constructor.
-     *
-     * @param \Illuminate\Contracts\Foundation\Application $app
-     * @param \Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface $daemonKeyRepository
-     * @param \Spatie\Fractal\Fractal $fractal
-     */
-    public function __construct(
-        Application $app,
-        DaemonKeyRepositoryInterface $daemonKeyRepository,
-        Fractal $fractal
-    ) {
-        $this->app = $app;
-        $this->daemonKeyRepository = $daemonKeyRepository;
-        $this->fractal = $fractal;
-    }
-
-    /**
-     * Return the server(s) and permissions associated with an API key.
-     *
-     * @param string $token
-     * @return array
-     *
-     * @throws \Illuminate\Foundation\Testing\HttpException
-     */
-    public function index($token)
-    {
-        if (! starts_with($token, DaemonKeyRepositoryInterface::INTERNAL_KEY_IDENTIFIER)) {
-            throw new HttpException(Response::HTTP_NOT_IMPLEMENTED);
-        }
-
-        try {
-            $key = $this->daemonKeyRepository->getKeyWithServer($token);
-        } catch (RecordNotFoundException $exception) {
-            throw new NotFoundHttpException;
-        }
-
-        if ($key->getRelation('server')->suspended || $key->getRelation('server')->installed !== 1) {
-            throw new NotFoundHttpException;
-        }
-
-        return $this->fractal->item($key, $this->app->make(ApiKeyTransformer::class), 'server')
-            ->serializeWith(JsonApiSerializer::class)
-            ->toArray();
-    }
-}
diff --git a/app/Jobs/Schedule/RunTaskJob.php b/app/Jobs/Schedule/RunTaskJob.php
index 0b09102a..bab5b9f6 100644
--- a/app/Jobs/Schedule/RunTaskJob.php
+++ b/app/Jobs/Schedule/RunTaskJob.php
@@ -3,33 +3,25 @@
 namespace Pterodactyl\Jobs\Schedule;
 
 use Exception;
-use Cake\Chronos\Chronos;
+use Carbon\Carbon;
 use Pterodactyl\Jobs\Job;
 use InvalidArgumentException;
+use Illuminate\Container\Container;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Queue\InteractsWithQueue;
 use Illuminate\Contracts\Queue\ShouldQueue;
 use Illuminate\Foundation\Bus\DispatchesJobs;
+use Pterodactyl\Repositories\Eloquent\TaskRepository;
+use Pterodactyl\Repositories\Wings\DaemonPowerRepository;
+use Pterodactyl\Repositories\Wings\DaemonCommandRepository;
 use Pterodactyl\Contracts\Repository\TaskRepositoryInterface;
 use Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService;
 use Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface;
-use Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface;
-use Pterodactyl\Contracts\Repository\Daemon\CommandRepositoryInterface;
 
 class RunTaskJob extends Job implements ShouldQueue
 {
     use DispatchesJobs, InteractsWithQueue, SerializesModels;
 
-    /**
-     * @var \Pterodactyl\Contracts\Repository\Daemon\CommandRepositoryInterface
-     */
-    protected $commandRepository;
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface
-     */
-    protected $powerRepository;
-
     /**
      * @var int
      */
@@ -41,7 +33,7 @@ class RunTaskJob extends Job implements ShouldQueue
     public $task;
 
     /**
-     * @var \Pterodactyl\Contracts\Repository\TaskRepositoryInterface
+     * @var \Pterodactyl\Repositories\Eloquent\TaskRepository
      */
     protected $taskRepository;
 
@@ -61,28 +53,24 @@ class RunTaskJob extends Job implements ShouldQueue
     /**
      * Run the job and send actions to the daemon running the server.
      *
-     * @param \Pterodactyl\Contracts\Repository\Daemon\CommandRepositoryInterface $commandRepository
+     * @param \Pterodactyl\Repositories\Wings\DaemonCommandRepository $commandRepository
      * @param \Pterodactyl\Services\DaemonKeys\DaemonKeyProviderService $keyProviderService
-     * @param \Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface $powerRepository
-     * @param \Pterodactyl\Contracts\Repository\TaskRepositoryInterface $taskRepository
+     * @param \Pterodactyl\Repositories\Wings\DaemonPowerRepository $powerRepository
+     * @param \Pterodactyl\Repositories\Eloquent\TaskRepository $taskRepository
      *
      * @throws \Pterodactyl\Exceptions\Model\DataValidationException
-     * @throws \Pterodactyl\Exceptions\Repository\Daemon\InvalidPowerSignalException
      * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
      */
     public function handle(
-        CommandRepositoryInterface $commandRepository,
+        DaemonCommandRepository $commandRepository,
         DaemonKeyProviderService $keyProviderService,
-        PowerRepositoryInterface $powerRepository,
-        TaskRepositoryInterface $taskRepository
+        DaemonPowerRepository $powerRepository,
+        TaskRepository $taskRepository
     ) {
-        $this->commandRepository = $commandRepository;
-        $this->powerRepository = $powerRepository;
         $this->taskRepository = $taskRepository;
 
         $task = $this->taskRepository->getTaskForJobProcess($this->task);
         $server = $task->getRelation('server');
-        $user = $server->getRelation('user');
 
         // Do not process a task that is not set to active.
         if (! $task->getRelation('schedule')->is_active) {
@@ -95,14 +83,10 @@ class RunTaskJob extends Job implements ShouldQueue
         // Perform the provided task against the daemon.
         switch ($task->action) {
             case 'power':
-                $this->powerRepository->setServer($server)
-                    ->setToken($keyProviderService->handle($server, $user))
-                    ->sendSignal($task->payload);
+                $powerRepository->setServer($server)->send($task->payload);
                 break;
             case 'command':
-                $this->commandRepository->setServer($server)
-                    ->setToken($keyProviderService->handle($server, $user))
-                    ->send($task->payload);
+                $commandRepository->setServer($server)->send($task->payload);
                 break;
             default:
                 throw new InvalidArgumentException('Cannot run a task that points to a non-existent action.');
@@ -115,10 +99,7 @@ class RunTaskJob extends Job implements ShouldQueue
     /**
      * Handle a failure while sending the action to the daemon or otherwise processing the job.
      *
-     * @param null|\Exception $exception
-     *
-     * @throws \Pterodactyl\Exceptions\Model\DataValidationException
-     * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
+     * @param \Exception|null $exception
      */
     public function failed(Exception $exception = null)
     {
@@ -149,28 +130,25 @@ class RunTaskJob extends Job implements ShouldQueue
 
     /**
      * Marks the parent schedule as being complete.
-     *
-     * @throws \Pterodactyl\Exceptions\Model\DataValidationException
-     * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
      */
     private function markScheduleComplete()
     {
-        $repository = app()->make(ScheduleRepositoryInterface::class);
-        $repository->withoutFreshModel()->update($this->schedule, [
-            'is_processing' => false,
-            'last_run_at' => Chronos::now()->toDateTimeString(),
-        ]);
+        Container::getInstance()
+            ->make(ScheduleRepositoryInterface::class)
+            ->withoutFreshModel()
+            ->update($this->schedule, [
+                'is_processing' => false,
+                'last_run_at' => Carbon::now()->toDateTimeString(),
+            ]);
     }
 
     /**
      * Mark a specific task as no longer being queued.
-     *
-     * @throws \Pterodactyl\Exceptions\Model\DataValidationException
-     * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
      */
     private function markTaskNotQueued()
     {
-        $repository = app()->make(TaskRepositoryInterface::class);
-        $repository->update($this->task, ['is_queued' => false]);
+        Container::getInstance()
+            ->make(TaskRepositoryInterface::class)
+            ->update($this->task, ['is_queued' => false]);
     }
 }
diff --git a/app/Providers/RepositoryServiceProvider.php b/app/Providers/RepositoryServiceProvider.php
index 6ee5a8d5..ef8e6cb0 100644
--- a/app/Providers/RepositoryServiceProvider.php
+++ b/app/Providers/RepositoryServiceProvider.php
@@ -13,15 +13,12 @@ use Pterodactyl\Repositories\Eloquent\ApiKeyRepository;
 use Pterodactyl\Repositories\Eloquent\ServerRepository;
 use Pterodactyl\Repositories\Eloquent\SessionRepository;
 use Pterodactyl\Repositories\Eloquent\SubuserRepository;
-use Pterodactyl\Repositories\Wings\DaemonFileRepository;
 use Pterodactyl\Repositories\Eloquent\DatabaseRepository;
 use Pterodactyl\Repositories\Eloquent\LocationRepository;
 use Pterodactyl\Repositories\Eloquent\ScheduleRepository;
 use Pterodactyl\Repositories\Eloquent\SettingsRepository;
-use Pterodactyl\Repositories\Wings\DaemonPowerRepository;
 use Pterodactyl\Repositories\Eloquent\DaemonKeyRepository;
 use Pterodactyl\Repositories\Eloquent\AllocationRepository;
-use Pterodactyl\Repositories\Wings\DaemonCommandRepository;
 use Pterodactyl\Contracts\Repository\EggRepositoryInterface;
 use Pterodactyl\Repositories\Eloquent\EggVariableRepository;
 use Pterodactyl\Contracts\Repository\NestRepositoryInterface;
@@ -39,18 +36,11 @@ use Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface;
 use Pterodactyl\Contracts\Repository\LocationRepositoryInterface;
 use Pterodactyl\Contracts\Repository\ScheduleRepositoryInterface;
 use Pterodactyl\Contracts\Repository\SettingsRepositoryInterface;
-use Pterodactyl\Repositories\Wings\DaemonConfigurationRepository;
 use Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface;
 use Pterodactyl\Contracts\Repository\AllocationRepositoryInterface;
-use Pterodactyl\Contracts\Repository\Daemon\FileRepositoryInterface;
 use Pterodactyl\Contracts\Repository\EggVariableRepositoryInterface;
-use Pterodactyl\Contracts\Repository\Daemon\PowerRepositoryInterface;
 use Pterodactyl\Contracts\Repository\DatabaseHostRepositoryInterface;
-use Pterodactyl\Contracts\Repository\Daemon\CommandRepositoryInterface;
 use Pterodactyl\Contracts\Repository\ServerVariableRepositoryInterface;
-use Pterodactyl\Contracts\Repository\Daemon\ConfigurationRepositoryInterface;
-use Pterodactyl\Repositories\Wings\DaemonServerRepository as DaemonServerRepository;
-use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepositoryInterface;
 
 class RepositoryServiceProvider extends ServiceProvider
 {
@@ -79,12 +69,5 @@ class RepositoryServiceProvider extends ServiceProvider
         $this->app->bind(SubuserRepositoryInterface::class, SubuserRepository::class);
         $this->app->bind(TaskRepositoryInterface::class, TaskRepository::class);
         $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
-
-        // Daemon Repositories
-        $this->app->bind(ConfigurationRepositoryInterface::class, DaemonConfigurationRepository::class);
-        $this->app->bind(CommandRepositoryInterface::class, DaemonCommandRepository::class);
-        $this->app->bind(DaemonServerRepositoryInterface::class, DaemonServerRepository::class);
-        $this->app->bind(FileRepositoryInterface::class, DaemonFileRepository::class);
-        $this->app->bind(PowerRepositoryInterface::class, DaemonPowerRepository::class);
     }
 }
diff --git a/app/Services/Allocations/SetDefaultAllocationService.php b/app/Services/Allocations/SetDefaultAllocationService.php
deleted file mode 100644
index b05b1c48..00000000
--- a/app/Services/Allocations/SetDefaultAllocationService.php
+++ /dev/null
@@ -1,110 +0,0 @@
-<?php
-
-namespace Pterodactyl\Services\Allocations;
-
-use Pterodactyl\Models\Server;
-use Pterodactyl\Models\Allocation;
-use GuzzleHttp\Exception\RequestException;
-use Illuminate\Database\ConnectionInterface;
-use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;
-use Pterodactyl\Contracts\Repository\AllocationRepositoryInterface;
-use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;
-use Pterodactyl\Exceptions\Service\Allocation\AllocationDoesNotBelongToServerException;
-use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonRepositoryInterface;
-
-class SetDefaultAllocationService
-{
-    /**
-     * @var \Illuminate\Database\ConnectionInterface
-     */
-    private $connection;
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
-     */
-    private $daemonRepository;
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\AllocationRepositoryInterface
-     */
-    private $repository;
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\ServerRepositoryInterface
-     */
-    private $serverRepository;
-
-    /**
-     * SetDefaultAllocationService constructor.
-     *
-     * @param \Pterodactyl\Contracts\Repository\AllocationRepositoryInterface $repository
-     * @param \Illuminate\Database\ConnectionInterface $connection
-     * @param \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface $daemonRepository
-     * @param \Pterodactyl\Contracts\Repository\ServerRepositoryInterface $serverRepository
-     */
-    public function __construct(
-        AllocationRepositoryInterface $repository,
-        ConnectionInterface $connection,
-        DaemonRepositoryInterface $daemonRepository,
-        ServerRepositoryInterface $serverRepository
-    ) {
-        $this->connection = $connection;
-        $this->daemonRepository = $daemonRepository;
-        $this->repository = $repository;
-        $this->serverRepository = $serverRepository;
-    }
-
-    /**
-     * Update the default allocation for a server only if that allocation is currently
-     * assigned to the specified server.
-     *
-     * @param int|\Pterodactyl\Models\Server $server
-     * @param int $allocation
-     * @return \Pterodactyl\Models\Allocation
-     *
-     * @throws \Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException
-     * @throws \Pterodactyl\Exceptions\Model\DataValidationException
-     * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException
-     * @throws \Pterodactyl\Exceptions\Service\Allocation\AllocationDoesNotBelongToServerException
-     */
-    public function handle($server, int $allocation): Allocation
-    {
-        if (! $server instanceof Server) {
-            $server = $this->serverRepository->find($server);
-        }
-
-        $allocations = $this->repository->findWhere([['server_id', '=', $server->id]]);
-        $model = $allocations->filter(function ($model) use ($allocation) {
-            return $model->id === $allocation;
-        })->first();
-
-        if (! $model instanceof Allocation) {
-            throw new AllocationDoesNotBelongToServerException;
-        }
-
-        $this->connection->beginTransaction();
-        $this->serverRepository->withoutFreshModel()->update($server->id, ['allocation_id' => $model->id]);
-
-        // Update on the daemon.
-        try {
-            $this->daemonRepository->setServer($server)->update([
-                'build' => [
-                    'default' => [
-                        'ip' => $model->ip,
-                        'port' => $model->port,
-                    ],
-                    'ports|overwrite' => $allocations->groupBy('ip')->map(function ($item) {
-                        return $item->pluck('port');
-                    })->toArray(),
-                ],
-            ]);
-
-            $this->connection->commit();
-        } catch (RequestException $exception) {
-            $this->connection->rollBack();
-            throw new DaemonConnectionException($exception);
-        }
-
-        return $model;
-    }
-}
diff --git a/app/Services/DaemonKeys/RevokeMultipleDaemonKeysService.php b/app/Services/DaemonKeys/RevokeMultipleDaemonKeysService.php
deleted file mode 100644
index 84237f94..00000000
--- a/app/Services/DaemonKeys/RevokeMultipleDaemonKeysService.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-namespace Pterodactyl\Services\DaemonKeys;
-
-use Pterodactyl\Models\User;
-use GuzzleHttp\Exception\RequestException;
-use Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface;
-use Pterodactyl\Exceptions\Http\Connection\DaemonConnectionException;
-use Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface as DaemonServerRepository;
-
-class RevokeMultipleDaemonKeysService
-{
-    /**
-     * @var array
-     */
-    protected $exceptions = [];
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface
-     */
-    private $daemonRepository;
-
-    /**
-     * @var \Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface
-     */
-    private $repository;
-
-    /**
-     * RevokeMultipleDaemonKeysService constructor.
-     *
-     * @param \Pterodactyl\Contracts\Repository\DaemonKeyRepositoryInterface $repository
-     * @param \Pterodactyl\Contracts\Repository\Daemon\ServerRepositoryInterface $daemonRepository
-     */
-    public function __construct(
-        DaemonKeyRepositoryInterface $repository,
-        DaemonServerRepository $daemonRepository
-    ) {
-        $this->daemonRepository = $daemonRepository;
-        $this->repository = $repository;
-    }
-
-    /**
-     * Grab all of the keys that exist for a single user and delete them from all
-     * daemon's that they are assigned to. If connection fails, this function will
-     * return an error.
-     *
-     * @param \Pterodactyl\Models\User $user
-     * @param bool $ignoreConnectionErrors
-     */
-    public function handle(User $user, bool $ignoreConnectionErrors = false)
-    {
-        $keys = $this->repository->getKeysForRevocation($user);
-
-        $keys->groupBy('node.id')->each(function ($group, $nodeId) use ($ignoreConnectionErrors) {
-            try {
-                $this->daemonRepository->setNode(collect($group)->first()->getRelation('node'))->revokeAccessKey(collect($group)->pluck('secret')->toArray());
-            } catch (RequestException $exception) {
-                if (! $ignoreConnectionErrors) {
-                    throw new DaemonConnectionException($exception);
-                }
-
-                $this->setConnectionException($nodeId, $exception);
-            }
-
-            $this->repository->deleteKeys(collect($group)->pluck('id')->toArray());
-        });
-    }
-
-    /**
-     * Returns an array of exceptions that were returned by the handle function.
-     *
-     * @return RequestException[]
-     */
-    public function getExceptions()
-    {
-        return $this->exceptions;
-    }
-
-    /**
-     * Add an exception for a node to the array.
-     *
-     * @param int $node
-     * @param \GuzzleHttp\Exception\RequestException $exception
-     */
-    protected function setConnectionException(int $node, RequestException $exception)
-    {
-        $this->exceptions[$node] = $exception;
-    }
-}