diff --git a/.gitignore b/.gitignore
index a26e73e25994deb8ca53008bdf30dd74635b2306..c3d4faa62fe47f777ab03e9e1d93936efd15a649 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,11 @@
 .DS_STORE
-*.sublime-project
-*.sublime-workspace
-vendor
-classes/log/error_log.txt
-composer.phar
-.idea/
+/.idea
+/*.sublime-project
+/*.sublime-workspace
+/classes/log/error_log.txt
+/composer.phar
+/node_modules
+/package-lock.json
+/vendor
+/xapi
+/xapi.zip
diff --git a/.travis.yml b/.travis.yml
index d1aa3a456600edab6f682f42709bf75df94e1ea0..2cc02c48451b1246103e51cf1dcedecb511a0878 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,47 +1,72 @@
 language: php
-
 sudo: false
 
 cache:
-    directories:
-        - $HOME/.composer/cache
+  directories:
+    - $HOME/.composer/cache
 
 php:
-    - 5.6
-    - 7.0
-    - 7.1
+  - 7.1
+  - 7.0
+  - 5.6
 
 env:
-    global:
-        - MOODLE_BRANCH=MOODLE_32_STABLE
-    matrix:
-        - DB=pgsql
-#       - DB=mysqli
+  global:
+    - MOODLE_BRANCH=MOODLE_32_STABLE
+  matrix:
+    - DB=pgsql
+#   - DB=mysqli
 
 before_install:
-    - composer install --no-interaction
-    - phpenv config-rm xdebug.ini
-    - nvm install node
-    - cd ../..
-    - composer selfupdate
-    - composer create-project -n --no-dev --prefer-dist moodlerooms/moodle-plugin-ci ci ^2
-    - export PATH="$(cd ci/bin; pwd):$(cd ci/vendor/bin; pwd):$PATH"
+  - echo $TRAVIS_PHP_VERSION
+  - echo "Travis tag $TRAVIS_TAG"
+  - echo "Travis branch $TRAVIS_BRANCH"
+  - composer install --no-interaction
+  - phpenv config-rm xdebug.ini
+  - nvm install 8
+  - cd ../..
+  - composer selfupdate
+  - composer create-project -n --no-dev --prefer-dist moodlerooms/moodle-plugin-ci ci ^2
+  - export PATH="$(cd ci/bin; pwd):$(cd ci/vendor/bin; pwd):$PATH"
 
 install:
-    - moodle-plugin-ci install
+  - moodle-plugin-ci install
 
 script:
-#   - moodle-plugin-ci phplint
-#   - moodle-plugin-ci phpcpd
-#   - moodle-plugin-ci phpmd
-#   - moodle-plugin-ci codechecker
-    - moodle-plugin-ci validate
-    - moodle-plugin-ci savepoints
-#   - moodle-plugin-ci mustache
-#   - moodle-plugin-ci grunt
-    - moodle-plugin-ci phpunit
-#   - moodle-plugin-ci behat
-
-    # run codechecker without the vendor/ directory
-    - rm -rf "$(find -type d -name xapi)/vendor"
-    - moodle-plugin-ci codechecker
+# - moodle-plugin-ci phplint
+# - moodle-plugin-ci phpcpd
+# - moodle-plugin-ci phpmd
+# - moodle-plugin-ci codechecker
+  - moodle-plugin-ci validate
+  - moodle-plugin-ci savepoints
+# - moodle-plugin-ci mustache
+# - moodle-plugin-ci grunt
+  - moodle-plugin-ci phpunit
+# - moodle-plugin-ci behat
+
+  # run codechecker without the vendor/ directory
+  - rm -rf "$(find -type d -name xapi)/vendor"
+  - moodle-plugin-ci codechecker
+  - cd $TRAVIS_BUILD_DIR
+
+after_success:
+  - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$TRAVIS_PHP_VERSION" == "7.1" ]; then
+    git fetch --tags;
+    npm i semantic-release;
+    npm i last-release-git;
+    export BUILD_LEADER_ID=1;
+    ./node_modules/.bin/semantic-release pre && ./node_modules/.bin/semantic-release post;
+    fi
+
+before_deploy:
+  - sh ./scripts/generateVersionFile.sh
+  - sh ./scripts/generateZipFile.sh
+
+deploy:
+  provider: releases
+  api_key: $GH_TOKEN
+  file: xapi.zip
+  skip_cleanup: true
+  on:
+    tags: true
+    php: 7.1
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 36e004155e108ab7a59b0075acc9343fb1b91a34..0000000000000000000000000000000000000000
--- a/build.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env sh
-
-# Creates a folder to zip.
-rm -f xapi.zip
-php -r "readfile('https://getcomposer.org/installer');" | php
-php composer.phar install --no-interaction --no-dev
-cp -r . ../moodle_logstore_build
-
-# Removes unused files and folders.
-find ../moodle_logstore_build -type d -name 'tests' | xargs rm -rf
-find ../moodle_logstore_build -type d -name 'docs' | xargs rm -rf
-find ../moodle_logstore_build -type d -name '.git' | xargs rm -rf
-find ../moodle_logstore_build -type f -name '.gitignore' | xargs rm -rf
-find ../moodle_logstore_build -type f -name 'composer.*' | xargs rm -rf
-find ../moodle_logstore_build -type f -name 'phpunit.*' | xargs rm -rf
-find ../moodle_logstore_build -type f -name '*.md' | xargs rm -rf
-
-# Creates the zip file.
-mv ../moodle_logstore_build xapi
-zip -r xapi.zip xapi -x "xapi/.git/**/*"
-rm -rf xapi
-
-# Updates Github.
-git add xapi.zip
-git commit -m "Builds zip file."
-git push
diff --git a/classes/log/store.php b/classes/log/store.php
index 23da02e6489cb8d061d84c7fcdefb0abecc62672..e803580072014f077387478d67d117ddcf245453 100755
--- a/classes/log/store.php
+++ b/classes/log/store.php
@@ -65,10 +65,14 @@ class store extends php_obj implements log_writer {
      * @param log_manager $manager
      */
     public function __construct(log_manager $manager) {
+        global $CFG;
         $this->helper_setup($manager);
         $this->logguests = $this->get_config('logguests', 1);
         $routes = $this->get_config('routes', '');
         $this->routes = $routes === '' ? [] : explode(',', $routes);
+        if (!empty($CFG->debug) and $CFG->debug >= DEBUG_DEVELOPER) {
+            $this->loggingenabled = true;
+        }
     }
 
     /**
diff --git a/lib/emitter/src/Events/AssignmentGraded.php b/lib/emitter/src/Events/AssignmentGraded.php
index fccdfe51f0934b1e3b435817f1d53c25f44d19cf..94aa695423e1e68722fe1645cf77dd9ce41bd49f 100644
--- a/lib/emitter/src/Events/AssignmentGraded.php
+++ b/lib/emitter/src/Events/AssignmentGraded.php
@@ -58,14 +58,7 @@ class AssignmentGraded extends Event {
         ]);
 
         // Excluded from array merge to make sure that the actor is overwritten e.g. if a different IFI is used.
-        $statement['actor'] = [
-            'objectType' => 'Agent',
-            'name' => $opts['graded_user_name'],
-            'account' => [
-                'homePage' => $opts['graded_user_url'],
-                'name' => $opts['graded_user_id'],
-            ],
-        ];
+        $statement['actor'] = $this->read_user($opts, "graded_user");
 
         if (!is_null($opts['grade_success'])) {
             $statement['result']['success'] = $opts['grade_success'];
diff --git a/lib/translator/src/Events/AssignmentGraded.php b/lib/translator/src/Events/AssignmentGraded.php
index 053b85e89d1b02981fead41a9075fb65607a8ea3..4324e26dff25b1764029f9e684fdcb460103cff7 100644
--- a/lib/translator/src/Events/AssignmentGraded.php
+++ b/lib/translator/src/Events/AssignmentGraded.php
@@ -51,6 +51,7 @@ class AssignmentGraded extends ModuleViewed {
             'graded_user_id' => $opts['graded_user']->id,
             'graded_user_url' => $opts['graded_user']->url,
             'graded_user_name' => $opts['graded_user']->fullname,
+            'graded_user_email' => $opts['graded_user']->email,
             'grade_score_raw' => $scoreraw,
             'grade_score_min' => $scoremin,
             'grade_score_max' => $scoremax,
diff --git a/lib/translator/src/Events/CourseCompleted.php b/lib/translator/src/Events/CourseCompleted.php
index b572e0a7064ce0fde033ad02dd9d68e1418b3f01..277eab82f8da187cc8774f58b3d42048d594c18c 100644
--- a/lib/translator/src/Events/CourseCompleted.php
+++ b/lib/translator/src/Events/CourseCompleted.php
@@ -34,6 +34,7 @@ class CourseCompleted extends CourseViewed {
             'user_id' => $opts['relateduser']->id,
             'user_url' => $opts['relateduser']->url,
             'user_name' => $opts['relateduser']->fullname,
+            'user_email' => $opts['relateduser']->email,
         ])];
     }
 }
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..4ab8460c6c5fd65f333c6eaebe1f8c0d1b4ee888
--- /dev/null
+++ b/package.json
@@ -0,0 +1,10 @@
+{
+  "name": "moodle-logstore_xapi",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/xAPI-vle/moodle-logstore_xapi.git"
+  },
+  "release": {
+    "getLastRelease": "last-release-git"
+  }
+}
diff --git a/scripts/generateVersionFile.sh b/scripts/generateVersionFile.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e57105cc3c3b52b1d44b1a670dc177f2eef71d4d
--- /dev/null
+++ b/scripts/generateVersionFile.sh
@@ -0,0 +1,13 @@
+release="$TRAVIS_TAG"
+
+year=$(date +"%Y")
+
+today=$(date +"%Y-%m-%d")
+todaysReleases=$(git log --tags --simplify-by-decoration --pretty="format:%ai %d" | sort -r | grep "$today" | wc -l | tr -d '[:space:]')
+
+versionPrefix=$(date +"%Y%m%d")
+versionSuffix=$(printf %02d $todaysReleases)
+version="$versionPrefix$versionSuffix"
+
+template=$(cat ./scripts/templateVersionFile)
+eval "echo \"$template\"" > version.php
diff --git a/scripts/generateZipFile.sh b/scripts/generateZipFile.sh
new file mode 100755
index 0000000000000000000000000000000000000000..686097c3ef4a2de57d8f1d3cdfadcfddcd66bd9a
--- /dev/null
+++ b/scripts/generateZipFile.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env sh
+
+# Installs composer production dependencies.
+rm -rf vendor
+composer install --no-interaction --no-dev
+
+# Creates folder to zip.
+rm -rf xapi
+mkdir -p ./xapi/classes && cp -r ./classes ./xapi
+mkdir -p ./xapi/db && cp -r ./db ./xapi
+mkdir -p ./xapi/lang && cp -r ./lang ./xapi
+mkdir -p ./xapi/lib && cp -r ./lib ./xapi
+mkdir -p ./xapi/vendor && cp -r ./vendor ./xapi
+cp ./LICENSE ./xapi
+cp ./README.md ./xapi
+cp ./settings.php ./xapi
+cp ./version.php ./xapi
+
+# Creates the zip file.
+zip -r xapi.zip xapi
diff --git a/scripts/templateVersionFile b/scripts/templateVersionFile
new file mode 100644
index 0000000000000000000000000000000000000000..c99de7516ae9049fbfd2b241bdb4eb0d8c58f4c1
--- /dev/null
+++ b/scripts/templateVersionFile
@@ -0,0 +1,30 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+/**
+ * External xapi log store plugin
+ *
+ * @package    logstore_xapi
+ * @copyright  $year Jerrett Fowler <jfowler@charitylearning.org>
+ *                  Ryan Smith <ryan.smith@ht2.co.uk>
+ *                  David Pesce <david.pesce@exputo.com>
+ * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+defined('MOODLE_INTERNAL') || die();
+\$plugin->component = 'logstore_xapi';
+\$plugin->version = $version;
+\$plugin->release = '$release';
+\$plugin->requires = 2014111000;
+\$plugin->maturity = MATURITY_STABLE;
diff --git a/version.php b/version.php
index 4e17b0c1a2fa5dc189897bf6a905c7f7afeda7ce..13f248d981ad9f1dc846aa9d5e14140d5ed9cb15 100644
--- a/version.php
+++ b/version.php
@@ -28,6 +28,6 @@ defined('MOODLE_INTERNAL') || die();
 
 $plugin->component = 'logstore_xapi';
 $plugin->version = 2017061100;
-$plugin->release = '2.0.0';
+$plugin->release = '0.0.0-development';
 $plugin->requires = 2014111000;
-$plugin->maturity = MATURITY_STABLE;
+$plugin->maturity = MATURITY_ALPHA;
diff --git a/xapi.zip b/xapi.zip
deleted file mode 100644
index aa563fc53f804551d3f52edbf60726f53f06c437..0000000000000000000000000000000000000000
Binary files a/xapi.zip and /dev/null differ