diff --git a/app/styles/achievements.sass b/app/styles/achievements.sass
index 122f81e45..4896c5eec 100644
--- a/app/styles/achievements.sass
+++ b/app/styles/achievements.sass
@@ -218,3 +218,6 @@ h2.achievements-category
 .table-layout
   #no-achievements
     margin-top: 40px
+
+.achievement-icon-small
+  height: 18px
diff --git a/app/styles/editor/related-achievements.sass b/app/styles/editor/related-achievements.sass
new file mode 100644
index 000000000..46314ea65
--- /dev/null
+++ b/app/styles/editor/related-achievements.sass
@@ -0,0 +1,6 @@
+#related-achievements-view
+  #new-achievement-button
+    margin-bottom: 10px
+
+  .icon-column
+    width: 25px
diff --git a/app/templates/editor/related-achievements.jade b/app/templates/editor/related-achievements.jade
new file mode 100644
index 000000000..9270c0def
--- /dev/null
+++ b/app/templates/editor/related-achievements.jade
@@ -0,0 +1,26 @@
+
+button.btn.btn-primary#new-achievement-button(disabled=me.isAdmin() === true ? undefined : "true" data-i18n="editor.new_achievement_title") Create a New Achievement
+
+if achievements.loading
+  h2 Loading...
+else if ! achievements.models.length
+  .panel
+    .panel-body
+      p No achievements added for this level yet.
+else
+  table.table.table-hover
+    thead
+      tr
+        th
+        th Name
+        th Description
+        th XP
+    tbody
+      each achievement in achievements.models
+        tr
+          td(style="width: 20px")
+            img.achievement-icon-small(src=achievement.getImageURL() alt="#{achievement.get('name') icon")
+          td
+            a(href="/editor/achievement/#{achievement.get('slug')}")= achievement.get('name')
+          td= achievement.get('description')
+          td= achievement.get('worth')
diff --git a/app/templates/editor/related_achievements.jade b/app/templates/editor/related_achievements.jade
deleted file mode 100644
index 1ab64773e..000000000
--- a/app/templates/editor/related_achievements.jade
+++ /dev/null
@@ -1,18 +0,0 @@
-
-if achievements.loading
-  h2 Loading...
-else if ! achievements.models.length
-  .panel
-    .panel-body
-      p No achievements added for this level yet.
-else
-  table
-    tr
-      th Name
-      th Description
-      th XP
-    each achievement in achievements.models
-      tr
-        td= achievement.get('name')
-        td= achievement.get('description')
-        td= achievement.get('worth')
diff --git a/app/views/editor/RelatedAchievementsView.coffee b/app/views/editor/RelatedAchievementsView.coffee
index 2f341c843..774b550e7 100644
--- a/app/views/editor/RelatedAchievementsView.coffee
+++ b/app/views/editor/RelatedAchievementsView.coffee
@@ -1,13 +1,18 @@
 CocoView = require 'views/kinds/CocoView'
-template = require 'templates/editor/related_achievements'
+template = require 'templates/editor/related-achievements'
 RelatedAchievementsCollection = require 'collections/RelatedAchievementsCollection'
 Achievement = require 'models/Achievement'
+NewModelModal = require 'views/modal/NewModelModal'
+app = require 'application'
 
 module.exports = class RelatedAchievementsView extends CocoView
   id: 'related-achievements-view'
   template: template
   className: 'tab-pane'
 
+  events:
+    'click #new-achievement-button': 'makeNewAchievement'
+
   constructor: (options) ->
     super options
     @relatedID = options.relatedID
@@ -29,3 +34,11 @@ module.exports = class RelatedAchievementsView extends CocoView
   render: ->
     console.debug 'rendering achievements'
     super()
+
+  onNewAchievementSaved: (achievement) ->
+    app.router.navigate('/editor/achievement/' + (achievement.get('slug') or achievement.id), {trigger: true})
+
+  makeNewAchievement: ->
+    modal = new NewModelModal model: Achievement, modelLabel: 'Achievement', properties: related: @relatedID
+    modal.once 'success', @onNewAchievementSaved
+    @openModalView modal
diff --git a/app/views/kinds/SearchView.coffee b/app/views/kinds/SearchView.coffee
index ef79c4ab4..1e41c8ead 100644
--- a/app/views/kinds/SearchView.coffee
+++ b/app/views/kinds/SearchView.coffee
@@ -78,8 +78,6 @@ module.exports = class SearchView extends RootView
     @collection = null
 
   onNewModelSaved: (@model) ->
-    # Can only redirect after the modal hidden event has triggered
-    console.debug 'new model saved'
     base = document.location.pathname[1..] + '/'
     app.router.navigate(base + (@model.get('slug') or @model.id), {trigger: true})
 
diff --git a/app/views/modal/NewModelModal.coffee b/app/views/modal/NewModelModal.coffee
index 3114b2608..9e7667207 100644
--- a/app/views/modal/NewModelModal.coffee
+++ b/app/views/modal/NewModelModal.coffee
@@ -12,11 +12,11 @@ module.exports = class NewModelModal extends ModalView
     'submit form': 'makeNewModel'
     'shown.bs.modal #new-model-modal': 'focusOnName'
 
-
   constructor: (options) ->
     super options
     @model = options.model
     @modelLabel = options.modelLabel
+    @properties = options.properties
 
   getRenderData: ->
     c = super()
@@ -31,6 +31,7 @@ module.exports = class NewModelModal extends ModalView
     model.set('name', name)
     if @model.schema.properties.permissions
       model.set 'permissions', [{access: 'owner', target: me.id}]
+    model.set(key, prop) for key, prop of @properties if @properties?
     res = model.save()
     return unless res
 
diff --git a/server/achievements/achievement_handler.coffee b/server/achievements/achievement_handler.coffee
index 433df56d6..feed09f20 100644
--- a/server/achievements/achievement_handler.coffee
+++ b/server/achievements/achievement_handler.coffee
@@ -5,7 +5,7 @@ class AchievementHandler extends Handler
   modelClass: Achievement
 
   # Used to determine which properties requests may edit
-  editableProperties: ['name', 'query', 'worth', 'collection', 'description', 'userField', 'proportionalTo', 'icon', 'function']
+  editableProperties: ['name', 'query', 'worth', 'collection', 'description', 'userField', 'proportionalTo', 'icon', 'function', 'related', 'difficulty', 'category']
   jsonSchema = require '../../app/schemas/models/achievement.coffee'
 
   hasAccess: (req) ->