private function getViewsList($dirPath, $checkSubDir = true)
  {
    $viewsList = [];
    $iter = new \FilesystemIterator($dirPath);
    foreach ($iter as $fileInfo) {
      $filename = $fileInfo->getFilename();

      if ($filename[0] === '_') {
        continue;
      }

      // Directories
      if ($fileInfo->isDir()) {
        if (!$checkSubDir) {
          continue;
        }
        if ($filename === 'errors' || $filename === 'layouts' || 
            $filename === 'templates' || $filename === 'vendor') {
          continue;
        }
        // $subViews = self::getViewsList($fileInfo->getPathname(), false);
        $subViews = self::getViewsList($fileInfo->getPathname());

        // Prepend directory name and add the view name to current list
        foreach ($subViews as $subViewName) {
          $viewsList[] = $filename . '.' . $subViewName;
        }

        continue;
      }

      // Files
      if (substr($filename, -10) !== '.blade.php') {
        continue;
      }
      $viewName = substr($filename, 0, -10);
      $viewsList[] = $viewName;
    }

    return $viewsList;
  }