diff --git a/app/corpora/followers/json_routes.py b/app/corpora/followers/json_routes.py
index 9b31f8eedcfb1601381ddc2a7ccf7cef713236d9..872998622ca05257de1019f0c58b0aafdfa4495b 100644
--- a/app/corpora/followers/json_routes.py
+++ b/app/corpora/followers/json_routes.py
@@ -11,6 +11,7 @@ from app.models import (
 from ..decorators import corpus_follower_permission_required
 from . import bp
 
+
 @bp.route('/<hashid:corpus_id>/followers', methods=['POST'])
 @corpus_follower_permission_required('MANAGE_FOLLOWERS')
 @content_negotiation(consumes='application/json', produces='application/json')
diff --git a/app/models.py b/app/models.py
index 22969c2f7b4873b123539df267f795e2c3e14f6b..b3294b000314a621cb66f6cbb00fe41703b9f6bb 100644
--- a/app/models.py
+++ b/app/models.py
@@ -787,11 +787,17 @@ class User(HashidMixin, UserMixin, db.Model):
     #endregion Profile Privacy settings
 
     def follow_corpus(self, corpus, role=None):
+        if role is None:
+            cfr = CorpusFollowerRole.query.filter_by(default=True).first()
+        else:
+            cfr = role
         if self.is_following_corpus(corpus):
-            return
-        r = CorpusFollowerRole.query.filter_by(default=True).first() if role is None else role
-        cfa = CorpusFollowerAssociation(corpus=corpus, role=r, follower=self)
-        db.session.add(cfa)
+            cfa = CorpusFollowerAssociation.query.filter_by(corpus=corpus, follower=self).first()
+            if cfa.role != cfr:
+                cfa.role = cfr
+        else:
+            cfa = CorpusFollowerAssociation(corpus=corpus, role=cfr, follower=self)
+            db.session.add(cfa)
 
     def unfollow_corpus(self, corpus):
         if not self.is_following_corpus(corpus):
@@ -840,7 +846,7 @@ class User(HashidMixin, UserMixin, db.Model):
         if role is None:
             return False
         self.follow_corpus(corpus, role)
-        db.session.add(self)
+        # db.session.add(self)
         return True
 
     def to_json_serializeable(self, backrefs=False, relationships=False, filter_by_privacy_settings=False):
diff --git a/app/templates/corpora/corpus.html.j2 b/app/templates/corpora/corpus.html.j2
index 2e38b88d3948975e1ab018f6537671db708f4d9e..07cb330d2f35644d35d0dff7ca95743315897906 100644
--- a/app/templates/corpora/corpus.html.j2
+++ b/app/templates/corpora/corpus.html.j2
@@ -192,7 +192,7 @@
         <div class="input-field">
           <i class="material-icons prefix">badge</i>
           <select id="share-link-modal-corpus-follower-role-select">
-            {% for cfr in cfrs %}
+            {% for cfr in cfrs if cfr.name != 'Anonymous' %}
             <option value="{{ cfr.name }}">{{ cfr.name }}</option>
             {% endfor %}
           </select>