diff --git a/app/Http/Controllers/Account/ReconcileController.php b/app/Http/Controllers/Account/ReconcileController.php
index 8cbdbc97d2..fc0f55d0d1 100644
--- a/app/Http/Controllers/Account/ReconcileController.php
+++ b/app/Http/Controllers/Account/ReconcileController.php
@@ -18,6 +18,7 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection CallableParameterUseCaseInTypeContextInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers\Account;
@@ -44,8 +45,6 @@ use Preferences;
 
 /**
  * Class ReconcileController.
- *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class ReconcileController extends Controller
 {
@@ -113,6 +112,7 @@ class ReconcileController extends Controller
         )->with('data', $preFilled);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Request $request
      * @param Account $account
@@ -246,9 +246,9 @@ class ReconcileController extends Controller
         return view('accounts.reconcile.show', compact('journal', 'subTitle', 'transaction', 'account'));
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param ReconciliationStoreRequest $request
-     * @param JournalRepositoryInterface $repository
      * @param Account                    $account
      * @param Carbon                     $start
      * @param Carbon                     $end
@@ -256,14 +256,14 @@ class ReconcileController extends Controller
      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
      * @throws FireflyException
      */
-    public function submit(ReconciliationStoreRequest $request, JournalRepositoryInterface $repository, Account $account, Carbon $start, Carbon $end)
+    public function submit(ReconciliationStoreRequest $request, Account $account, Carbon $start, Carbon $end)
     {
         Log::debug('In ReconcileController::submit()');
         $data = $request->getAll();
 
         /** @var Transaction $transaction */
         foreach ($data['transactions'] as $transactionId) {
-            $repository->reconcileById((int)$transactionId);
+            $this->repository->reconcileById((int)$transactionId);
         }
         Log::debug('Reconciled all transactions.');
 
@@ -322,11 +322,11 @@ class ReconcileController extends Controller
                 'notes'           => implode(', ', $data['transactions']),
             ];
 
-            $repository->store($journalData);
+            $this->repository->store($journalData);
         }
         Log::debug('End of routine.');
 
-        Preferences::mark();
+        app('preferences')->mark();
 
         session()->flash('success', trans('firefly.reconciliation_stored'));
 
diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php
index 225e52b89a..bbf7a1429b 100644
--- a/app/Http/Controllers/AccountController.php
+++ b/app/Http/Controllers/AccountController.php
@@ -18,6 +18,7 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection CallableParameterUseCaseInTypeContextInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers;
@@ -45,7 +46,6 @@ use View;
 /**
  * Class AccountController.
  *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class AccountController extends Controller
 {
@@ -76,13 +76,14 @@ class AccountController extends Controller
     }
 
     /**
-     * @param Request $request
-     * @param string  $what
+     * @param Request     $request
+     * @param string|null $what
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function create(Request $request, string $what = 'asset')
+    public function create(Request $request, string $what = null)
     {
+        $what            = $what ?? 'asset';
         $defaultCurrency = app('amount')->getDefaultCurrency();
         $subTitleIcon    = config('firefly.subIconsByIdentifier.' . $what);
         $subTitle        = trans('firefly.make_new_' . $what . '_account');
@@ -106,7 +107,7 @@ class AccountController extends Controller
     /**
      * @param Account $account
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Account $account)
     {
@@ -137,25 +138,17 @@ class AccountController extends Controller
         $this->repository->destroy($account, $moveTo);
 
         $request->session()->flash('success', (string)trans('firefly.' . $typeName . '_deleted', ['name' => $name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('accounts.delete.uri'));
     }
 
     /**
-     * Edit an account.
-     *
      * @param Request                    $request
      * @param Account                    $account
-     *
      * @param AccountRepositoryInterface $repository
      *
-     * @return View
-     *
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) // long and complex but not that excessively so.
-     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
-     *
-
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Request $request, Account $account, AccountRepositoryInterface $repository)
     {
@@ -214,7 +207,7 @@ class AccountController extends Controller
      * @param Request $request
      * @param string  $what
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(Request $request, string $what)
     {
@@ -255,6 +248,8 @@ class AccountController extends Controller
         return view('accounts.index', compact('what', 'subTitleIcon', 'subTitle', 'page', 'accounts'));
     }
 
+
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * Show an account.
      *
@@ -312,6 +307,7 @@ class AccountController extends Controller
         );
     }
 
+
     /**
      * Show an account.
      *
@@ -364,7 +360,7 @@ class AccountController extends Controller
         $data    = $request->getAccountData();
         $account = $this->repository->store($data);
         $request->session()->flash('success', (string)trans('firefly.stored_new_account', ['name' => $account->name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         // update preferences if necessary:
         $frontPage = Preferences::get('frontPageAccounts', [])->data;
@@ -374,16 +370,16 @@ class AccountController extends Controller
             Preferences::set('frontPageAccounts', $frontPage);
             // @codeCoverageIgnoreEnd
         }
-
+        // redirect to previous URL.
+        $redirect = redirect($this->getPreviousUri('accounts.create.uri'));
         if (1 === (int)$request->get('create_another')) {
             // set value so create routine will not overwrite URL:
             $request->session()->put('accounts.create.fromStore', true);
 
-            return redirect(route('accounts.create', [$request->input('what')]))->withInput();
+            $redirect = redirect(route('accounts.create', [$request->input('what')]))->withInput();
         }
 
-        // redirect to previous URL.
-        return redirect($this->getPreviousUri('accounts.create.uri'));
+        return $redirect;
     }
 
     /**
@@ -398,17 +394,17 @@ class AccountController extends Controller
         $this->repository->update($account, $data);
 
         $request->session()->flash('success', (string)trans('firefly.updated_account', ['name' => $account->name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
+        $redirect = redirect($this->getPreviousUri('accounts.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // set value so edit routine will not overwrite URL:
             $request->session()->put('accounts.edit.fromUpdate', true);
 
-            return redirect(route('accounts.edit', [$account->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('accounts.edit', [$account->id]))->withInput(['return_to_edit' => 1]);
         }
 
-        // redirect to previous URL.
-        return redirect($this->getPreviousUri('accounts.edit.uri'));
+        return $redirect;
     }
 
     /**
@@ -419,13 +415,15 @@ class AccountController extends Controller
      */
     protected function isInArray(array $array, int $entryId)
     {
+        $result = '0';
         if (isset($array[$entryId])) {
-            return $array[$entryId];
+            $result = $array[$entryId];
         }
 
-        return '0';
+        return $result;
     }
 
