diff --git a/beat/web/navigation/context_processors.py b/beat/web/navigation/context_processors.py
index e7aa23902e4b63a36569d6e1e742602974398d94..67dfa4b1bdfd29f4d6b78fae196fec1be7b746fa 100644
--- a/beat/web/navigation/context_processors.py
+++ b/beat/web/navigation/context_processors.py
@@ -28,18 +28,13 @@
 from django.conf import settings
 from .. import __version__
 
+
 def exported_settings(request):
     return {
-        'URL_PREFIX': settings.URL_PREFIX,
-        'PREREGISTRATION_ONLY': settings.PREREGISTRATION_ONLY
+        "URL_PREFIX": settings.URL_PREFIX,
+        "PREREGISTRATION_ONLY": settings.PREREGISTRATION_ONLY,
     }
 
-def beat_version(request):
-    return {
-        'beat_version': __version__,
-    }
 
-def google_analytics(request):
-    return {
-        'google_analytics': getattr(settings, 'GOOGLE_ANALYTICS_KEY'),
-    }
+def beat_version(request):
+    return {"beat_version": __version__}
diff --git a/beat/web/settings/settings.py b/beat/web/settings/settings.py
index ae452205540443fe77d3453adcc7899ef6d96501..5f86463e36123fd3df8c2328f391bc8071ef16ca 100755
--- a/beat/web/settings/settings.py
+++ b/beat/web/settings/settings.py
@@ -28,6 +28,7 @@
 # Django settings for beat.web project.
 
 import os
+import logging
 import pkg_resources
 
 ############################################################################
@@ -36,106 +37,85 @@ import pkg_resources
 #
 ############################################################################
 
-ADMINS = (
-    ('name', 'email'),
-)
+ADMINS = (("name", "email"),)
 
-MANAGERS          = ADMINS
+MANAGERS = ADMINS
 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-TIME_ZONE         = 'Europe/Zurich'
+TIME_ZONE = "Europe/Zurich"
 # See http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE     = 'en-us'
-USE_I18N          = True
-USE_L10N          = True
-SITE_ID           = 1
+LANGUAGE_CODE = "en-us"
+USE_I18N = True
+USE_L10N = True
+SITE_ID = 1
 # This must be changed for every new instance - don't re-use this key
-SECRET_KEY        = '7o9k04*uju)4(-e29g)q+_o+z(%w_&(t^bl=)m_osg$@$y4&98'
+SECRET_KEY = "7o9k04*uju)4(-e29g)q+_o+z(%w_&(t^bl=)m_osg$@$y4&98"  # nosec
 
 # The URL prefix prepends all URLs. Example: '/platform'
 # WARNING! **Don't terminate this string with a '/' (slash)**
-URL_PREFIX        = ''
-
-# Analytics key, if you'd like to track page visits. If empty, no tracking.
-GOOGLE_ANALYTICS_KEY = ''
+URL_PREFIX = ""
 
 # Debug settings, set to False for production sites
-DEBUG             = True
+DEBUG = True
 
 USE_HTTPS_GRAVATAR = False
 
