diff --git a/app/__init__.py b/app/__init__.py
index 457c0934a4f32b50321f025828da32168d752c82..37b0961f4fabffef52494596c879629d83c499fd 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -6,14 +6,13 @@ from flask_migrate import Migrate
 from flask_paranoid import Paranoid
 from flask_socketio import SocketIO
 from flask_sqlalchemy import SQLAlchemy
-from hashids import Hashids
+from flask_hashids import Hashids
 import flask_assets
 
 
 assets: flask_assets.Environment = flask_assets.Environment()
 db: SQLAlchemy = SQLAlchemy()
-# TODO: Add 'SECRET_KEY' from as 'salt' kwarg
-hashids: Hashids = Hashids(min_length=32)
+hashids: Hashids = Hashids()
 login: LoginManager = LoginManager()
 login.login_view: str = 'auth.login'
 login.login_message: str = 'Please log in to access this page.'
@@ -24,14 +23,15 @@ paranoid.redirect_view: str = '/'
 socketio: SocketIO = SocketIO()
 
 
-def create_app(config_class: Config = Config) -> Flask:
+def create_app(config: Config = Config) -> Flask:
     ''' Creates an initialized Flask (WSGI Application) object. '''
     app: Flask = Flask(__name__)
-    app.config.from_object(config_class)
+    app.config.from_object(config)
 
     assets.init_app(app)
-    config_class.init_app(app)
+    config.init_app(app)
     db.init_app(app)
+    hashids.init_app(app)
     login.init_app(app)
     mail.init_app(app)
     migrate.init_app(app, db)
@@ -39,8 +39,8 @@ def create_app(config_class: Config = Config) -> Flask:
     socketio.init_app(
         app, message_queue=app.config['NOPAQUE_SOCKETIO_MESSAGE_QUEUE_URI'])
 
-    from .utils import HashidConverter
-    app.url_map.converters['hashid'] = HashidConverter
+    # from .utils import HashidConverter
+    # app.url_map.converters['hashid'] = HashidConverter
 
     from .events import socketio as socketio_events
     from .events import sqlalchemy as sqlalchemy_events
diff --git a/app/corpora/cqi_over_socketio/__init__.py b/app/corpora/cqi_over_socketio/__init__.py
index 68f28d8f0bc14950dc5203d4e6a1838d18260a27..ff698400f798ca13802f96f1552cd4fedd3deb5d 100644
--- a/app/corpora/cqi_over_socketio/__init__.py
+++ b/app/corpora/cqi_over_socketio/__init__.py
@@ -57,7 +57,7 @@ from .cqi import *  # noqa
 def connect(auth):
     # the auth variable is used in a hacky way. It contains the corpus id for
     # which a corpus analysis session should be started.
-    corpus_id = hashids.decode(auth['corpus_id'])[0]
+    corpus_id = hashids.decode(auth['corpus_id'])
     corpus = Corpus.query.get(corpus_id)
     if corpus is None:
         # return {'code': 404, 'msg': 'Not Found'}
diff --git a/app/events/socketio.py b/app/events/socketio.py
index ceb43a4f8a551e28f23d64aedb61cfcaed8cce3d..94b4c0c7d7c74ededd8e50addd1cb0a7a5ebaaff 100644
--- a/app/events/socketio.py
+++ b/app/events/socketio.py
@@ -12,7 +12,7 @@ from ..models import User
 @socketio.on('users.user.get')
 @socketio_login_required
 def users_user_get(user_hashid):
-    user_id = hashids.decode(user_hashid)[0]
+    user_id = hashids.decode(user_hashid)
     user = User.query.get(user_id)
     if user is None:
         response = {'code': 404, 'msg': 'Not found'}
diff --git a/config.py b/config.py
index 79f7f9b60ce2fc741dd4d92da80fa301c518a33e..e28325a16d79f39a189b98802012bca81136261d 100644
--- a/config.py
+++ b/config.py
@@ -19,6 +19,9 @@ class Config:
     TEMPLATES_AUTO_RELOAD = \
         os.environ.get('TEMPLATES_AUTO_RELOAD', 'false').lower() == 'true'
 
+    ''' # Flask-Hashids '''
+    HASHIDS_MIN_LENGTH = 32
+
     ''' # Flask-Login # '''
     REMEMBER_COOKIE_HTTPONLY = True
     REMEMBER_COOKIE_SECURE = \
diff --git a/requirements.txt b/requirements.txt
index fbff2916cfa393d56c87ccdaeb1b010eb4c7f058..97839593926baed6f0ad45a5e6b845780787f78c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,6 +3,7 @@ docker
 eventlet==0.30.2
 Flask~=1.1
 Flask-Assets
+Flask-Hashids
 Flask-HTTPAuth
 Flask-Login
 Flask-Mail