+
     /**
      * This method returns "period entries", so nov-2015, dec-2015, etc etc (this depends on the users session range)
      * and for each period, the amount of money spent and earned. This is a complex operation which is cached for
@@ -437,7 +435,6 @@ class AccountController extends Controller
      *
      * @return Collection
      *
-     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      */
     private function getPeriodOverview(Account $account, ?Carbon $date): Collection
     {
diff --git a/app/Http/Controllers/Admin/ConfigurationController.php b/app/Http/Controllers/Admin/ConfigurationController.php
index 2e0bd3aa87..c7c9375e74 100644
--- a/app/Http/Controllers/Admin/ConfigurationController.php
+++ b/app/Http/Controllers/Admin/ConfigurationController.php
@@ -28,9 +28,7 @@ use FireflyIII\Http\Middleware\IsDemoUser;
 use FireflyIII\Http\Middleware\IsSandStormUser;
 use FireflyIII\Http\Requests\ConfigurationRequest;
 use FireflyIII\Support\Facades\FireflyConfig;
-use Preferences;
 use Redirect;
-use View;
 
 /**
  * Class ConfigurationController.
@@ -57,7 +55,7 @@ class ConfigurationController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index()
     {
@@ -92,7 +90,7 @@ class ConfigurationController extends Controller
 
         // flash message
         session()->flash('success', (string)trans('firefly.configuration_updated'));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return Redirect::route('admin.configuration.index');
     }
diff --git a/app/Http/Controllers/Admin/LinkController.php b/app/Http/Controllers/Admin/LinkController.php
index 5884596fa0..1515260fd4 100644
--- a/app/Http/Controllers/Admin/LinkController.php
+++ b/app/Http/Controllers/Admin/LinkController.php
@@ -28,7 +28,6 @@ use FireflyIII\Http\Requests\LinkTypeFormRequest;
 use FireflyIII\Models\LinkType;
 use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
 use Illuminate\Http\Request;
-use Preferences;
 use View;
 
 /**
@@ -116,7 +115,7 @@ class LinkController extends Controller
         $repository->destroy($linkType, $moveTo);
 
         $request->session()->flash('success', (string)trans('firefly.deleted_link_type', ['name' => $name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('link_types.delete.uri'));
     }
@@ -194,16 +193,16 @@ class LinkController extends Controller
         ];
         $linkType = $repository->store($data);
         $request->session()->flash('success', (string)trans('firefly.stored_new_link_type', ['name' => $linkType->name]));
-
+        $redirect = redirect($this->getPreviousUri('link_types.create.uri'));
         if (1 === (int)$request->get('create_another')) {
             // set value so create routine will not overwrite URL:
             $request->session()->put('link_types.create.fromStore', true);
 
-            return redirect(route('admin.links.create'))->withInput();
+            $redirect = redirect(route('admin.links.create'))->withInput();
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('link_types.create.uri'));
+        return $redirect;
     }
 
     /**
@@ -229,16 +228,16 @@ class LinkController extends Controller
         $repository->update($linkType, $data);
 
         $request->session()->flash('success', (string)trans('firefly.updated_link_type', ['name' => $linkType->name]));
-        Preferences::mark();
-
+        app('preferences')->mark();
+        $redirect = redirect($this->getPreviousUri('link_types.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // set value so edit routine will not overwrite URL:
             $request->session()->put('link_types.edit.fromUpdate', true);
 
-            return redirect(route('admin.links.edit', [$linkType->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('admin.links.edit', [$linkType->id]))->withInput(['return_to_edit' => 1]);
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('link_types.edit.uri'));
+        return $redirect;
     }
 }
diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php
index 1399312fd0..4510b3d8fb 100644
--- a/app/Http/Controllers/Admin/UserController.php
+++ b/app/Http/Controllers/Admin/UserController.php
@@ -30,7 +30,6 @@ use FireflyIII\Repositories\User\UserRepositoryInterface;
 use FireflyIII\User;
 use Log;
 use Preferences;
-use View;
 
 /**
  * Class UserController.
@@ -85,7 +84,7 @@ class UserController extends Controller
     /**
      * @param User $user
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(User $user)
     {
@@ -110,7 +109,7 @@ class UserController extends Controller
     /**
      * @param UserRepositoryInterface $repository
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(UserRepositoryInterface $repository)
     {
@@ -182,17 +181,17 @@ class UserController extends Controller
         $repository->updateEmail($user, $data['email']);
 
         session()->flash('success', (string)trans('firefly.updated_user', ['email' => $user->email]));
-        Preferences::mark();
-
+        app('preferences')->mark();
+        $redirect = redirect($this->getPreviousUri('users.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             session()->put('users.edit.fromUpdate', true);
 
-            return redirect(route('admin.users.edit', [$user->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('admin.users.edit', [$user->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('users.edit.uri'));
+        return $redirect;
     }
 }
diff --git a/app/Http/Controllers/AttachmentController.php b/app/Http/Controllers/AttachmentController.php
index d698f4d732..0e9fc5f01c 100644
--- a/app/Http/Controllers/AttachmentController.php
+++ b/app/Http/Controllers/AttachmentController.php
@@ -26,15 +26,13 @@ use FireflyIII\Exceptions\FireflyException;
 use FireflyIII\Http\Requests\AttachmentFormRequest;
 use FireflyIII\Models\Attachment;
 use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
+use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response as LaravelResponse;
-use Preferences;
-use View;
 
 /**
  * Class AttachmentController.
  *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects) // it's 13.
  */
 class AttachmentController extends Controller
 {
@@ -63,7 +61,7 @@ class AttachmentController extends Controller
     /**
      * @param Attachment $attachment
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Attachment $attachment)
     {
@@ -88,7 +86,7 @@ class AttachmentController extends Controller
         $this->repository->destroy($attachment);
 
         $request->session()->flash('success', (string)trans('firefly.attachment_deleted', ['name' => $name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('attachments.delete.uri'));
     }
@@ -128,7 +126,7 @@ class AttachmentController extends Controller
      * @param Request    $request
      * @param Attachment $attachment
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Request $request, Attachment $attachment)
     {
@@ -169,35 +167,36 @@ class AttachmentController extends Controller
      * @param AttachmentFormRequest $request
      * @param Attachment            $attachment
      *
-     * @return \Illuminate\Http\RedirectResponse
+     * @return RedirectResponse
      */
-    public function update(AttachmentFormRequest $request, Attachment $attachment)
+    public function update(AttachmentFormRequest $request, Attachment $attachment): RedirectResponse
     {
         $data = $request->getAttachmentData();
         $this->repository->update($attachment, $data);
 
         $request->session()->flash('success', (string)trans('firefly.attachment_updated', ['name' => $attachment->filename]));
-        Preferences::mark();
+        app('preferences')->mark();
 
+        $redirect = redirect($this->getPreviousUri('attachments.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             $request->session()->put('attachments.edit.fromUpdate', true);
 
-            return redirect(route('attachments.edit', [$attachment->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('attachments.edit', [$attachment->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('attachments.edit.uri'));
+        return $redirect;
     }
 
     /**
      * @param Attachment $attachment
      *
-     * @return \Illuminate\Http\Response
+     * @return LaravelResponse
      * @throws FireflyException
      */
-    public function view(Attachment $attachment)
+    public function view(Attachment $attachment): LaravelResponse
     {
         if ($this->repository->exists($attachment)) {
             $content = $this->repository->getContent($attachment);
diff --git a/app/Http/Controllers/Auth/TwoFactorController.php b/app/Http/Controllers/Auth/TwoFactorController.php
index 1ad9b126bd..a666e5a507 100644
--- a/app/Http/Controllers/Auth/TwoFactorController.php
+++ b/app/Http/Controllers/Auth/TwoFactorController.php
@@ -42,7 +42,6 @@ class TwoFactorController extends Controller
      *
      * @throws FireflyException
      *
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     public function index(Request $request)
     {
@@ -90,7 +89,6 @@ class TwoFactorController extends Controller
      * @param CookieJar        $cookieJar
      *
      * @return mixed
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter) // it's unused but the class does some validation.
      */
     public function postIndex(TokenFormRequest $request, CookieJar $cookieJar)
     {
diff --git a/app/Http/Controllers/BillController.php b/app/Http/Controllers/BillController.php
index 3d33c9a5f9..142979daa9 100644
--- a/app/Http/Controllers/BillController.php
+++ b/app/Http/Controllers/BillController.php
@@ -80,7 +80,7 @@ class BillController extends Controller
     /**
      * @param Request $request
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function create(Request $request)
     {
@@ -105,7 +105,7 @@ class BillController extends Controller
     /**
      * @param Bill $bill
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Bill $bill)
     {
@@ -128,7 +128,7 @@ class BillController extends Controller
         $this->billRepository->destroy($bill);
 
         $request->session()->flash('success', (string)trans('firefly.deleted_bill', ['name' => $name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('bills.delete.uri'));
     }
@@ -137,7 +137,7 @@ class BillController extends Controller
      * @param Request $request
      * @param Bill    $bill
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Request $request, Bill $bill)
     {
@@ -177,7 +177,7 @@ class BillController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index()
     {
@@ -225,29 +225,29 @@ class BillController extends Controller
      */
     public function rescan(Request $request, Bill $bill)
     {
-        if (0 === (int)$bill->active) {
+        if (false === $bill->active) {
             $request->session()->flash('warning', (string)trans('firefly.cannot_scan_inactive_bill'));
-
-            return redirect(URL::previous());
         }
-        $set   = $this->billRepository->getRulesForBill($bill);
-        $total = 0;
-        foreach ($set as $rule) {
-            // simply fire off all rules?
-            /** @var TransactionMatcher $matcher */
-            $matcher = app(TransactionMatcher::class);
-            $matcher->setLimit(100000); // large upper limit
-            $matcher->setRange(100000); // large upper limit
-            $matcher->setRule($rule);
-            $matchingTransactions = $matcher->findTransactionsByRule();
-            $total                += $matchingTransactions->count();
-            $this->billRepository->linkCollectionToBill($bill, $matchingTransactions);
+        if (true === $bill->active) {
+            $set   = $this->billRepository->getRulesForBill($bill);
+            $total = 0;
+            foreach ($set as $rule) {
+                // simply fire off all rules?
+                /** @var TransactionMatcher $matcher */
+                $matcher = app(TransactionMatcher::class);
+                $matcher->setLimit(100000); // large upper limit
+                $matcher->setRange(100000); // large upper limit
+                $matcher->setRule($rule);
+                $matchingTransactions = $matcher->findTransactionsByRule();
+                $total                += $matchingTransactions->count();
+                $this->billRepository->linkCollectionToBill($bill, $matchingTransactions);
+            }
+
+
+            $request->session()->flash('success', (string)trans('firefly.rescanned_bill', ['total' => $total]));
+            app('preferences')->mark();
         }
 
-
-        $request->session()->flash('success', (string)trans('firefly.rescanned_bill', ['total' => $total]));
-        Preferences::mark();
-
         return redirect(URL::previous());
     }
 
@@ -255,7 +255,7 @@ class BillController extends Controller
      * @param Request $request
      * @param Bill    $bill
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function show(Request $request, Bill $bill)
     {
@@ -292,6 +292,7 @@ class BillController extends Controller
         return view('bills.show', compact('transactions', 'rules', 'yearAverage', 'overallAverage', 'year', 'object', 'bill', 'subTitle'));
     }
 
+
     /**
      * @param BillFormRequest $request
      *
@@ -307,7 +308,7 @@ class BillController extends Controller
             return redirect(route('bills.create'))->withInput();
         }
         $request->session()->flash('success', (string)trans('firefly.stored_new_bill', ['name' => $bill->name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         /** @var array $files */
         $files = $request->hasFile('attachments') ? $request->file('attachments') : null;
@@ -355,7 +356,7 @@ class BillController extends Controller
         $bill     = $this->billRepository->update($bill, $billData);
 
         $request->session()->flash('success', (string)trans('firefly.updated_bill', ['name' => $bill->name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         /** @var array $files */
         $files = $request->hasFile('attachments') ? $request->file('attachments') : null;
@@ -365,15 +366,16 @@ class BillController extends Controller
         if (\count($this->attachments->getMessages()->get('attachments')) > 0) {
             $request->session()->flash('info', $this->attachments->getMessages()->get('attachments')); // @codeCoverageIgnore
         }
+        $redirect = redirect($this->getPreviousUri('bills.edit.uri'));
 
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             $request->session()->put('bills.edit.fromUpdate', true);
 
-            return redirect(route('bills.edit', [$bill->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('bills.edit', [$bill->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('bills.edit.uri'));
+        return $redirect;
     }
 }
diff --git a/app/Http/Controllers/BudgetController.php b/app/Http/Controllers/BudgetController.php
index b62589e9b9..9528910896 100644
--- a/app/Http/Controllers/BudgetController.php
+++ b/app/Http/Controllers/BudgetController.php
@@ -44,8 +44,6 @@ use View;
 /**
  * Class BudgetController.
  *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- * @SuppressWarnings(PHPMD.TooManyPublicMethods)
  */
 class BudgetController extends Controller
 {
@@ -139,7 +137,7 @@ class BudgetController extends Controller
             );
         }
 
-        Preferences::mark();
+        app('preferences')->mark();
 
         return response()->json(
             [
@@ -161,7 +159,7 @@ class BudgetController extends Controller
     /**
      * @param Request $request
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function create(Request $request)
     {
@@ -178,7 +176,7 @@ class BudgetController extends Controller
     /**
      * @param Budget $budget
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Budget $budget)
     {
@@ -201,7 +199,7 @@ class BudgetController extends Controller
         $name = $budget->name;
         $this->repository->destroy($budget);
         $request->session()->flash('success', (string)trans('firefly.deleted_budget', ['name' => $name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('budgets.delete.uri'));
     }
@@ -210,7 +208,7 @@ class BudgetController extends Controller
      * @param Request $request
      * @param Budget  $budget
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Request $request, Budget $budget)
     {
@@ -236,10 +234,7 @@ class BudgetController extends Controller
      * @param Request     $request
      * @param string|null $moment
      *
-     * @return View
-     *
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) complex because of while loop
-     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(Request $request, string $moment = null)
     {
@@ -339,10 +334,10 @@ class BudgetController extends Controller
         );
     }
 
+
     /**
      * @param Carbon $start
      * @param Carbon $end
-     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
      *
      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
@@ -420,16 +415,14 @@ class BudgetController extends Controller
     /**
      * @param Request                    $request
      * @param JournalRepositoryInterface $repository
-     * @param string                     $moment
+     * @param string|null                $moment
      *
-     * @return View
-     *
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
-     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function noBudget(Request $request, JournalRepositoryInterface $repository, string $moment = '')
+    public function noBudget(Request $request, JournalRepositoryInterface $repository, string $moment = null)
     {
         // default values:
+        $moment  = $moment ?? '';
         $range   = Preferences::get('viewRange', '1M')->data;
         $start   = null;
         $end     = null;
@@ -492,7 +485,7 @@ class BudgetController extends Controller
         $page            = 0 === $request->integer('page') ? 1 : $request->integer('page');
         $this->repository->cleanupBudgets();
         $this->repository->setAvailableBudget($defaultCurrency, $start, $end, $amount);
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect(route('budgets.index', [$start->format('Y-m-d')]) . '?page=' . $page);
     }
@@ -501,7 +494,7 @@ class BudgetController extends Controller
      * @param Request $request
      * @param Budget  $budget
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function show(Request $request, Budget $budget)
     {
@@ -530,8 +523,7 @@ class BudgetController extends Controller
      * @param Budget      $budget
      * @param BudgetLimit $budgetLimit
      *
-     * @return View
-     *
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      * @throws FireflyException
      */
     public function showByBudgetLimit(Request $request, Budget $budget, BudgetLimit $budgetLimit)
@@ -576,19 +568,22 @@ class BudgetController extends Controller
         $budget = $this->repository->store($data);
         $this->repository->cleanupBudgets();
         $request->session()->flash('success', (string)trans('firefly.stored_new_budget', ['name' => $budget->name]));
-        Preferences::mark();
+        app('preferences')->mark();
+
+        $redirect = redirect($this->getPreviousUri('budgets.create.uri'));
 
         if (1 === (int)$request->get('create_another')) {
             // @codeCoverageIgnoreStart
             $request->session()->put('budgets.create.fromStore', true);
 
-            return redirect(route('budgets.create'))->withInput();
+            $redirect = redirect(route('budgets.create'))->withInput();
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('budgets.create.uri'));
+        return $redirect;
     }
 
+
     /**
      * @param BudgetFormRequest $request
      * @param Budget            $budget
@@ -602,17 +597,19 @@ class BudgetController extends Controller
 
         $request->session()->flash('success', (string)trans('firefly.updated_budget', ['name' => $budget->name]));
         $this->repository->cleanupBudgets();
-        Preferences::mark();
+        app('preferences')->mark();
+
+        $redirect = redirect($this->getPreviousUri('budgets.edit.uri'));
 
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             $request->session()->put('budgets.edit.fromUpdate', true);
 
-            return redirect(route('budgets.edit', [$budget->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('budgets.edit', [$budget->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('budgets.edit.uri'));
+        return $redirect;
     }
 
     /**
@@ -632,6 +629,7 @@ class BudgetController extends Controller
         return view('budgets.income', compact('available', 'start', 'end', 'page'));
     }
 
+
     /**
      * @param Budget $budget
      * @param Carbon $start
@@ -665,6 +663,7 @@ class BudgetController extends Controller
         return $set;
     }
 
+
     /**
      * @return Collection
      */
diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php
index 3f5452b0b5..2530c4fdbf 100644
--- a/app/Http/Controllers/CategoryController.php
+++ b/app/Http/Controllers/CategoryController.php
@@ -39,7 +39,6 @@ use Illuminate\Support\Collection;
 use Log;
 use Preferences;
 use Steam;
-use View;
 
 /**
  * Class CategoryController.
@@ -54,7 +53,7 @@ class CategoryController extends Controller
     private $repository;
 
     /**
-     *
+     * CategoryController constructor.
      */
     public function __construct()
     {
@@ -76,7 +75,7 @@ class CategoryController extends Controller
     /**
      * @param Request $request
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function create(Request $request)
     {
@@ -92,7 +91,7 @@ class CategoryController extends Controller
     /**
      * @param Category $category
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Category $category)
     {
@@ -116,7 +115,7 @@ class CategoryController extends Controller
         $this->repository->destroy($category);
 
         $request->session()->flash('success', (string)trans('firefly.deleted_category', ['name' => $name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('categories.delete.uri'));
     }
@@ -125,7 +124,7 @@ class CategoryController extends Controller
      * @param Request  $request
      * @param Category $category
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Request $request, Category $category)
     {
@@ -167,14 +166,15 @@ class CategoryController extends Controller
     }
 
     /**
-     * @param Request $request
-     * @param string  $moment
+     * @param Request     $request
+     * @param string|null $moment
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function noCategory(Request $request, string $moment = '')
+    public function noCategory(Request $request, string $moment = null)
     {
         // default values:
+        $moment   = $moment ?? '';
         $range    = Preferences::get('viewRange', '1M')->data;
         $start    = null;
         $end      = null;
@@ -224,16 +224,16 @@ class CategoryController extends Controller
     }
 
     /**
-     * @param Request                     $request
-     * @param CategoryRepositoryInterface $repository
-     * @param Category                    $category
-     * @param string                      $moment
+     * @param Request     $request
+     * @param Category    $category
+     * @param string|null $moment
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function show(Request $request, CategoryRepositoryInterface $repository, Category $category, string $moment = '')
+    public function show(Request $request, Category $category, string $moment = null)
     {
         // default values:
+        $moment       = $moment ?? '';
         $subTitle     = $category->name;
         $subTitleIcon = 'fa-bar-chart';
         $page         = (int)$request->get('page');
@@ -247,7 +247,7 @@ class CategoryController extends Controller
         // prep for "all" view.
         if ('all' === $moment) {
             $subTitle = trans('firefly.all_journals_for_category', ['name' => $category->name]);
-            $first    = $repository->firstUseDate($category);
+            $first    = $this->repository->firstUseDate($category);
             /** @var Carbon $start */
             $start = $first ?? new Carbon;
             $end   = new Carbon;
@@ -255,7 +255,7 @@ class CategoryController extends Controller
         }
 
         // prep for "specific date" view.
-        if (\strlen($moment) > 0 && 'all' !== $moment) {
+        if ('all' !== $moment && \strlen($moment) > 0) {
             $start    = app('navigation')->startOfPeriod(new Carbon($moment), $range);
             $end      = app('navigation')->endOfPeriod($start, $range);
             $subTitle = trans(
@@ -304,19 +304,21 @@ class CategoryController extends Controller
         $category = $repository->store($data);
 
         $request->session()->flash('success', (string)trans('firefly.stored_category', ['name' => $category->name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
+        $redirect = redirect(route('categories.index'));
         if (1 === (int)$request->get('create_another')) {
             // @codeCoverageIgnoreStart
             $request->session()->put('categories.create.fromStore', true);
 
-            return redirect(route('categories.create'))->withInput();
+            $redirect = redirect(route('categories.create'))->withInput();
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect(route('categories.index'));
+        return $redirect;
     }
 
+
     /**
      * @param CategoryFormRequest         $request
      * @param CategoryRepositoryInterface $repository
@@ -330,19 +332,22 @@ class CategoryController extends Controller
         $repository->update($category, $data);
 
         $request->session()->flash('success', (string)trans('firefly.updated_category', ['name' => $category->name]));
-        Preferences::mark();
+        app('preferences')->mark();
+
+        $redirect = redirect($this->getPreviousUri('categories.edit.uri'));
 
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             $request->session()->put('categories.edit.fromUpdate', true);
 
-            return redirect(route('categories.edit', [$category->id]));
+            $redirect = redirect(route('categories.edit', [$category->id]));
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('categories.edit.uri'));
+        return $redirect;
     }
 
+
     /**
      * @param Carbon $theDate
      *
@@ -421,6 +426,7 @@ class CategoryController extends Controller
         return $entries;
     }
 
+
     /**
      * @param Category $category
      *
diff --git a/app/Http/Controllers/Chart/AccountController.php b/app/Http/Controllers/Chart/AccountController.php
index e0e18773b8..345f0a6295 100644
--- a/app/Http/Controllers/Chart/AccountController.php
+++ b/app/Http/Controllers/Chart/AccountController.php
@@ -35,6 +35,7 @@ use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
 use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
 use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
 use FireflyIII\Support\CacheProperties;
+use Illuminate\Http\JsonResponse;
 use Illuminate\Support\Collection;
 use Log;
 use Preferences;
@@ -62,9 +63,9 @@ class AccountController extends Controller
      *
      * @param AccountRepositoryInterface $repository
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function expenseAccounts(AccountRepositoryInterface $repository)
+    public function expenseAccounts(AccountRepositoryInterface $repository): JsonResponse
     {
         $start = clone session('start', Carbon::now()->startOfMonth());
         $end   = clone session('end', Carbon::now()->endOfMonth());
@@ -99,14 +100,15 @@ class AccountController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param Account $account
      * @param Carbon  $start
      * @param Carbon  $end
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function expenseBudget(Account $account, Carbon $start, Carbon $end)
+    public function expenseBudget(Account $account, Carbon $start, Carbon $end): JsonResponse
     {
         $cache = new CacheProperties;
         $cache->addProperty($account->id);
@@ -146,9 +148,9 @@ class AccountController extends Controller
      * @param AccountRepositoryInterface $repository
      * @param Account                    $account
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function expenseBudgetAll(AccountRepositoryInterface $repository, Account $account)
+    public function expenseBudgetAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
     {
         $start = $repository->oldestJournalDate($account);
         $end   = Carbon::now();
@@ -156,14 +158,15 @@ class AccountController extends Controller
         return $this->expenseBudget($account, $start, $end);
     }
 
+
     /**
      * @param Account $account
      * @param Carbon  $start
      * @param Carbon  $end
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function expenseCategory(Account $account, Carbon $start, Carbon $end)
+    public function expenseCategory(Account $account, Carbon $start, Carbon $end): JsonResponse
     {
         $cache = new CacheProperties;
         $cache->addProperty($account->id);
@@ -203,9 +206,9 @@ class AccountController extends Controller
      * @param AccountRepositoryInterface $repository
      * @param Account                    $account
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function expenseCategoryAll(AccountRepositoryInterface $repository, Account $account)
+    public function expenseCategoryAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
     {
         $start = $repository->oldestJournalDate($account);
         $end   = Carbon::now();
@@ -218,9 +221,9 @@ class AccountController extends Controller
      *
      * @param AccountRepositoryInterface $repository
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function frontpage(AccountRepositoryInterface $repository)
+    public function frontpage(AccountRepositoryInterface $repository): JsonResponse
     {
         $start      = clone session('start', Carbon::now()->startOfMonth());
         $end        = clone session('end', Carbon::now()->endOfMonth());
@@ -238,14 +241,15 @@ class AccountController extends Controller
         return response()->json($this->accountBalanceChart($accounts, $start, $end));
     }
 
+
     /**
      * @param Account $account
      * @param Carbon  $start
      * @param Carbon  $end
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function incomeCategory(Account $account, Carbon $start, Carbon $end)
+    public function incomeCategory(Account $account, Carbon $start, Carbon $end): JsonResponse
     {
         $cache = new CacheProperties;
         $cache->addProperty($account->id);
@@ -285,9 +289,9 @@ class AccountController extends Controller
      * @param AccountRepositoryInterface $repository
      * @param Account                    $account
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function incomeCategoryAll(AccountRepositoryInterface $repository, Account $account)
+    public function incomeCategoryAll(AccountRepositoryInterface $repository, Account $account): JsonResponse
     {
         $start = $repository->oldestJournalDate($account);
         $end   = Carbon::now();
@@ -295,15 +299,16 @@ class AccountController extends Controller
         return $this->incomeCategory($account, $start, $end);
     }
 
+
     /**
      * @param Account $account
      * @param Carbon  $start
      *
      * @param Carbon  $end
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function period(Account $account, Carbon $start, Carbon $end)
+    public function period(Account $account, Carbon $start, Carbon $end): JsonResponse
     {
         $cache = new CacheProperties;
         $cache->addProperty('chart.account.period');
@@ -367,21 +372,22 @@ class AccountController extends Controller
      * @param Carbon     $end
      * @param Collection $accounts
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function report(Collection $accounts, Carbon $start, Carbon $end)
+    public function report(Collection $accounts, Carbon $start, Carbon $end): JsonResponse
     {
         return response()->json($this->accountBalanceChart($accounts, $start, $end));
     }
 
+
     /**
      * Shows the balances for all the user's revenue accounts.
      *
      * @param AccountRepositoryInterface $repository
      *
-     * @return \Illuminate\Http\JsonResponse
+     * @return JsonResponse
      */
-    public function revenueAccounts(AccountRepositoryInterface $repository)
+    public function revenueAccounts(AccountRepositoryInterface $repository): JsonResponse
     {
         $start     = clone session('start', Carbon::now()->startOfMonth());
         $end       = clone session('end', Carbon::now()->endOfMonth());
@@ -417,6 +423,7 @@ class AccountController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param Collection $accounts
      * @param Carbon     $start
diff --git a/app/Http/Controllers/Chart/BillController.php b/app/Http/Controllers/Chart/BillController.php
index b145249092..ef4f696550 100644
--- a/app/Http/Controllers/Chart/BillController.php
+++ b/app/Http/Controllers/Chart/BillController.php
@@ -49,6 +49,7 @@ class BillController extends Controller
         $this->generator = app(GeneratorInterface::class);
     }
 
+
     /**
      * Shows all bills and whether or not they've been paid this month (pie chart).
      *
@@ -81,6 +82,7 @@ class BillController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param JournalCollectorInterface $collector
      * @param Bill                      $bill
diff --git a/app/Http/Controllers/Chart/BudgetController.php b/app/Http/Controllers/Chart/BudgetController.php
index 1da549de38..0e2079c960 100644
--- a/app/Http/Controllers/Chart/BudgetController.php
+++ b/app/Http/Controllers/Chart/BudgetController.php
@@ -42,7 +42,6 @@ use Steam;
 /**
  * Class BudgetController.
  *
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects) // can't realy be helped.
  */
 class BudgetController extends Controller
 {
@@ -69,6 +68,7 @@ class BudgetController extends Controller
         );
     }
 
+
     /**
      * @param Budget $budget
      *
@@ -124,10 +124,10 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * Shows the amount left in a specific budget limit.
      *
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's exactly five.
      *
      * @param Budget      $budget
      * @param BudgetLimit $budgetLimit
@@ -172,6 +172,7 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param Budget           $budget
      * @param BudgetLimit|null $budgetLimit
@@ -216,6 +217,7 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param Budget           $budget
      * @param BudgetLimit|null $budgetLimit
@@ -262,6 +264,7 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param Budget           $budget
      * @param BudgetLimit|null $budgetLimit
@@ -307,12 +310,10 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * Shows a budget list with spent/left/overspent.
      *
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's exactly five.
-     * @SuppressWarnings(PHPMD.ExcessiveMethodLength) // 46 lines, I'm fine with this.
-     *
      * @return \Symfony\Component\HttpFoundation\Response
      */
     public function frontpage()
@@ -361,8 +362,8 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's exactly five.
      *
      * @param Budget     $budget
      * @param Carbon     $start
@@ -406,6 +407,7 @@ class BudgetController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param Collection $accounts
      * @param Carbon     $start
@@ -514,8 +516,8 @@ class BudgetController extends Controller
         return $return;
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's 6 but ok.
      *
      * @param Collection $limits
      * @param Budget     $budget
@@ -550,7 +552,6 @@ class BudgetController extends Controller
     }
 
     /**
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity) // it's exactly five.
      *
      * Returns an array with the following values:
      * 0 =>
diff --git a/app/Http/Controllers/Chart/BudgetReportController.php b/app/Http/Controllers/Chart/BudgetReportController.php
index 6f433c0ad2..d769bb5c4a 100644
--- a/app/Http/Controllers/Chart/BudgetReportController.php
+++ b/app/Http/Controllers/Chart/BudgetReportController.php
@@ -66,6 +66,7 @@ class BudgetReportController extends Controller
         );
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $budgets
@@ -90,6 +91,7 @@ class BudgetReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $budgets
@@ -114,6 +116,7 @@ class BudgetReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $budgets
@@ -197,6 +200,7 @@ class BudgetReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * Returns the budget limits belonging to the given budget and valid on the given day.
      *
@@ -225,6 +229,7 @@ class BudgetReportController extends Controller
         return $set;
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $budgets
diff --git a/app/Http/Controllers/Chart/CategoryController.php b/app/Http/Controllers/Chart/CategoryController.php
index 130c482aea..d7f5cfb2c9 100644
--- a/app/Http/Controllers/Chart/CategoryController.php
+++ b/app/Http/Controllers/Chart/CategoryController.php
@@ -51,6 +51,7 @@ class CategoryController extends Controller
         $this->generator = app(GeneratorInterface::class);
     }
 
+
     /**
      * Show an overview for a category for all time, per month/week/year.
      *
@@ -116,6 +117,7 @@ class CategoryController extends Controller
         return response()->json($data);
     }
 
+
     /**
      * @param CategoryRepositoryInterface $repository
      * @param AccountRepositoryInterface  $accountRepository
@@ -156,16 +158,17 @@ class CategoryController extends Controller
         return response()->json($data);
     }
 
+
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
-     * @param CategoryRepositoryInterface $repository
-     * @param Category                    $category
-     * @param Collection                  $accounts
-     * @param Carbon                      $start
-     * @param Carbon                      $end
+     * @param Category   $category
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return \Illuminate\Http\JsonResponse|mixed
      */
-    public function reportPeriod(CategoryRepositoryInterface $repository, Category $category, Collection $accounts, Carbon $start, Carbon $end)
+    public function reportPeriod(Category $category, Collection $accounts, Carbon $start, Carbon $end)
     {
         $cache = new CacheProperties;
         $cache->addProperty($start);
@@ -176,10 +179,11 @@ class CategoryController extends Controller
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
-        $expenses  = $repository->periodExpenses(new Collection([$category]), $accounts, $start, $end);
-        $income    = $repository->periodIncome(new Collection([$category]), $accounts, $start, $end);
-        $periods   = app('navigation')->listOfPeriods($start, $end);
-        $chartData = [
+        $repository = app(CategoryRepositoryInterface::class);
+        $expenses   = $repository->periodExpenses(new Collection([$category]), $accounts, $start, $end);
+        $income     = $repository->periodIncome(new Collection([$category]), $accounts, $start, $end);
+        $periods    = app('navigation')->listOfPeriods($start, $end);
+        $chartData  = [
             [
                 'label'   => (string)trans('firefly.spent'),
                 'entries' => [],
@@ -214,15 +218,15 @@ class CategoryController extends Controller
         return response()->json($data);
     }
 
+
     /**
-     * @param CategoryRepositoryInterface $repository
-     * @param Collection                  $accounts
-     * @param Carbon                      $start
-     * @param Carbon                      $end
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return \Illuminate\Http\JsonResponse|mixed
      */
-    public function reportPeriodNoCategory(CategoryRepositoryInterface $repository, Collection $accounts, Carbon $start, Carbon $end)
+    public function reportPeriodNoCategory(Collection $accounts, Carbon $start, Carbon $end)
     {
         $cache = new CacheProperties;
         $cache->addProperty($start);
@@ -232,10 +236,11 @@ class CategoryController extends Controller
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
-        $expenses  = $repository->periodExpensesNoCategory($accounts, $start, $end);
-        $income    = $repository->periodIncomeNoCategory($accounts, $start, $end);
-        $periods   = app('navigation')->listOfPeriods($start, $end);
-        $chartData = [
+        $repository = app(CategoryRepositoryInterface::class);
+        $expenses   = $repository->periodExpensesNoCategory($accounts, $start, $end);
+        $income     = $repository->periodIncomeNoCategory($accounts, $start, $end);
+        $periods    = app('navigation')->listOfPeriods($start, $end);
+        $chartData  = [
             [
                 'label'   => (string)trans('firefly.spent'),
                 'entries' => [],
@@ -270,31 +275,30 @@ class CategoryController extends Controller
     }
 
     /**
-     * @param CategoryRepositoryInterface $repository
      * @param Category                    $category
      * @param                             $date
      *
      * @return \Symfony\Component\HttpFoundation\Response
      */
-    public function specificPeriod(CategoryRepositoryInterface $repository, Category $category, Carbon $date)
+    public function specificPeriod(Category $category, Carbon $date)
     {
         $range = Preferences::get('viewRange', '1M')->data;
         $start = app('navigation')->startOfPeriod($date, $range);
         $end   = app('navigation')->endOfPeriod($date, $range);
-        $data  = $this->makePeriodChart($repository, $category, $start, $end);
+        $data  = $this->makePeriodChart($category, $start, $end);
 
         return response()->json($data);
     }
 
+
     /**
-     * @param CategoryRepositoryInterface $repository
-     * @param Category                    $category
-     * @param Carbon                      $start
-     * @param Carbon                      $end
+     * @param Category $category
+     * @param Carbon   $start
+     * @param Carbon   $end
      *
      * @return array
      */
-    private function makePeriodChart(CategoryRepositoryInterface $repository, Category $category, Carbon $start, Carbon $end)
+    private function makePeriodChart(Category $category, Carbon $start, Carbon $end)
     {
         $cache = new CacheProperties;
         $cache->addProperty($start);
@@ -302,14 +306,16 @@ class CategoryController extends Controller
         $cache->addProperty($category->id);
         $cache->addProperty('chart.category.period-chart');
 
-        /** @var AccountRepositoryInterface $accountRepository */
-        $accountRepository = app(AccountRepositoryInterface::class);
-        $accounts          = $accountRepository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]);
 
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
 
+        /** @var AccountRepositoryInterface $accountRepository */
+        $accountRepository = app(AccountRepositoryInterface::class);
+        $accounts          = $accountRepository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET]);
+        $repository        = app(CategoryRepositoryInterface::class);
+
         // chart data
         $chartData = [
             [
diff --git a/app/Http/Controllers/Chart/CategoryReportController.php b/app/Http/Controllers/Chart/CategoryReportController.php
index 116fdce7d2..03b4180ad9 100644
--- a/app/Http/Controllers/Chart/CategoryReportController.php
+++ b/app/Http/Controllers/Chart/CategoryReportController.php
@@ -62,6 +62,7 @@ class CategoryReportController extends Controller
         );
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
@@ -83,6 +84,7 @@ class CategoryReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
@@ -107,6 +109,7 @@ class CategoryReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
@@ -131,6 +134,7 @@ class CategoryReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
@@ -155,6 +159,8 @@ class CategoryReportController extends Controller
         return response()->json($data);
     }
 
+
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
@@ -260,6 +266,7 @@ class CategoryReportController extends Controller
         return response()->json($data);
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
@@ -282,6 +289,7 @@ class CategoryReportController extends Controller
         return $collector->getJournals();
     }
 
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Collection $accounts
      * @param Collection $categories
diff --git a/app/Http/Controllers/Chart/ExpenseReportController.php b/app/Http/Controllers/Chart/ExpenseReportController.php
index 3848afe95f..7b44de228c 100644
--- a/app/Http/Controllers/Chart/ExpenseReportController.php
+++ b/app/Http/Controllers/Chart/ExpenseReportController.php
@@ -18,6 +18,7 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection MoreThanThreeArgumentsInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers\Chart;
diff --git a/app/Http/Controllers/Chart/TagReportController.php b/app/Http/Controllers/Chart/TagReportController.php
index 552aa239a1..9fc5406a03 100644
--- a/app/Http/Controllers/Chart/TagReportController.php
+++ b/app/Http/Controllers/Chart/TagReportController.php
@@ -18,6 +18,7 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection MoreThanThreeArgumentsInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers\Chart;
diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index 0ecaf69901..3a9eaf8d48 100644
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -145,6 +145,7 @@ class Controller extends BaseController
         return TransactionType::OPENING_BALANCE === $journal->transactionType->type;
     }
 
+
     /**
      * @param TransactionJournal $journal
      *
@@ -157,7 +158,7 @@ class Controller extends BaseController
         /** @var Transaction $transaction */
         foreach ($transactions as $transaction) {
             $account = $transaction->account;
-            if (in_array($account->accountType->type, $valid, true)) {
+            if (\in_array($account->accountType->type, $valid, true)) {
                 return redirect(route('accounts.show', [$account->id]));
             }
         }
diff --git a/app/Http/Controllers/CurrencyController.php b/app/Http/Controllers/CurrencyController.php
index 67d62ea22f..7600f44082 100644
--- a/app/Http/Controllers/CurrencyController.php
+++ b/app/Http/Controllers/CurrencyController.php
@@ -63,6 +63,7 @@ class CurrencyController extends Controller
         );
     }
 
+
     /**
      * @param Request $request
      *
@@ -97,7 +98,7 @@ class CurrencyController extends Controller
     public function defaultCurrency(Request $request, TransactionCurrency $currency)
     {
         Preferences::set('currencyPreference', $currency->code);
-        Preferences::mark();
+        app('preferences')->mark();
 
         $request->session()->flash('success', trans('firefly.new_default_currency', ['name' => $currency->name]));
         Cache::forget('FFCURRENCYSYMBOL');
@@ -106,6 +107,7 @@ class CurrencyController extends Controller
         return redirect(route('currencies.index'));
     }
 
+
     /**
      * @param Request             $request
      * @param TransactionCurrency $currency
@@ -135,6 +137,7 @@ class CurrencyController extends Controller
         return view('currencies.delete', compact('currency', 'subTitle'));
     }
 
+
     /**
      * @param Request             $request
      * @param TransactionCurrency $currency
@@ -163,6 +166,7 @@ class CurrencyController extends Controller
         return redirect($this->getPreviousUri('currencies.delete.uri'));
     }
 
+
     /**
      * @param Request             $request
      * @param TransactionCurrency $currency
@@ -195,7 +199,7 @@ class CurrencyController extends Controller
     /**
      * @param Request $request
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(Request $request)
     {
@@ -222,6 +226,7 @@ class CurrencyController extends Controller
         return view('currencies.index', compact('currencies', 'defaultCurrency', 'isOwner'));
     }
 
+
     /**
      * @param CurrencyFormRequest $request
      *
@@ -252,6 +257,7 @@ class CurrencyController extends Controller
         return redirect($this->getPreviousUri('currencies.create.uri'));
     }
 
+
     /**
      * @param CurrencyFormRequest $request
      * @param TransactionCurrency $currency
@@ -271,7 +277,7 @@ class CurrencyController extends Controller
         $data     = $request->getCurrencyData();
         $currency = $this->repository->update($currency, $data);
         $request->session()->flash('success', trans('firefly.updated_currency', ['name' => $currency->name]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
diff --git a/app/Http/Controllers/DebugController.php b/app/Http/Controllers/DebugController.php
index 3ec6ee504d..9aca4ef65e 100644
--- a/app/Http/Controllers/DebugController.php
+++ b/app/Http/Controllers/DebugController.php
@@ -33,7 +33,6 @@ use Illuminate\Http\Request;
 use Illuminate\Routing\Route;
 use Log;
 use Monolog\Handler\RotatingFileHandler;
-use Preferences;
 use Route as RouteFacade;
 
 /**
@@ -73,7 +72,7 @@ class DebugController extends Controller
      */
     public function flush(Request $request)
     {
-        Preferences::mark();
+        app('preferences')->mark();
         $request->session()->forget(['start', 'end', '_previous', 'viewRange', 'range', 'is_custom_range']);
         Log::debug('Call cache:clear...');
         Artisan::call('cache:clear');
@@ -235,7 +234,7 @@ class DebugController extends Controller
      */
     protected function errorReporting(int $value): string
     {
-        $array = [
+        $array  = [
             -1                                                             => 'ALL errors',
             E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED                  => 'E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED',
             E_ALL                                                          => 'E_ALL',
@@ -244,11 +243,12 @@ class DebugController extends Controller
             E_ALL & ~E_NOTICE & ~E_STRICT                                  => 'E_ALL & ~E_NOTICE & ~E_STRICT',
             E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR => 'E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR',
         ];
+        $result = (string)$value;
         if (isset($array[$value])) {
-            return $array[$value];
+            $result = $array[$value];
         }
 
-        return (string)$value; // @codeCoverageIgnore
+        return $result;
     }
 
     /**
diff --git a/app/Http/Controllers/ExportController.php b/app/Http/Controllers/ExportController.php
index a6836ba004..27c3e655a7 100644
--- a/app/Http/Controllers/ExportController.php
+++ b/app/Http/Controllers/ExportController.php
@@ -32,7 +32,6 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
 use FireflyIII\Repositories\ExportJob\ExportJobRepositoryInterface;
 use Illuminate\Http\Response as LaravelResponse;
 use Preferences;
-use View;
 
 /**
  * Class ExportController.
@@ -107,7 +106,7 @@ class ExportController extends Controller
     /**
      * @param ExportJobRepositoryInterface $jobs
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(ExportJobRepositoryInterface $jobs)
     {
diff --git a/app/Http/Controllers/Import/IndexController.php b/app/Http/Controllers/Import/IndexController.php
index 4853c13e7f..f657afe4e2 100644
--- a/app/Http/Controllers/Import/IndexController.php
+++ b/app/Http/Controllers/Import/IndexController.php
@@ -30,7 +30,6 @@ use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface;
 use FireflyIII\Repositories\User\UserRepositoryInterface;
 use Illuminate\Http\Response as LaravelResponse;
 use Log;
-use View;
 
 /**
  * Class FileController.
@@ -180,7 +179,7 @@ class IndexController extends Controller
     /**
      * General import index.
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index()
     {
diff --git a/app/Http/Controllers/Json/AutoCompleteController.php b/app/Http/Controllers/Json/AutoCompleteController.php
index 87a8204244..caad1fdf63 100644
--- a/app/Http/Controllers/Json/AutoCompleteController.php
+++ b/app/Http/Controllers/Json/AutoCompleteController.php
@@ -160,6 +160,7 @@ class AutoCompleteController extends Controller
         return response()->json($return);
     }
 
+
     /**
      * @param JournalCollectorInterface $collector
      * @param TransactionJournal        $except
diff --git a/app/Http/Controllers/Json/BoxController.php b/app/Http/Controllers/Json/BoxController.php
index 8c8750cefc..0fd31941a4 100644
--- a/app/Http/Controllers/Json/BoxController.php
+++ b/app/Http/Controllers/Json/BoxController.php
@@ -41,6 +41,7 @@ use FireflyIII\Support\CacheProperties;
  */
 class BoxController extends Controller
 {
+
     /**
      * @param BudgetRepositoryInterface $repository
      *
@@ -92,6 +93,7 @@ class BoxController extends Controller
         return response()->json($return);
     }
 
+
     /**
      * @param CurrencyRepositoryInterface $repository
      *
@@ -173,6 +175,7 @@ class BoxController extends Controller
         return response()->json($response);
     }
 
+
     /**
      * @param BillRepositoryInterface $repository
      *
@@ -208,6 +211,7 @@ class BoxController extends Controller
         return response()->json($return);
     }
 
+
     /**
      * @param AccountRepositoryInterface  $repository
      *
diff --git a/app/Http/Controllers/Json/ExchangeController.php b/app/Http/Controllers/Json/ExchangeController.php
index 34b8eeddd6..8e3eb16ac9 100644
--- a/app/Http/Controllers/Json/ExchangeController.php
+++ b/app/Http/Controllers/Json/ExchangeController.php
@@ -35,6 +35,7 @@ use Log;
  */
 class ExchangeController extends Controller
 {
+    /** @noinspection MoreThanThreeArgumentsInspection */
     /**
      * @param Request             $request
      * @param TransactionCurrency $fromCurrency
diff --git a/app/Http/Controllers/Json/IntroController.php b/app/Http/Controllers/Json/IntroController.php
index be974afb74..96a7a14aa7 100644
--- a/app/Http/Controllers/Json/IntroController.php
+++ b/app/Http/Controllers/Json/IntroController.php
@@ -31,16 +31,15 @@ use Log;
 class IntroController
 {
     /**
-     * Get the intro steps. There are currently no specific routes with an outro step.
-     *
-     * @param string $route
-     * @param string $specificPage
+     * @param string      $route
+     * @param string|null $specificPage
      *
      * @return \Illuminate\Http\JsonResponse
      */
-    public function getIntroSteps(string $route, string $specificPage = '')
+    public function getIntroSteps(string $route, string $specificPage = null)
     {
         Log::debug(sprintf('getIntroSteps for route "%s" and page "%s"', $route, $specificPage));
+        $specificPage  = $specificPage ?? '';
         $steps         = $this->getBasicSteps($route);
         $specificSteps = $this->getSpecificSteps($route, $specificPage);
         if (0 === \count($specificSteps)) {
@@ -90,15 +89,16 @@ class IntroController
     }
 
     /**
-     * @param string $route
-     * @param string $specialPage
+     * @param string      $route
+     * @param string|null $specialPage
      *
      * @return \Illuminate\Http\JsonResponse
      */
-    public function postEnable(string $route, string $specialPage = '')
+    public function postEnable(string $route, string $specialPage = null)
     {
-        $route = str_replace('.', '_', $route);
-        $key   = 'shown_demo_' . $route;
+        $specialPage = $specialPage ?? '';
+        $route       = str_replace('.', '_', $route);
+        $key         = 'shown_demo_' . $route;
         if ('' !== $specialPage) {
             $key .= '_' . $specialPage;
         }
@@ -109,14 +109,15 @@ class IntroController
     }
 
     /**
-     * @param string $route
-     * @param string $specialPage
+     * @param string      $route
+     * @param string|null $specialPage
      *
      * @return \Illuminate\Http\JsonResponse
      */
-    public function postFinished(string $route, string $specialPage = '')
+    public function postFinished(string $route, string $specialPage = null)
     {
-        $key = 'shown_demo_' . $route;
+        $specialPage = $specialPage ?? '';
+        $key         = 'shown_demo_' . $route;
         if ('' !== $specialPage) {
             $key .= '_' . $specialPage;
         }
diff --git a/app/Http/Controllers/NewUserController.php b/app/Http/Controllers/NewUserController.php
index cf3d0223e0..2ef441b1c2 100644
--- a/app/Http/Controllers/NewUserController.php
+++ b/app/Http/Controllers/NewUserController.php
@@ -109,7 +109,7 @@ class NewUserController extends Controller
 
         // store currency preference:
         Preferences::set('currencyPreference', $currency->code);
-        Preferences::mark();
+        app('preferences')->mark();
 
         // set default optional fields:
         $visibleFields = [
@@ -126,7 +126,7 @@ class NewUserController extends Controller
         Preferences::set('transaction_journal_optional_fields', $visibleFields);
 
         session()->flash('success', (string)trans('firefly.stored_new_accounts_new_user'));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect(route('index'));
     }
diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php
index fbfbf94505..2bfb9230d6 100644
--- a/app/Http/Controllers/PiggyBankController.php
+++ b/app/Http/Controllers/PiggyBankController.php
@@ -37,7 +37,6 @@ use Illuminate\Support\Collection;
 use Log;
 use Preferences;
 use Symfony\Component\HttpFoundation\ParameterBag;
-use View;
 
 /**
  * Class PiggyBankController.
@@ -78,7 +77,7 @@ class PiggyBankController extends Controller
      *
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function add(PiggyBank $piggyBank)
     {
@@ -104,7 +103,7 @@ class PiggyBankController extends Controller
      *
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function addMobile(PiggyBank $piggyBank)
     {
@@ -145,7 +144,7 @@ class PiggyBankController extends Controller
     /**
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(PiggyBank $piggyBank)
     {
@@ -165,7 +164,7 @@ class PiggyBankController extends Controller
     public function destroy(PiggyBank $piggyBank)
     {
         session()->flash('success', (string)trans('firefly.deleted_piggy_bank', ['name' => $piggyBank->name]));
-        Preferences::mark();
+        app('preferences')->mark();
         $this->piggyRepos->destroy($piggyBank);
 
         return redirect($this->getPreviousUri('piggy-banks.delete.uri'));
@@ -174,7 +173,7 @@ class PiggyBankController extends Controller
     /**
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(PiggyBank $piggyBank)
     {
@@ -212,7 +211,7 @@ class PiggyBankController extends Controller
     /**
      * @param Request $request
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(Request $request)
     {
@@ -286,7 +285,7 @@ class PiggyBankController extends Controller
                     ['amount' => app('amount')->formatAnything($currency, $amount, false), 'name' => $piggyBank->name]
                 )
             );
-            Preferences::mark();
+            app('preferences')->mark();
 
             return redirect(route('piggy-banks.index'));
         }
@@ -326,7 +325,7 @@ class PiggyBankController extends Controller
                     ['amount' => app('amount')->formatAnything($currency, $amount, false), 'name' => $piggyBank->name]
                 )
             );
-            Preferences::mark();
+            app('preferences')->mark();
 
             return redirect(route('piggy-banks.index'));
         }
@@ -347,7 +346,7 @@ class PiggyBankController extends Controller
     /**
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function remove(PiggyBank $piggyBank)
     {
@@ -367,7 +366,7 @@ class PiggyBankController extends Controller
      *
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function removeMobile(PiggyBank $piggyBank)
     {
@@ -400,7 +399,7 @@ class PiggyBankController extends Controller
     /**
      * @param PiggyBank $piggyBank
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function show(PiggyBank $piggyBank)
     {
@@ -431,17 +430,19 @@ class PiggyBankController extends Controller
         $piggyBank = $this->piggyRepos->store($data);
 
         session()->flash('success', (string)trans('firefly.stored_piggy_bank', ['name' => $piggyBank->name]));
-        Preferences::mark();
+        app('preferences')->mark();
+
+        $redirect = redirect($this->getPreviousUri('piggy-banks.create.uri'));
 
         if (1 === (int)$request->get('create_another')) {
             // @codeCoverageIgnoreStart
             session()->put('piggy-banks.create.fromStore', true);
 
-            return redirect(route('piggy-banks.create'))->withInput();
+            $redirect = redirect(route('piggy-banks.create'))->withInput();
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('piggy-banks.create.uri'));
+        return $redirect;
     }
 
     /**
@@ -456,16 +457,18 @@ class PiggyBankController extends Controller
         $piggyBank = $this->piggyRepos->update($piggyBank, $data);
 
         session()->flash('success', (string)trans('firefly.updated_piggy_bank', ['name' => $piggyBank->name]));
-        Preferences::mark();
+        app('preferences')->mark();
+
+        $redirect = redirect($this->getPreviousUri('piggy-banks.edit.uri'));
 
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             session()->put('piggy-banks.edit.fromUpdate', true);
 
-            return redirect(route('piggy-banks.edit', [$piggyBank->id]));
+            $redirect = redirect(route('piggy-banks.edit', [$piggyBank->id]));
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('piggy-banks.edit.uri'));
+        return $redirect;
     }
 }
diff --git a/app/Http/Controllers/PreferencesController.php b/app/Http/Controllers/PreferencesController.php
index 734c1d301f..8a3c280ab9 100644
--- a/app/Http/Controllers/PreferencesController.php
+++ b/app/Http/Controllers/PreferencesController.php
@@ -26,7 +26,6 @@ use FireflyIII\Models\AccountType;
 use FireflyIII\Repositories\Account\AccountRepositoryInterface;
 use Illuminate\Http\Request;
 use Preferences;
-use View;
 
 /**
  * Class PreferencesController.
@@ -53,7 +52,7 @@ class PreferencesController extends Controller
     /**
      * @param AccountRepositoryInterface $repository
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(AccountRepositoryInterface $repository)
     {
@@ -141,7 +140,7 @@ class PreferencesController extends Controller
         Preferences::set('transaction_journal_optional_fields', $optionalTj);
 
         session()->flash('success', (string)trans('firefly.saved_preferences'));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect(route('preferences.index'));
     }
diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php
index e7cbbf9f46..8076bbd8ec 100644
--- a/app/Http/Controllers/ProfileController.php
+++ b/app/Http/Controllers/ProfileController.php
@@ -44,7 +44,6 @@ use Laravel\Passport\Passport;
 use Log;
 use phpseclib\Crypt\RSA;
 use Preferences;
-use View;
 
 /**
  * Class ProfileController.
@@ -73,7 +72,7 @@ class ProfileController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function changeEmail()
     {
@@ -86,7 +85,7 @@ class ProfileController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function changePassword()
     {
@@ -100,7 +99,7 @@ class ProfileController extends Controller
     /**
      * View that generates a 2FA code for the user.
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function code()
     {
@@ -149,7 +148,7 @@ class ProfileController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function deleteAccount()
     {
@@ -199,7 +198,7 @@ class ProfileController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index()
     {
@@ -302,7 +301,6 @@ class ProfileController extends Controller
      * @param TokenFormRequest $request
      *
      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
-     * @SuppressWarnings(PHPMD.UnusedFormalParameter) // it's unused but the class does some validation.
      */
     public function postCode(TokenFormRequest $request)
     {
@@ -310,7 +308,7 @@ class ProfileController extends Controller
         Preferences::set('twoFactorAuthSecret', session()->get('two-factor-secret'));
 
         session()->flash('success', (string)trans('firefly.saved_preferences'));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect(route('profile.index'));
     }
diff --git a/app/Http/Controllers/Recurring/CreateController.php b/app/Http/Controllers/Recurring/CreateController.php
index 817f6f73dd..559ad1b444 100644
--- a/app/Http/Controllers/Recurring/CreateController.php
+++ b/app/Http/Controllers/Recurring/CreateController.php
@@ -113,6 +113,7 @@ class CreateController extends Controller
         );
     }
 
+
     /**
      * @param RecurrenceFormRequest $request
      *
@@ -126,16 +127,16 @@ class CreateController extends Controller
 
         $request->session()->flash('success', (string)trans('firefly.stored_new_recurrence', ['title' => $recurrence->title]));
         app('preferences')->mark();
-
+        $redirect = redirect($this->getPreviousUri('recurring.create.uri'));
         if (1 === (int)$request->get('create_another')) {
             // set value so create routine will not overwrite URL:
             $request->session()->put('recurring.create.fromStore', true);
 
-            return redirect(route('recurring.create'))->withInput();
+            $redirect = redirect(route('recurring.create'))->withInput();
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('recurring.create.uri'));
+        return $redirect;
 
     }
 
diff --git a/app/Http/Controllers/Recurring/EditController.php b/app/Http/Controllers/Recurring/EditController.php
index e78b8a820f..6438361472 100644
--- a/app/Http/Controllers/Recurring/EditController.php
+++ b/app/Http/Controllers/Recurring/EditController.php
@@ -153,16 +153,16 @@ class EditController extends Controller
 
         $request->session()->flash('success', (string)trans('firefly.updated_recurrence', ['title' => $recurrence->title]));
         app('preferences')->mark();
-
+        $redirect = redirect($this->getPreviousUri('recurrences.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // set value so edit routine will not overwrite URL:
             $request->session()->put('recurrences.edit.fromUpdate', true);
 
-            return redirect(route('recurring.edit', [$recurrence->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('recurring.edit', [$recurrence->id]))->withInput(['return_to_edit' => 1]);
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('recurrences.edit.uri'));
+        return $redirect;
     }
 
 
diff --git a/app/Http/Controllers/Report/AccountController.php b/app/Http/Controllers/Report/AccountController.php
index c7c8ff447f..8e29812af5 100644
--- a/app/Http/Controllers/Report/AccountController.php
+++ b/app/Http/Controllers/Report/AccountController.php
@@ -33,6 +33,7 @@ use Illuminate\Support\Collection;
  */
 class AccountController extends Controller
 {
+
     /**
      * @param Collection $accounts
      * @param Carbon     $start
diff --git a/app/Http/Controllers/Report/BalanceController.php b/app/Http/Controllers/Report/BalanceController.php
index 3b31be87de..992845aa09 100644
--- a/app/Http/Controllers/Report/BalanceController.php
+++ b/app/Http/Controllers/Report/BalanceController.php
@@ -33,17 +33,18 @@ use Illuminate\Support\Collection;
  */
 class BalanceController extends Controller
 {
+
     /**
-     * @param BalanceReportHelperInterface $helper
-     * @param Collection                   $accounts
-     * @param Carbon                       $start
-     * @param Carbon                       $end
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return mixed|string
      * @throws \Throwable
      */
-    public function general(BalanceReportHelperInterface $helper, Collection $accounts, Carbon $start, Carbon $end)
+    public function general(Collection $accounts, Carbon $start, Carbon $end)
     {
+
         // chart properties for cache:
         $cache = new CacheProperties;
         $cache->addProperty($start);
@@ -53,7 +54,7 @@ class BalanceController extends Controller
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
-
+        $helper  = app(BalanceReportHelperInterface::class);
         $balance = $helper->getBalanceReport($accounts, $start, $end);
 
         $result = view('reports.partials.balance', compact('balance'))->render();
diff --git a/app/Http/Controllers/Report/BudgetController.php b/app/Http/Controllers/Report/BudgetController.php
index 7a129f3fa7..44ba71d683 100644
--- a/app/Http/Controllers/Report/BudgetController.php
+++ b/app/Http/Controllers/Report/BudgetController.php
@@ -34,16 +34,16 @@ use Illuminate\Support\Collection;
  */
 class BudgetController extends Controller
 {
+
     /**
-     * @param BudgetReportHelperInterface $helper
-     * @param Collection                  $accounts
-     * @param Carbon                      $start
-     * @param Carbon                      $end
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return mixed|string
      * @throws \Throwable
      */
-    public function general(BudgetReportHelperInterface $helper, Collection $accounts, Carbon $start, Carbon $end)
+    public function general(Collection $accounts, Carbon $start, Carbon $end)
     {
         // chart properties for cache:
         $cache = new CacheProperties;
@@ -54,7 +54,7 @@ class BudgetController extends Controller
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
-
+        $helper  = app(BudgetReportHelperInterface::class);
         $budgets = $helper->getBudgetReport($start, $end, $accounts);
 
         $result = view('reports.partials.budgets', compact('budgets'))->render();
@@ -63,6 +63,7 @@ class BudgetController extends Controller
         return $result;
     }
 
+
     /**
      * @param Collection $accounts
      * @param Carbon     $start
diff --git a/app/Http/Controllers/Report/CategoryController.php b/app/Http/Controllers/Report/CategoryController.php
index 5b182a8e7e..6df7eec8e3 100644
--- a/app/Http/Controllers/Report/CategoryController.php
+++ b/app/Http/Controllers/Report/CategoryController.php
@@ -34,6 +34,7 @@ use Illuminate\Support\Collection;
  */
 class CategoryController extends Controller
 {
+
     /**
      * @param Collection $accounts
      * @param Carbon     $start
@@ -66,6 +67,7 @@ class CategoryController extends Controller
         return $result;
     }
 
+
     /**
      * @param Collection $accounts
      *
@@ -99,6 +101,7 @@ class CategoryController extends Controller
         return $result;
     }
 
+
     /**
      * @param Collection $accounts
      * @param Carbon     $start
diff --git a/app/Http/Controllers/Report/ExpenseController.php b/app/Http/Controllers/Report/ExpenseController.php
index 4869ac785e..2a23efb99a 100644
--- a/app/Http/Controllers/Report/ExpenseController.php
+++ b/app/Http/Controllers/Report/ExpenseController.php
@@ -18,6 +18,7 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection MoreThanThreeArgumentsInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers\Report;
@@ -58,6 +59,7 @@ class ExpenseController extends Controller
         );
     }
 
+
     /**
      * Generates the overview per budget.
      *
@@ -104,6 +106,7 @@ class ExpenseController extends Controller
         return $result;
     }
 
+
     /**
      * Generates the overview per category (spent and earned).
      *
@@ -160,6 +163,7 @@ class ExpenseController extends Controller
         return $result;
     }
 
+
     /**
      * Overview of spending
      *
@@ -206,6 +210,7 @@ class ExpenseController extends Controller
         // for period, get spent and earned for each account (by name)
     }
 
+
     /**
      * @param Collection $accounts
      * @param Collection $expense
diff --git a/app/Http/Controllers/Report/OperationsController.php b/app/Http/Controllers/Report/OperationsController.php
index 2164c57749..fc0777852e 100644
--- a/app/Http/Controllers/Report/OperationsController.php
+++ b/app/Http/Controllers/Report/OperationsController.php
@@ -33,16 +33,37 @@ use Illuminate\Support\Collection;
  */
 class OperationsController extends Controller
 {
+
+    /** @var AccountTaskerInterface */
+    private $tasker;
+
     /**
-     * @param AccountTaskerInterface $tasker
-     * @param Collection             $accounts
-     * @param Carbon                 $start
-     * @param Carbon                 $end
+     *
+     */
+    public function __construct()
+    {
+        parent::__construct();
+
+        // translations:
+        $this->middleware(
+            function ($request, $next) {
+                $this->tasker = app(AccountTaskerInterface::class);
+
+                return $next($request);
+            }
+        );
+    }
+
+
+    /**
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return mixed|string
      * @throws \Throwable
      */
-    public function expenses(AccountTaskerInterface $tasker, Collection $accounts, Carbon $start, Carbon $end)
+    public function expenses(Collection $accounts, Carbon $start, Carbon $end)
     {
         // chart properties for cache:
         $cache = new CacheProperties;
@@ -53,7 +74,7 @@ class OperationsController extends Controller
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
-        $entries = $tasker->getExpenseReport($start, $end, $accounts);
+        $entries = $this->tasker->getExpenseReport($start, $end, $accounts);
         $type    = 'expense-entry';
         $result  = view('reports.partials.income-expenses', compact('entries', 'type'))->render();
         $cache->store($result);
@@ -62,15 +83,14 @@ class OperationsController extends Controller
     }
 
     /**
-     * @param AccountTaskerInterface $tasker
-     * @param Collection             $accounts
-     * @param Carbon                 $start
-     * @param Carbon                 $end
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return string
      * @throws \Throwable
      */
-    public function income(AccountTaskerInterface $tasker, Collection $accounts, Carbon $start, Carbon $end)
+    public function income(Collection $accounts, Carbon $start, Carbon $end)
     {
         // chart properties for cache:
         $cache = new CacheProperties;
@@ -81,7 +101,7 @@ class OperationsController extends Controller
         if ($cache->has()) {
             return $cache->get(); // @codeCoverageIgnore
         }
-        $entries = $tasker->getIncomeReport($start, $end, $accounts);
+        $entries = $this->tasker->getIncomeReport($start, $end, $accounts);
         $type    = 'income-entry';
         $result  = view('reports.partials.income-expenses', compact('entries', 'type'))->render();
 
@@ -91,15 +111,14 @@ class OperationsController extends Controller
     }
 
     /**
-     * @param AccountTaskerInterface $tasker
-     * @param Collection             $accounts
-     * @param Carbon                 $start
-     * @param Carbon                 $end
+     * @param Collection $accounts
+     * @param Carbon     $start
+     * @param Carbon     $end
      *
      * @return mixed|string
      * @throws \Throwable
      */
-    public function operations(AccountTaskerInterface $tasker, Collection $accounts, Carbon $start, Carbon $end)
+    public function operations(Collection $accounts, Carbon $start, Carbon $end)
     {
         // chart properties for cache:
         $cache = new CacheProperties;
@@ -111,8 +130,8 @@ class OperationsController extends Controller
             return $cache->get(); // @codeCoverageIgnore
         }
 
-        $incomes   = $tasker->getIncomeReport($start, $end, $accounts);
-        $expenses  = $tasker->getExpenseReport($start, $end, $accounts);
+        $incomes   = $this->tasker->getIncomeReport($start, $end, $accounts);
+        $expenses  = $this->tasker->getExpenseReport($start, $end, $accounts);
         $incomeSum = array_sum(
             array_map(
                 function ($item) {
diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php
index b1e5c00242..0b88b9599c 100644
--- a/app/Http/Controllers/ReportController.php
+++ b/app/Http/Controllers/ReportController.php
@@ -18,6 +18,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection CallableParameterUseCaseInTypeContextInspection */
+/** @noinspection MoreThanThreeArgumentsInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers;
@@ -256,7 +258,7 @@ class ReportController extends Controller
     /**
      * @param AccountRepositoryInterface $repository
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(AccountRepositoryInterface $repository)
     {
@@ -307,7 +309,6 @@ class ReportController extends Controller
      * @return RedirectResponse|\Illuminate\Routing\Redirector
      *
      * @throws \FireflyIII\Exceptions\FireflyException
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     public function postIndex(ReportFormRequest $request)
     {
@@ -329,19 +330,19 @@ class ReportController extends Controller
             return redirect(route('reports.index'));
         }
 
-        if (0 === $request->getCategoryList()->count() && 'category' === $reportType) {
+        if ('category' === $reportType && 0 === $request->getCategoryList()->count()) {
             session()->flash('error', trans('firefly.select_more_than_one_category'));
 
             return redirect(route('reports.index'));
         }
 
-        if (0 === $request->getBudgetList()->count() && 'budget' === $reportType) {
+        if ('budget' === $reportType && 0 === $request->getBudgetList()->count()) {
             session()->flash('error', trans('firefly.select_more_than_one_budget'));
 
             return redirect(route('reports.index'));
         }
 
-        if (0 === $request->getTagList()->count() && 'tag' === $reportType) {
+        if ('tag' === $reportType && 0 === $request->getTagList()->count()) {
             session()->flash('error', trans('firefly.select_more_than_one_tag'));
 
             return redirect(route('reports.index'));
diff --git a/app/Http/Controllers/RuleController.php b/app/Http/Controllers/RuleController.php
index 655a4ae34d..67050297c9 100644
--- a/app/Http/Controllers/RuleController.php
+++ b/app/Http/Controllers/RuleController.php
@@ -42,9 +42,7 @@ use Illuminate\Http\JsonResponse;
 use Illuminate\Http\Request;
 use Illuminate\Support\Collection;
 use Log;
-use Preferences;
 use Throwable;
-use View;
 
 /**
  * Class RuleController.
@@ -88,8 +86,7 @@ class RuleController extends Controller
      * @param Request   $request
      * @param RuleGroup $ruleGroup
      *
-     * @return View
-     *
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function create(Request $request, RuleGroup $ruleGroup)
     {
@@ -158,7 +155,7 @@ class RuleController extends Controller
      *
      * @param Rule $rule
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Rule $rule)
     {
@@ -183,7 +180,7 @@ class RuleController extends Controller
         $this->ruleRepos->destroy($rule);
 
         session()->flash('success', trans('firefly.deleted_rule', ['title' => $title]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('rules.delete.uri'));
     }
@@ -204,8 +201,7 @@ class RuleController extends Controller
      * @param Request $request
      * @param Rule    $rule
      *
-     * @return View
-     *
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Request $request, Rule $rule)
     {
@@ -288,7 +284,7 @@ class RuleController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index()
     {
@@ -356,7 +352,7 @@ class RuleController extends Controller
         $data = $request->getRuleData();
         $rule = $this->ruleRepos->store($data);
         session()->flash('success', trans('firefly.stored_new_rule', ['title' => $rule->title]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         // redirect to show bill.
         if ('true' === $request->get('return_to_bill') && (int)$request->get('bill_id') > 0) {
@@ -368,16 +364,16 @@ class RuleController extends Controller
             return redirect($this->getPreviousUri('bills.create.uri')); // @codeCoverageIgnore
         }
 
+        $redirect = redirect($this->getPreviousUri('rules.create.uri'));
 
         if (1 === (int)$request->get('create_another')) {
             // @codeCoverageIgnoreStart
             session()->put('rules.create.fromStore', true);
-
-            return redirect(route('rules.create', [$data['rule_group_id']]))->withInput();
+            $redirect = redirect(route('rules.create', [$data['rule_group_id']]))->withInput();
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('rules.create.uri'));
+        return $redirect;
     }
 
     /**
@@ -529,17 +525,17 @@ class RuleController extends Controller
         $this->ruleRepos->update($rule, $data);
 
         session()->flash('success', trans('firefly.updated_rule', ['title' => $rule->title]));
-        Preferences::mark();
-
+        app('preferences')->mark();
+        $redirect = redirect($this->getPreviousUri('rules.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             session()->put('rules.edit.fromUpdate', true);
 
-            return redirect(route('rules.edit', [$rule->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('rules.edit', [$rule->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('rules.edit.uri'));
+        return $redirect;
     }
 
     /**
diff --git a/app/Http/Controllers/RuleGroupController.php b/app/Http/Controllers/RuleGroupController.php
index 27d3005ee5..a0c20b3d37 100644
--- a/app/Http/Controllers/RuleGroupController.php
+++ b/app/Http/Controllers/RuleGroupController.php
@@ -30,8 +30,6 @@ use FireflyIII\Models\RuleGroup;
 use FireflyIII\Repositories\Account\AccountRepositoryInterface;
 use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
 use Illuminate\Http\Request;
-use Preferences;
-use View;
 
 /**
  * Class RuleGroupController.
@@ -56,7 +54,7 @@ class RuleGroupController extends Controller
     }
 
     /**
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function create()
     {
@@ -75,7 +73,7 @@ class RuleGroupController extends Controller
     /**
      * @param RuleGroup $ruleGroup
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(RuleGroup $ruleGroup)
     {
@@ -102,7 +100,7 @@ class RuleGroupController extends Controller
         $repository->destroy($ruleGroup, $moveTo);
 
         session()->flash('success', (string)trans('firefly.deleted_rule_group', ['title' => $title]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('rule-groups.delete.uri'));
     }
@@ -183,7 +181,7 @@ class RuleGroupController extends Controller
     /**
      * @param RuleGroup $ruleGroup
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function selectTransactions(RuleGroup $ruleGroup)
     {
@@ -206,17 +204,18 @@ class RuleGroupController extends Controller
         $ruleGroup = $repository->store($data);
 
         session()->flash('success', (string)trans('firefly.created_new_rule_group', ['title' => $ruleGroup->title]));
-        Preferences::mark();
+        app('preferences')->mark();
 
+        $redirect = redirect($this->getPreviousUri('rule-groups.create.uri'));
         if (1 === (int)$request->get('create_another')) {
             // @codeCoverageIgnoreStart
             session()->put('rule-groups.create.fromStore', true);
 
-            return redirect(route('rule-groups.create'))->withInput();
+            $redirect = redirect(route('rule-groups.create'))->withInput();
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('rule-groups.create.uri'));
+        return $redirect;
     }
 
     /**
@@ -250,17 +249,17 @@ class RuleGroupController extends Controller
         $repository->update($ruleGroup, $data);
 
         session()->flash('success', (string)trans('firefly.updated_rule_group', ['title' => $ruleGroup->title]));
-        Preferences::mark();
-
+        app('preferences')->mark();
+        $redirect = redirect($this->getPreviousUri('rule-groups.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             session()->put('rule-groups.edit.fromUpdate', true);
 
-            return redirect(route('rule-groups.edit', [$ruleGroup->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('rule-groups.edit', [$ruleGroup->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('rule-groups.edit.uri'));
+        return $redirect;
     }
 }
diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php
index 4baf91f083..cdea90db85 100644
--- a/app/Http/Controllers/SearchController.php
+++ b/app/Http/Controllers/SearchController.php
@@ -26,7 +26,6 @@ use FireflyIII\Support\CacheProperties;
 use FireflyIII\Support\Search\SearchInterface;
 use Illuminate\Http\Request;
 use Illuminate\Support\Collection;
-use View;
 
 /**
  * Class SearchController.
@@ -54,7 +53,7 @@ class SearchController extends Controller
      * @param Request         $request
      * @param SearchInterface $searcher
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(Request $request, SearchInterface $searcher)
     {
diff --git a/app/Http/Controllers/TagController.php b/app/Http/Controllers/TagController.php
index 247ef130e3..c67193287e 100644
--- a/app/Http/Controllers/TagController.php
+++ b/app/Http/Controllers/TagController.php
@@ -63,9 +63,7 @@ class TagController extends Controller
     }
 
     /**
-     * Create a new tag.
-     *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function create()
     {
@@ -86,7 +84,7 @@ class TagController extends Controller
      *
      * @param Tag $tag
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function delete(Tag $tag)
     {
@@ -119,7 +117,7 @@ class TagController extends Controller
      *
      * @param Tag $tag
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Tag $tag)
     {
@@ -136,11 +134,11 @@ class TagController extends Controller
     }
 
     /**
-     * View all tags.
+     * Edit a tag.
      *
      * @param TagRepositoryInterface $repository
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(TagRepositoryInterface $repository)
     {
@@ -164,16 +162,16 @@ class TagController extends Controller
     }
 
     /**
-     * @param Request                $request
-     * @param TagRepositoryInterface $repository
-     * @param Tag                    $tag
-     * @param string                 $moment
+     * @param Request     $request
+     * @param Tag         $tag
+     * @param string|null $moment
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function show(Request $request, TagRepositoryInterface $repository, Tag $tag, string $moment = '')
+    public function show(Request $request, Tag $tag, string $moment = null)
     {
         // default values:
+        $moment       = $moment ?? '';
         $subTitle     = $tag->tag;
         $subTitleIcon = 'fa-tag';
         $page         = (int)$request->get('page');
@@ -187,7 +185,7 @@ class TagController extends Controller
         // prep for "all" view.
         if ('all' === $moment) {
             $subTitle = trans('firefly.all_journals_for_tag', ['tag' => $tag->tag]);
-            $start    = $repository->firstUseDate($tag);
+            $start    = $this->repository->firstUseDate($tag);
             $end      = new Carbon;
             $path     = route('tags.show', [$tag->id, 'all']);
         }
@@ -225,7 +223,7 @@ class TagController extends Controller
         $transactions = $collector->getPaginatedJournals();
         $transactions->setPath($path);
 
-        $sums = $repository->sumsOfTag($tag, $start, $end);
+        $sums = $this->repository->sumsOfTag($tag, $start, $end);
 
         return view('tags.show', compact('tag', 'sums', 'periods', 'subTitle', 'subTitleIcon', 'transactions', 'start', 'end', 'moment'));
     }
@@ -243,15 +241,17 @@ class TagController extends Controller
         session()->flash('success', (string)trans('firefly.created_tag', ['tag' => $data['tag']]));
         app('preferences')->mark();
 
+        $redirect = redirect($this->getPreviousUri('tags.create.uri'));
         if (1 === (int)$request->get('create_another')) {
             // @codeCoverageIgnoreStart
             session()->put('tags.create.fromStore', true);
 
-            return redirect(route('tags.create'))->withInput();
+            $redirect = redirect(route('tags.create'))->withInput();
             // @codeCoverageIgnoreEnd
         }
 
-        return redirect($this->getPreviousUri('tags.create.uri'));
+        return $redirect;
+
     }
 
     /**
@@ -268,16 +268,17 @@ class TagController extends Controller
         session()->flash('success', (string)trans('firefly.updated_tag', ['tag' => $data['tag']]));
         app('preferences')->mark();
 
+        $redirect = redirect($this->getPreviousUri('tags.edit.uri'));
         if (1 === (int)$request->get('return_to_edit')) {
             // @codeCoverageIgnoreStart
             session()->put('tags.edit.fromUpdate', true);
 
-            return redirect(route('tags.edit', [$tag->id]))->withInput(['return_to_edit' => 1]);
+            $redirect = redirect(route('tags.edit', [$tag->id]))->withInput(['return_to_edit' => 1]);
             // @codeCoverageIgnoreEnd
         }
 
         // redirect to previous URL.
-        return redirect($this->getPreviousUri('tags.edit.uri'));
+        return $redirect;
     }
 
     /**
diff --git a/app/Http/Controllers/Transaction/BulkController.php b/app/Http/Controllers/Transaction/BulkController.php
index 3c49398d12..a2648b35e1 100644
--- a/app/Http/Controllers/Transaction/BulkController.php
+++ b/app/Http/Controllers/Transaction/BulkController.php
@@ -32,8 +32,6 @@ use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
 use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
 use Illuminate\Support\Collection;
 use Log;
-use Preferences;
-use View;
 
 /**
  * Class BulkController
@@ -45,7 +43,7 @@ class BulkController extends Controller
 
 
     /**
-     *
+     * BulkController constructor.
      */
     public function __construct()
     {
@@ -65,7 +63,7 @@ class BulkController extends Controller
     /**
      * @param Collection $journals
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function edit(Collection $journals)
     {
@@ -129,7 +127,7 @@ class BulkController extends Controller
             }
         }
 
-        Preferences::mark();
+        app('preferences')->mark();
         $request->session()->flash('success', trans('firefly.mass_edited_transactions_success', ['amount' => $count]));
 
         // redirect to previous URL:
diff --git a/app/Http/Controllers/Transaction/ConvertController.php b/app/Http/Controllers/Transaction/ConvertController.php
index 6a4b644244..c6f45d7790 100644
--- a/app/Http/Controllers/Transaction/ConvertController.php
+++ b/app/Http/Controllers/Transaction/ConvertController.php
@@ -61,6 +61,7 @@ class ConvertController extends Controller
         );
     }
 
+
     /**
      * @param TransactionType    $destinationType
      * @param TransactionJournal $journal
@@ -109,6 +110,7 @@ class ConvertController extends Controller
         );
     }
 
+
     /**
      * @param Request            $request
      * @param TransactionType    $destinationType
@@ -124,6 +126,7 @@ class ConvertController extends Controller
         // @codeCoverageIgnoreStart
         if ($this->isOpeningBalance($journal)) {
             Log::debug('Journal is opening balance, return to account.');
+
             return $this->redirectToAccount($journal);
         }
         // @codeCoverageIgnoreEnd
@@ -160,6 +163,7 @@ class ConvertController extends Controller
         return redirect(route('transactions.show', [$journal->id]));
     }
 
+
     /**
      * @param TransactionJournal $journal
      * @param TransactionType    $destinationType
@@ -215,6 +219,7 @@ class ConvertController extends Controller
         return $destination;
     }
 
+
     /**
      * @param TransactionJournal $journal
      * @param TransactionType    $destinationType
diff --git a/app/Http/Controllers/Transaction/LinkController.php b/app/Http/Controllers/Transaction/LinkController.php
index 686b73c082..eca642a990 100644
--- a/app/Http/Controllers/Transaction/LinkController.php
+++ b/app/Http/Controllers/Transaction/LinkController.php
@@ -29,7 +29,6 @@ use FireflyIII\Models\TransactionJournalLink;
 use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
 use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
 use Log;
-use Preferences;
 use URL;
 
 /**
@@ -86,7 +85,7 @@ class LinkController extends Controller
         $this->repository->destroyLink($link);
 
         session()->flash('success', (string)trans('firefly.deleted_link'));
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect((string)session('journal_links.delete.uri'));
     }
diff --git a/app/Http/Controllers/Transaction/MassController.php b/app/Http/Controllers/Transaction/MassController.php
index ae043d9c19..cebd47ef29 100644
--- a/app/Http/Controllers/Transaction/MassController.php
+++ b/app/Http/Controllers/Transaction/MassController.php
@@ -37,7 +37,6 @@ use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
 use FireflyIII\Transformers\TransactionTransformer;
 use Illuminate\Support\Collection;
 use Illuminate\View\View as IlluminateView;
-use Preferences;
 use Symfony\Component\HttpFoundation\ParameterBag;
 
 /**
@@ -109,7 +108,7 @@ class MassController extends Controller
             ++$count;
         }
 
-        Preferences::mark();
+        app('preferences')->mark();
         session()->flash('success', trans('firefly.mass_deleted_transactions_success', ['amount' => $count]));
 
         // redirect to previous URL:
@@ -241,7 +240,7 @@ class MassController extends Controller
                 }
             }
         }
-        Preferences::mark();
+        app('preferences')->mark();
         session()->flash('success', trans('firefly.mass_edited_transactions_success', ['amount' => $count]));
 
         // redirect to previous URL:
diff --git a/app/Http/Controllers/Transaction/SingleController.php b/app/Http/Controllers/Transaction/SingleController.php
index d0358b7a8b..261119e15b 100644
--- a/app/Http/Controllers/Transaction/SingleController.php
+++ b/app/Http/Controllers/Transaction/SingleController.php
@@ -135,14 +135,14 @@ class SingleController extends Controller
     }
 
     /**
-     * @param Request $request
-     * @param string  $what
+     * @param Request     $request
+     * @param string|null $what
      *
-     * @return View
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function create(Request $request, string $what = TransactionType::DEPOSIT)
+    public function create(Request $request, string $what = null)
     {
-        $what           = strtolower($what);
+        $what           = strtolower($what ?? TransactionType::DEPOSIT);
         $what           = (string)($request->old('what') ?? $what);
         $budgets        = ExpandedForm::makeSelectListWithEmpty($this->budgets->getActiveBudgets());
         $preFilled      = session()->has('preFilled') ? session('preFilled') : [];
@@ -220,7 +220,7 @@ class SingleController extends Controller
 
         $this->repository->destroy($transactionJournal);
 
-        Preferences::mark();
+        app('preferences')->mark();
 
         return redirect($this->getPreviousUri('transactions.delete.uri'));
     }
@@ -296,7 +296,7 @@ class SingleController extends Controller
 
         // amounts for withdrawals and deposits:
         // amount, native_amount, source_amount, destination_amount
-        if (($journal->isWithdrawal() || $journal->isDeposit()) && null !== $pTransaction->foreign_amount) {
+        if (null !== $pTransaction->foreign_amount && ($journal->isWithdrawal() || $journal->isDeposit())) {
             $preFilled['amount']   = $pTransaction->foreign_amount;
             $preFilled['currency'] = $pTransaction->foreignCurrency;
         }
@@ -355,7 +355,7 @@ class SingleController extends Controller
         event(new StoredTransactionJournal($journal, $data['piggy_bank_id']));
 
         session()->flash('success', (string)trans('firefly.stored_journal', ['description' => $journal->description]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         // @codeCoverageIgnoreStart
         if (true === $createAnother) {
@@ -412,7 +412,7 @@ class SingleController extends Controller
 
         $type = strtolower($this->repository->getTransactionType($journal));
         session()->flash('success', (string)trans('firefly.updated_' . $type, ['description' => $data['description']]));
-        Preferences::mark();
+        app('preferences')->mark();
 
         // @codeCoverageIgnoreStart
         if (1 === (int)$request->get('return_to_edit')) {
diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/TransactionController.php
index d1c67291aa..471eac4562 100644
--- a/app/Http/Controllers/TransactionController.php
+++ b/app/Http/Controllers/TransactionController.php
@@ -18,6 +18,8 @@
  * You should have received a copy of the GNU General Public License
  * along with Firefly III. If not, see .
  */
+/** @noinspection CallableParameterUseCaseInTypeContextInspection */
+/** @noinspection MoreThanThreeArgumentsInspection */
 declare(strict_types=1);
 
 namespace FireflyIII\Http\Controllers;
@@ -71,13 +73,12 @@ class TransactionController extends Controller
     /**
      * Index for a range of transactions.
      *
-     * @param Request $request
-     * @param string  $what
-     * @param Carbon  $start
-     * @param Carbon  $end
-     *
-     * @return View
+     * @param Request     $request
+     * @param string      $what
+     * @param Carbon|null $start
+     * @param Carbon|null $end
      *
+     * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
     public function index(Request $request, string $what, Carbon $start = null, Carbon $end = null)
     {
@@ -189,7 +190,7 @@ class TransactionController extends Controller
                 }
             }
         }
-        Preferences::mark();
+        app('preferences')->mark();
 
         return response()->json([true]);
     }
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
index 4e8408129c..0689d4b65e 100644
--- a/app/Http/Middleware/Authenticate.php
+++ b/app/Http/Middleware/Authenticate.php
@@ -73,6 +73,7 @@ class Authenticate
         return $next($request);
     }
 
+
     /**
      * Determine if the user is logged in to any of the given guards.
      *
diff --git a/app/Http/Middleware/AuthenticateTwoFactor.php b/app/Http/Middleware/AuthenticateTwoFactor.php
index 3e5715377e..af3d68a4b1 100644
--- a/app/Http/Middleware/AuthenticateTwoFactor.php
+++ b/app/Http/Middleware/AuthenticateTwoFactor.php
@@ -51,6 +51,7 @@ class AuthenticateTwoFactor
         $this->auth = $auth;
     }
 
+
     /**
      * @param         $request
      * @param Closure $next
diff --git a/app/Http/Middleware/Sandstorm.php b/app/Http/Middleware/Sandstorm.php
index f992852ce8..8e9b3eb8f1 100644
--- a/app/Http/Middleware/Sandstorm.php
+++ b/app/Http/Middleware/Sandstorm.php
@@ -48,7 +48,6 @@ class Sandstorm
      * @return mixed
      *
      * @throws FireflyException
-     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
      */
     public function handle(Request $request, Closure $next, $guard = null)
     {
diff --git a/app/Http/Middleware/StartFireflySession.php b/app/Http/Middleware/StartFireflySession.php
index 4cb809999a..77e90c55f6 100644
--- a/app/Http/Middleware/StartFireflySession.php
+++ b/app/Http/Middleware/StartFireflySession.php
@@ -41,7 +41,7 @@ class StartFireflySession extends StartSession
     {
         $uri    = $request->fullUrl();
         $strpos = strpos($uri, 'jscript');
-        if ('GET' === $request->method() && $request->route() && !$request->ajax() && false === $strpos) {
+        if (false === $strpos && 'GET' === $request->method() && $request->route() && !$request->ajax()) {
             $session->setPreviousUrl($uri);
         }
     }
diff --git a/app/Http/Requests/AccountFormRequest.php b/app/Http/Requests/AccountFormRequest.php
index 289be2b07b..85d717990a 100644
--- a/app/Http/Requests/AccountFormRequest.php
+++ b/app/Http/Requests/AccountFormRequest.php
@@ -33,7 +33,7 @@ class AccountFormRequest extends Request
     /**
      * @return bool
      */
-    public function authorize()
+    public function authorize(): bool
     {
         // Only allow logged in users
         return auth()->check();
@@ -66,7 +66,7 @@ class AccountFormRequest extends Request
     /**
      * @return array
      */
-    public function rules()
+    public function rules(): array
     {
         $accountRoles   = implode(',', config('firefly.accountRoles'));
         $types          = implode(',', array_keys(config('firefly.subTitlesByIdentifier')));
diff --git a/tests/Feature/Controllers/Admin/UpdateControllerTest.php b/tests/Feature/Controllers/Admin/UpdateControllerTest.php
index 4b17eaf5cd..0d9212bb35 100644
--- a/tests/Feature/Controllers/Admin/UpdateControllerTest.php
+++ b/tests/Feature/Controllers/Admin/UpdateControllerTest.php
@@ -151,11 +151,10 @@ class UpdateControllerTest extends TestCase
         $falseConfig       = new Configuration;
         $falseConfig->data = false;
         FireflyConfig::shouldReceive('get')->withArgs(['is_demo_site', false])->once()->andReturn($falseConfig);
+        FireflyConfig::shouldReceive('set')->withArgs(['last_update_check', Mockery::any()])->once()->andReturn(new Configuration);
 
         $version  = config('firefly.version') . '-alpha';
-        $releases = [
-            new Release(['id' => 'x', 'title' => $version, 'content' => '', 'updated' => new Carbon]),
-        ];
+        $releases = [];
         $updater  = $this->mock(UpdateRequest::class);
         $updater->shouldReceive('call')->andThrow(FireflyException::class, 'Something broke.');
         $updater->shouldReceive('getReleases')->andReturn($releases);