-ALLOWED_HOSTS = [
-    'localhost',
-    '127.0.0.1',
-]
+ALLOWED_HOSTS = ["localhost", "127.0.0.1"]
 
 LOGGING = {
-    'version': 1,
-    'disable_existing_loggers': False,
-    'formatters': {
-        'simple': {
-            'format': '[%(asctime)s - %(name)s] %(levelname)s: %(message)s',
-            'datefmt': "%d/%b/%Y %H:%M:%S",
-        },
-    },
-    'handlers': {
-        'discard': {
-            'level': 'DEBUG',
-            'class': 'logging.NullHandler',
-        },
-        'console': {
-            'level': 'INFO',
-            'class': 'logging.StreamHandler',
-            'formatter': 'simple',
-        },
-        'mail_admins': {
-            'level': 'ERROR',
-            'class': 'django.utils.log.AdminEmailHandler',
+    "version": 1,
+    "disable_existing_loggers": False,
+    "formatters": {
+        "simple": {
+            "format": "[%(asctime)s - %(name)s] %(levelname)s: %(message)s",
+            "datefmt": "%d/%b/%Y %H:%M:%S",
         }
     },
-    'loggers': {
-        '': {
-            'handlers': ['discard'],
-            'level': 'INFO',
-        },
-        'beat.core': {
-            'handlers': ['console'],
+    "handlers": {
+        "discard": {"level": "DEBUG", "class": "logging.NullHandler"},
+        "console": {
+            "level": "INFO",
+            "class": "logging.StreamHandler",
+            "formatter": "simple",
         },
-        'beat.core.scripts.worker': {
-            'handlers': ['discard'],
-            'propagate': False,
+        "mail_admins": {
+            "level": "ERROR",
+            "class": "django.utils.log.AdminEmailHandler",
         },
-        'beat.web': {
-            'handlers': ['console', 'mail_admins'],
-        },
-        'beat.web.scripts.scheduler': {
-            'handlers': ['console', 'mail_admins'],
-            'propagate': False,
+    },
+    "loggers": {
+        "": {"handlers": ["discard"], "level": "INFO"},
+        "beat.core": {"handlers": ["console"]},
+        "beat.core.scripts.worker": {"handlers": ["discard"], "propagate": False},
+        "beat.web": {"handlers": ["console", "mail_admins"]},
+        "beat.web.scripts.scheduler": {
+            "handlers": ["console", "mail_admins"],
+            "propagate": False,
         },
-        'beat.web.attestations.management.commands': {
-            'handlers': ['console'],
-            'propagate': False, #don't e-mail those!
+        "beat.web.attestations.management.commands": {
+            "handlers": ["console"],
+            "propagate": False,  # don't e-mail those!
         },
-        'beat.web.search.management.commands': {
-            'handlers': ['console'],
-            'propagate': False, #don't e-mail those!
+        "beat.web.search.management.commands": {
+            "handlers": ["console"],
+            "propagate": False,  # don't e-mail those!
         },
-        'beat.web.experiments.management.commands': {
-            'handlers': ['console'],
-            'propagate': False, #don't e-mail those!
+        "beat.web.experiments.management.commands": {
+            "handlers": ["console"],
+            "propagate": False,  # don't e-mail those!
         },
-        'beat.web.reports.management.commands': {
-            'handlers': ['console'],
-            'propagate': False, #don't e-mail those!
+        "beat.web.reports.management.commands": {
+            "handlers": ["console"],
+            "propagate": False,  # don't e-mail those!
         },
-        'beat.web.backend.management.commands': {
-            'handlers': ['console'],
-            'propagate': False, #don't e-mail those!
+        "beat.web.backend.management.commands": {
+            "handlers": ["console"],
+            "propagate": False,  # don't e-mail those!
         },
-        'beat.web.utils.management.commands': {
-            'handlers': ['console'],
-            'propagate': False, #don't e-mail those!
+        "beat.web.utils.management.commands": {
+            "handlers": ["console"],
+            "propagate": False,  # don't e-mail those!
         },
-    }
+    },
 }
 
 
@@ -147,17 +127,16 @@ LOGGING = {
 # Current django-jsonfield available: 0.9.19 (28.04.2016)
 #
 ##############################################################################
-import logging
+
 
 class SuppressDeprecated(logging.Filter):
     def filter(self, record):
-        WARNINGS_TO_SUPPRESS = [
-            'RemovedInDjango110Warning',
-        ]
+        WARNINGS_TO_SUPPRESS = ["RemovedInDjango110Warning"]
         # Return false to suppress message.
         return not any([warn in record.getMessage() for warn in WARNINGS_TO_SUPPRESS])
 
-warn_logger = logging.getLogger('py.warnings')
+
+warn_logger = logging.getLogger("py.warnings")
 warn_logger.addFilter(SuppressDeprecated())
 
 ##############################################################################
@@ -167,13 +146,11 @@ warn_logger.addFilter(SuppressDeprecated())
 ##############################################################################
 
 DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': 'django.sql3',
-        'OPTIONS': {
-            'timeout': 10, #seconds
-      },
-    },
+    "default": {
+        "ENGINE": "django.db.backends.sqlite3",
+        "NAME": "django.sql3",
+        "OPTIONS": {"timeout": 10},  # seconds
+    }
 }
 
 
@@ -183,12 +160,12 @@ DATABASES = {
 #
 ##############################################################################
 
-STATIC_URL          = '/static/'
-STATICFILES_DIRS    = (
+STATIC_URL = "/static/"
+STATICFILES_DIRS = (
     # Bower sources
-        pkg_resources.resource_filename('beat.web', 'static'),
+    pkg_resources.resource_filename("beat.web", "static"),
 )
-STATIC_ROOT         = 'static'
+STATIC_ROOT = "static"
 
 
 ##############################################################################
@@ -197,15 +174,15 @@ STATIC_ROOT         = 'static'
 #
 ##############################################################################
 
-PREFIX           = os.path.join(os.getcwd(), 'prefix')
-ALGORITHMS_ROOT  = os.path.join(PREFIX, 'algorithms')
-PLOTTERS_ROOT    = os.path.join(PREFIX, 'plotters')
-LIBRARIES_ROOT   = os.path.join(PREFIX, 'libraries')
-DATABASES_ROOT   = os.path.join(PREFIX, 'databases')
-DATAFORMATS_ROOT = os.path.join(PREFIX, 'dataformats')
-TOOLCHAINS_ROOT  = os.path.join(PREFIX, 'toolchains')
-EXPERIMENTS_ROOT = os.path.join(PREFIX, 'experiments')
-CACHE_ROOT       = os.path.join(PREFIX, 'cache')
+PREFIX = os.path.join(os.getcwd(), "prefix")
+ALGORITHMS_ROOT = os.path.join(PREFIX, "algorithms")
+PLOTTERS_ROOT = os.path.join(PREFIX, "plotters")
+LIBRARIES_ROOT = os.path.join(PREFIX, "libraries")
+DATABASES_ROOT = os.path.join(PREFIX, "databases")
+DATAFORMATS_ROOT = os.path.join(PREFIX, "dataformats")
+TOOLCHAINS_ROOT = os.path.join(PREFIX, "toolchains")
+EXPERIMENTS_ROOT = os.path.join(PREFIX, "experiments")
+CACHE_ROOT = os.path.join(PREFIX, "cache")
 
 
 ##############################################################################
@@ -224,21 +201,21 @@ DATASETS_ROOT_PATH = None
 #
 ##############################################################################
 
-ACCOUNT_ACTIVATION_DAYS  = 2
-ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR  = 7
-ACCOUNT_EXPIRATION_DAYS  = 365
-ACCOUNT_BLOCKAGE_AFTER_FIRST_REJECTION_DAYS  = 56
+ACCOUNT_ACTIVATION_DAYS = 2
+ACCOUNT_ACTIVATION_DAYS_FROM_SUPERVISOR = 7
+ACCOUNT_EXPIRATION_DAYS = 365
+ACCOUNT_BLOCKAGE_AFTER_FIRST_REJECTION_DAYS = 56
 
-LOGIN_REDIRECT_URL       = '/'
-LOGIN_URL                = '/login/'
-SYSTEM_ACCOUNT           = 'system'
-PLOT_ACCOUNT             = 'plot'
-PREREGISTRATION_ONLY     = False
+LOGIN_REDIRECT_URL = "/"
+LOGIN_URL = "/login/"
+SYSTEM_ACCOUNT = "system"
+PLOT_ACCOUNT = "plot"
+PREREGISTRATION_ONLY = False
 TERMS_OF_SERVICE_VERSION = 1
 LEGAL_DISCLAIMER_VERSION = 1
 
-ACCOUNTS_TO_EXCLUDE_FROM_SEARCH = ['AnonymousUser']
-ACCOUNTS_TO_EXCLUDE_FROM_TEAMS = [SYSTEM_ACCOUNT, PLOT_ACCOUNT, 'AnonymousUser']
+ACCOUNTS_TO_EXCLUDE_FROM_SEARCH = ["AnonymousUser"]
+ACCOUNTS_TO_EXCLUDE_FROM_TEAMS = [SYSTEM_ACCOUNT, PLOT_ACCOUNT, "AnonymousUser"]
 
 
 ###########################################################################
@@ -247,16 +224,16 @@ ACCOUNTS_TO_EXCLUDE_FROM_TEAMS = [SYSTEM_ACCOUNT, PLOT_ACCOUNT, 'AnonymousUser']
 #
 ###########################################################################
 
-DEFAULT_FROM_EMAIL   = 'BEAT Development Platform <beat.support@idiap.ch>'
-SERVER_EMAIL         = DEFAULT_FROM_EMAIL
+DEFAULT_FROM_EMAIL = "BEAT Development Platform <beat.support@idiap.ch>"
+SERVER_EMAIL = DEFAULT_FROM_EMAIL
 
-EMAIL_BACKEND        = 'django.core.mail.backends.console.EmailBackend'
-EMAIL_SUBJECT_PREFIX = '[BEAT/Development] '
-EMAIL_HOST           = 'localhost'
-EMAIL_PORT           = 1025
-EMAIL_HOST_USER      = ''
-EMAIL_HOST_PASSWORD  = ''
-EMAIL_USE_TLS        = False
+EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
+EMAIL_SUBJECT_PREFIX = "[BEAT/Development] "
+EMAIL_HOST = "localhost"
+EMAIL_PORT = 1025
+EMAIL_HOST_USER = ""  # nosec
+EMAIL_HOST_PASSWORD = ""  # nosec
+EMAIL_USE_TLS = False
 
 
 ##############################################################################
@@ -267,7 +244,7 @@ EMAIL_USE_TLS        = False
 
 # The scheduling interval controls the number of seconds between
 # scheduling attempts
-SCHEDULING_INTERVAL = 5 #seconds
+SCHEDULING_INTERVAL = 5  # seconds
 
 # If set, a testing panel that can accomplish scheduling activities will appear
 # at the scheduler page allowing administrators to launch scheduling activities
@@ -276,9 +253,9 @@ SCHEDULING_PANEL = True
 
 # The verbosity level used by the local scheduler when starting the 'scheduler.py'
 # and 'worker.py' scripts
-LOCAL_SCHEDULER_VERBOSITY = '--verbose'
+LOCAL_SCHEDULER_VERBOSITY = "--verbose"
 
-LOCAL_SCHEDULER_ADDRESS = '127.0.0.1'
+LOCAL_SCHEDULER_ADDRESS = "127.0.0.1"
 LOCAL_SCHEDULER_PORT = 50000
 
 LOCAL_SCHEDULER_USE_DOCKER = True
@@ -292,89 +269,80 @@ LOCAL_SCHEDULER_USE_DOCKER = True
 
 TEMPLATES = [
     {
-        'BACKEND': 'django.template.backends.django.DjangoTemplates',
-        'DIRS': [
-            pkg_resources.resource_filename('beat.web', 'templates'),
-        ],
-        'APP_DIRS': True,
-        'OPTIONS': {
-            'context_processors': [
-                'django.contrib.auth.context_processors.auth',
-                'django.template.context_processors.request',
-                'django.template.context_processors.csrf',
-                'django.contrib.messages.context_processors.messages',
-                'beat.web.navigation.context_processors.exported_settings',
-                'beat.web.navigation.context_processors.beat_version',
-                'beat.web.navigation.context_processors.google_analytics',
+        "BACKEND": "django.template.backends.django.DjangoTemplates",
+        "DIRS": [pkg_resources.resource_filename("beat.web", "templates")],
+        "APP_DIRS": True,
+        "OPTIONS": {
+            "context_processors": [
+                "django.contrib.auth.context_processors.auth",
+                "django.template.context_processors.request",
+                "django.template.context_processors.csrf",
+                "django.contrib.messages.context_processors.messages",
+                "beat.web.navigation.context_processors.exported_settings",
+                "beat.web.navigation.context_processors.beat_version",
             ],
-            'debug': DEBUG,
+            "debug": DEBUG,
         },
-    },
+    }
 ]
 
 MIDDLEWARE_CLASSES = (
-    'django.middleware.security.SecurityMiddleware',
-    'django.middleware.common.CommonMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django.contrib.messages.middleware.MessageMiddleware',
-    'django.middleware.clickjacking.XFrameOptionsMiddleware',
-    'beat.web.navigation.middleware.AgreementMiddleware',
+    "django.middleware.security.SecurityMiddleware",
+    "django.middleware.common.CommonMiddleware",
+    "django.contrib.sessions.middleware.SessionMiddleware",
+    "django.middleware.csrf.CsrfViewMiddleware",
+    "django.contrib.auth.middleware.AuthenticationMiddleware",
+    "django.contrib.messages.middleware.MessageMiddleware",
+    "django.middleware.clickjacking.XFrameOptionsMiddleware",
+    "beat.web.navigation.middleware.AgreementMiddleware",
 )
 
-ROOT_URLCONF = 'beat.web.urls'
+ROOT_URLCONF = "beat.web.urls"
 
 INSTALLED_APPS = (
-    'django.contrib.contenttypes',
-    'django.contrib.auth',
-    'django.contrib.sessions',
-    'django.contrib.staticfiles',
-    'django.contrib.admin',
-    'django.contrib.messages',
-    'django.contrib.humanize',
-    'django.contrib.sites',
-    #'django.contrib.admindocs',
-
-    'guardian',
-    'rest_framework',
-    'drf_yasg',
-    'rest_framework.authtoken',
-    'jsonfield',
-    'actstream',
-
-    'beat.web.ui.registration',
-
-    'beat.web.accounts',
-    'beat.web.algorithms',
-    'beat.web.plotters',
-    'beat.web.attestations',
-    'beat.web.backend',
-    'beat.web.common',
-    'beat.web.databases',
-    'beat.web.dataformats',
-    'beat.web.experiments',
-    'beat.web.libraries',
-    'beat.web.navigation',
-    'beat.web.search',
-    'beat.web.statistics',
-    'beat.web.toolchains',
-    'beat.web.ui',
-    'beat.web.utils',
-    'beat.web.team',
-    'beat.web.reports',
+    "django.contrib.contenttypes",
+    "django.contrib.auth",
+    "django.contrib.sessions",
+    "django.contrib.staticfiles",
+    "django.contrib.admin",
+    "django.contrib.messages",
+    "django.contrib.humanize",
+    "django.contrib.sites",
+    # 'django.contrib.admindocs',
+    "guardian",
+    "rest_framework",
+    "drf_yasg",
+    "rest_framework.authtoken",
+    "jsonfield",
+    "actstream",
+    "beat.web.ui.registration",
+    "beat.web.accounts",
+    "beat.web.algorithms",
+    "beat.web.plotters",
+    "beat.web.attestations",
+    "beat.web.backend",
+    "beat.web.common",
+    "beat.web.databases",
+    "beat.web.dataformats",
+    "beat.web.experiments",
+    "beat.web.libraries",
+    "beat.web.navigation",
+    "beat.web.search",
+    "beat.web.statistics",
+    "beat.web.toolchains",
+    "beat.web.ui",
+    "beat.web.utils",
+    "beat.web.team",
+    "beat.web.reports",
 )
 
 # Secure re-estructured text markup parsing
-RESTRUCTUREDTEXT_FILTER_SETTINGS = {
-    'file_insertion_enabled': 0,
-    'raw_enabled': 0,
-}
+RESTRUCTUREDTEXT_FILTER_SETTINGS = {"file_insertion_enabled": 0, "raw_enabled": 0}
 
 # Where CodeMirror is installed and some other settings
-CODEMIRROR_PATH = 'codemirror' #w.r.t to STATIC_URL
-CODEMIRROR_THEME = 'default'
-CODEMIRROR_MODE = 'javascript'
+CODEMIRROR_PATH = "codemirror"  # w.r.t to STATIC_URL
+CODEMIRROR_THEME = "default"
+CODEMIRROR_MODE = "javascript"
 
 ##############################################################################
 #
@@ -382,11 +350,7 @@ CODEMIRROR_MODE = 'javascript'
 #
 ##############################################################################
 
-CACHES = {
-    'default': {
-        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
-    }
-}
+CACHES = {"default": {"BACKEND": "django.core.cache.backends.dummy.DummyCache"}}
 
 ##############################################################################
 #
@@ -394,7 +358,7 @@ CACHES = {
 #
 ##############################################################################
 
-SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
+SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
 
 ##############################################################################
 #
@@ -403,13 +367,13 @@ SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
 #
 ##############################################################################
 AUTHENTICATION_BACKENDS = (
-    'django.contrib.auth.backends.ModelBackend', # this is default
-    'guardian.backends.ObjectPermissionBackend',
+    "django.contrib.auth.backends.ModelBackend",  # this is default
+    "guardian.backends.ObjectPermissionBackend",
 )
 
 ANONYMOUS_USER_ID = -1
 
-AUTH_PROFILE_MODULE = 'accounts.Profile'
+AUTH_PROFILE_MODULE = "accounts.Profile"
 
 ##############################################################################
 #
@@ -419,24 +383,19 @@ AUTH_PROFILE_MODULE = 'accounts.Profile'
 REST_FRAMEWORK = {
     # Use Django's standard `django.contrib.auth` permissions,
     # or allow read-only access for unauthenticated users.
-    'DEFAULT_PERMISSION_CLASSES': [
-        'rest_framework.permissions.IsAuthenticatedOrReadOnly'
-    ],
-
-    'DEFAULT_AUTHENTICATION_CLASSES': [
-        'rest_framework.authentication.SessionAuthentication',
-        'rest_framework.authentication.BasicAuthentication',
-        'rest_framework.authentication.TokenAuthentication',
+    "DEFAULT_PERMISSION_CLASSES": [
+        "rest_framework.permissions.IsAuthenticatedOrReadOnly"
     ],
-
-    'DEFAULT_RENDERER_CLASSES': [
-        'rest_framework.renderers.JSONRenderer',
-        'rest_framework.renderers.BrowsableAPIRenderer'
+    "DEFAULT_AUTHENTICATION_CLASSES": [
+        "rest_framework.authentication.SessionAuthentication",
+        "rest_framework.authentication.BasicAuthentication",
+        "rest_framework.authentication.TokenAuthentication",
     ],
-    'DEFAULT_PARSER_CLASSES': [
-        'rest_framework.parsers.JSONParser'
+    "DEFAULT_RENDERER_CLASSES": [
+        "rest_framework.renderers.JSONRenderer",
+        "rest_framework.renderers.BrowsableAPIRenderer",
     ],
-
+    "DEFAULT_PARSER_CLASSES": ["rest_framework.parsers.JSONParser"],
     # This setting is mandatory after DRF 3.10
     # 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
 }
@@ -447,7 +406,7 @@ REST_FRAMEWORK = {
 #
 ##############################################################################
 
-#In days
+# In days
 EXPIRATION_DELTA = 180
 EXPIRATION_REMINDERS = [1, 7, 30]
 EXPIRATION_REMINDERS_REVALIDATION = [1, 7, 30, 50]
@@ -459,15 +418,15 @@ EXPIRATION_REMINDERS_REVALIDATION = [1, 7, 30, 50]
 ##############################################################################
 
 ACTSTREAM_SETTINGS = {
-    'USE_JSONFIELD': True,
-    'MANAGER': 'beat.web.common.managers.BeatActionManager'
+    "USE_JSONFIELD": True,
+    "MANAGER": "beat.web.common.managers.BeatActionManager",
 }
 
 ABSOLUTE_URL_OVERRIDES = {
-    'auth.user': lambda u: URL_PREFIX + "/events/%s/" % u.username,
+    "auth.user": lambda u: URL_PREFIX + "/events/%s/" % u.username
 }
 
-SERIALIZATION_MODULES = { 'json' : 'beat.web.utils.activity_stream_serializer' }
+SERIALIZATION_MODULES = {"json": "beat.web.utils.activity_stream_serializer"}
 
 ##############################################################################
 #
@@ -475,4 +434,4 @@ SERIALIZATION_MODULES = { 'json' : 'beat.web.utils.activity_stream_serializer' }
 #
 ##############################################################################
 
-DOCUMENTATION_LINK = "https://www.idiap.ch/software/beat/docs/beat/docs/stable/beat.web/doc/user/index.html"
\ No newline at end of file
+DOCUMENTATION_LINK = "https://www.idiap.ch/software/beat/docs/beat/docs/stable/beat.web/doc/user/index.html"
diff --git a/beat/web/templates/base.html b/beat/web/templates/base.html
index 44a9c29ce2a2c37c0748addc12a31ffa6f5cc607..e5a4871c9ef3efb983efd5287fcf7a9eade6fbb8 100644
--- a/beat/web/templates/base.html
+++ b/beat/web/templates/base.html
@@ -110,18 +110,5 @@ $(document).ready(function() {
 });
   </script>
 
-  {# google analytics #}
-  {% if google_analytics %}
-  <script type="text/javascript">
-    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-    ga('create', '{{ google_analytics }}', 'auto');
-    ga('send', 'pageview');
-  </script>
-  {% endif %}
-
 </body>
 </html>
diff --git a/dev.yml b/dev.yml
index 60f3caef81231880db1de33a5f7aedcfba0113d1..2766fdebd1703088cf66ef36aed9225bfcf4984f 100644
--- a/dev.yml
+++ b/dev.yml
@@ -8,13 +8,13 @@ dependencies:
 
   # packages you may pin are here
   - python=3.6
-  - bob-devel=2019.08.28
-  - beat-devel=2019.08.28
+  - bob-devel=2020.01.09
+  - beat-devel=2020.01.09
 
   # beat dependencies matching release.cfg
-  - beat.core=1.9.0
-  - beat.backend.python=1.7.2
-  - beat.cmdline=1.5.0
+  - beat.core=1.9.2
+  - beat.backend.python=1.7.3
+  - beat.cmdline=1.6.1
 
   # requirements.txt, they are indirectly pinned through the above
   - docopt
diff --git a/release.cfg b/release.cfg
index 598df974cd524e025363f8aae51484b8f291ad5d..b6d96ffb49a3af05672f9128d5d02fe26de57062 100644
--- a/release.cfg
+++ b/release.cfg
@@ -24,9 +24,9 @@ eggs = ${buildout:eggs}
 interpreter = python
 
 [sources]
-beat.core = git https://gitlab.idiap.ch/beat/beat.core.git rev=v1.9.0
-beat.cmdline = git https://gitlab.idiap.ch/beat/beat.cmdline.git rev=v1.5.0
-beat.backend.python = git https://gitlab.idiap.ch/beat/beat.backend.python.git rev=v1.7.2
+beat.core = git https://gitlab.idiap.ch/beat/beat.core.git rev=v1.9.2
+beat.cmdline = git https://gitlab.idiap.ch/beat/beat.cmdline.git rev=v1.6.1
+beat.backend.python = git https://gitlab.idiap.ch/beat/beat.backend.python.git rev=v1.7.3
 
 [uwsgi]
 recipe = buildout.recipe.uwsgi