diff --git a/dta.zip b/dta.zip
index bf683ed10c2524ba6fa4e60403149184f3f4f67d..c4aeafad02cc5f5c807c2b7c264f98588c25e477 100644
Binary files a/dta.zip and b/dta.zip differ
diff --git a/dta/classes/privacy/provider.php b/dta/classes/privacy/provider.php
index 00558e7ed58fd10bd44d4c3dbfa76d92f9dc6fb6..6ad71ed5787772be714ba3373e13ec416868e1a5 100644
--- a/dta/classes/privacy/provider.php
+++ b/dta/classes/privacy/provider.php
@@ -28,6 +28,13 @@ use core_privacy\local\request\writer;
 use core_privacy\local\request\contextlist;
 use mod_assign\privacy\assign_plugin_request_data;
 
+/**
+ * provider for data privacy
+ *
+ * @package assignsubmission_dta
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @copyright Gero Lueckemeyer and student project teams
+ */
 class provider implements \core_privacy\local\metadata\provider,
         \mod_assign\privacy\assignsubmission_provider,
         \mod_assign\privacy\assignsubmission_user_provider {
diff --git a/dta/lib.php b/dta/lib.php
index c090bfc9e6b6524bbb50867fdc2d5e9b6e568103..7f24d41f5b50b987dab7e080ea2c5b172ed04378 100644
--- a/dta/lib.php
+++ b/dta/lib.php
@@ -37,9 +37,9 @@ function assignsubmission_dta_pluginfile(
     $course,
     $cm,
     context $context,
-    $filearea,
+    string $filearea,
     $args,
-    $forcedownload
+    bool $forcedownload
     ) {
     global $DB, $CFG;
 
diff --git a/dta/locallib.php b/dta/locallib.php
index 3aaadac7263cc7e23607169d7147b66634e674d9..fa9e0f9fd642d83528305599253ae6e2fc607f33 100644
--- a/dta/locallib.php
+++ b/dta/locallib.php
@@ -174,7 +174,7 @@ class assign_submission_dta extends assign_submission_plugin {
      * @param int $userid current user
      * @return bool form elements added
      */
-    public function get_form_elements_for_user($submissionorgrade, MoodleQuickForm $mform, stdClass $data, $userid): bool {
+    public function get_form_elements_for_user($submissionorgrade, MoodleQuickForm $mform, stdClass $data, int $userid): bool {
         // Prepare submission filearea.
         $data = file_prepare_standard_filemanager(
             $data,
@@ -228,7 +228,7 @@ class assign_submission_dta extends assign_submission_plugin {
      * @param string $areaid filearea id to count
      * @return int
      */
-    private function count_files($submissionid, $areaid) {
+    private function count_files(int $submissionid, string $areaid) {
         $fs = get_file_storage();
         $files = $fs->get_area_files($this->assignment->get_context()->id,
             self::COMPONENT_NAME,
diff --git a/dta/utils/backend.php b/dta/utils/backend.php
index a881f9ff32548dfba4bff5655fde61bc109fb781..fc5fd83a41e1f056f66ddfc99486e8bd167e1d5b 100644
--- a/dta/utils/backend.php
+++ b/dta/utils/backend.php
@@ -14,14 +14,6 @@
 // You should have received a copy of the GNU General Public License
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
-/**
- * This file contains the backend webservice contact functionality for the DTA plugin
- *
- * @package    assignsubmission_dta
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @copyright Gero Lueckemeyer and student project teams
- */
-
 /**
  * backend webservice contact utility class
  *
@@ -48,11 +40,11 @@ class DtaBackendUtils {
     /**
      * Sends the configuration textfile uploaded by prof to the backend.
      *
-     * @param $assignment assignment this test-config belongs to
-     * @param $file uploaded test-config
+     * @param stdClass $assignment assignment this test-config belongs to
+     * @param stdClass $file uploaded test-config
      * @return bool true if no error occurred
      */
-    public static function sendtestconfigtobackend($assignment, $file): bool {
+    public static function sendtestconfigtobackend(stdClass $assignment, $file): bool {
         $backendaddress = self::getbackendbaseurl();
         if (empty($backendaddress)) {
             return true;
@@ -78,11 +70,11 @@ class DtaBackendUtils {
     /**
      * Sends sumbission config or archive to backend to be tested.
      *
-     * @param $assignment assignment this submission is done for
-     * @param $file submission config file or archive with submission
+     * @param stdClass $assignment assignment this submission is done for
+     * @param stdClass $file submission config file or archive with submission
      * @return string json string with testresults or null on error
      */
-    public static function sendsubmissiontobackend($assignment, $file): ?string {
+    public static function sendsubmissiontobackend(stdClass $assignment, $file): ?string {
         $backendaddress = self::getbackendbaseurl();
         if (empty($backendaddress)) {
             return true;
diff --git a/dta/utils/database.php b/dta/utils/database.php
index 8d54c0607fc2b1c56b807cb410689d1fb096ecc7..d171813d39316992b8d7b33acb55db1f29b1dfe8 100644
--- a/dta/utils/database.php
+++ b/dta/utils/database.php
@@ -37,7 +37,7 @@ class DbUtils {
      *
      * @param int $assignmentid assignment id to search for
      * @param int $submissionid submission id to search for
-     * @return DttResultSummary representing given submission
+     * @return DtaResultSummary representing given submission
      */
     public static function getresultsummaryfromdatabase(
         int $assignmentid,
@@ -88,9 +88,9 @@ class DbUtils {
      * save given result summary and single results to database
      * under given assignment and submission id
      *
-     * @param $assignmentid assigment this is submission is linked to
-     * @param $submissionid submission of this result
-     * @param $summary instance to persist
+     * @param int $assignmentid assigment this is submission is linked to
+     * @param int $submissionid submission of this result
+     * @param DtaResultSummary $summary instance to persist
      */
     public static function storeresultsummarytodatabase(
         int $assignmentid,
diff --git a/dta/utils/view.php b/dta/utils/view.php
index ebd223a3c6b4df92cfee2b9f57a6ca956fc2e0e2..41409daf3768d8326090b2b3a1c91d624d56c946 100644
--- a/dta/utils/view.php
+++ b/dta/utils/view.php
@@ -31,8 +31,8 @@ class view_submission_utils {
     /**
      * generates a short summary html
      *
-     * @param $assignmentid assignment
-     * @param $submissionid submission to create a report for
+     * @param int $assignmentid id of the assignment
+     * @param int $submissionid id of the submission for which to create a report
      * @return string html
      */
     public static function generatesummaryhtml(
@@ -87,8 +87,8 @@ class view_submission_utils {
     /**
      * generates detailed view html
      *
-     * @param $assignmentid assignment
-     * @param $submissionid submission to create a report for
+     * @param int $assignmentid id of the assignment
+     * @param int $submissionid id of the submission for which to create a report
      */
     public static function generatedetailhtml(
         int $assignmentid,
diff --git a/dta/version.php b/dta/version.php
index b7de914023700775b20887a2e06ce73f6e2975e8..c1d02a029ae402daa95c32134420f8bf95e881a3 100644
--- a/dta/version.php
+++ b/dta/version.php
@@ -24,8 +24,8 @@
 
 defined('MOODLE_INTERNAL') || die();
 
-$plugin->version   = 2000000;
-$plugin->requires  = 2019111800; // Moodle 3.8.
+$plugin->version   = 3000000;
+$plugin->requires  = 2020061525; // Moodle 3.9 LTS. Will likely run with unsupported older versions of the 3.x branch.
 $plugin->component = 'assignsubmission_dta';
 $plugin->maturity  = MATURITY_STABLE;
-$plugin->release   = "2.0.0";
+$plugin->release   = "3.0.0";