diff --git a/app/main/views.py b/app/main/views.py
index 0dba278cc35437b1f7543f3775a6bbfa41218dc5..99ef8946cb498a06d5cdf5432b397eca3342c922 100644
--- a/app/main/views.py
+++ b/app/main/views.py
@@ -1,11 +1,12 @@
 from datetime import datetime
 from flask import current_app, flash, redirect, render_template, url_for
 from flask_login import current_user, login_required
-from ..models import User
+from ..models import User, Corpus
 from ..tables import AdminUserTable, AdminUserItem
 from . import main
 from .forms import CreateCorpusForm
 from ..decorators import admin_required
+from .. import db
 import hashlib
 import os
 
@@ -27,15 +28,17 @@ def dashboard():
 
     if create_corpus_form.validate_on_submit():
         app = current_app._get_current_object()
-        id = hashlib.md5(
-            (current_user.username + '_' + datetime.now().isoformat()).encode()
-        ).hexdigest()
         corpus = {'description': create_corpus_form.description.data,
                   'id': id,
                   'creator': current_user.id,
                   'title': create_corpus_form.title.data
                   }
-        dir = os.path.join(app.config['OPAQUE_FILES'], 'corpora', id)
+        corpus = Corpus(description=create_corpus_form.description.data,
+                        title=create_corpus_form.title.data,
+                        user_id=current_user.id)
+        db.session.add(corpus)
+        db.session.commit()
+        dir = os.path.join(app.config['OPAQUE_STORAGE'], 'corpora', str(corpus.id))
 
         try:
             os.makedirs(dir)
diff --git a/app/models.py b/app/models.py
index 41c8f27165bdf92f8283c9bd8561e031014a236f..320ab54b3238fc3df27303090bfb1eeec791ffde 100644
--- a/app/models.py
+++ b/app/models.py
@@ -260,7 +260,7 @@ class Corpus(db.Model):
     user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
 
     def __init__(self, **kwargs):
-        super(Job, self).__init__(**kwargs)
+        super(Corpus, self).__init__(**kwargs)
 
     def __repr__(self):
         """