diff --git a/app/templates/editor/level/modal/artisan-guide-modal.jade b/app/templates/editor/level/modal/artisan-guide-modal.jade
index 29c685853..cb6758712 100644
--- a/app/templates/editor/level/modal/artisan-guide-modal.jade
+++ b/app/templates/editor/level/modal/artisan-guide-modal.jade
@@ -6,7 +6,7 @@ block modal-header-content
 block modal-body-content
   p
     | Welcome to the Artisan Compendium. Below you will find a series of helpful guides and tutorials for getting your levels to Master Artisan quality
-    if view.creator === view.meID
+    if view.hasOwnership()
       |, as well as a way to submit your level for official Artisan review
     |! If you have any feedback on the Level Editor, please contact us at: 
     a(href='mailto:artisans@codecombat.com') artisans@codecombat.com
@@ -16,8 +16,8 @@ block modal-body-content
     div
       a(href='https://github.com/codecombat/codecombat/wiki/Artisan-How-To-Index', target='_blank') Basic How-tos
     div
-      a(href='http://direct.codecombat.com/community', target='_blank') Artisan Rankings
-  if view.creator === view.meID
+      a(href='http://www.codecombat.com/community', target='_blank') Artisan Rankings
+  if view.hasOwnership()
     h4 Level Submission
     p
       | Do you want your level to be added to the campaign? Please take a moment to fill out the questions below! Don’t worry, this isn’t a timed quiz. It is just a way for the artisans at CodeCombat HQ to get a feel for the purpose of this level. If it doesn’t quite yet meet our standards for release we will give you feedback to help polish it further!
@@ -38,5 +38,5 @@ block modal-body-content
 block modal-footer-content
   div
     a(href='#', data-dismiss="modal", aria-hidden="true").btn Close
-    if view.creator === view.meID
+    if view.hasOwnership()
       button.btn.btn-primary#level-submit Submit
diff --git a/app/templates/editor/level/tasks-tab.jade b/app/templates/editor/level/tasks-tab.jade
index 8902434a3..247653b4d 100644
--- a/app/templates/editor/level/tasks-tab.jade
+++ b/app/templates/editor/level/tasks-tab.jade
@@ -2,7 +2,6 @@ mixin task-row(cid)
   - var task = view.getTaskByCID(cid)
   - var taskName = task.get('name');
   - var isComplete = task.get('complete')
-  - var taskLink = view.defaultTaskLinks[taskName]
   tr.task-row(data-task-cid=cid)
     td.task-check
       div.checkbox
@@ -15,11 +14,10 @@ mixin task-row(cid)
       td.edit-cell
         span.glyphicon.glyphicon-edit.start-edit
       td.task-name
-        if taskLink
-          if taskLink === './'
-            a.no-article(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', target='blank')= taskName
-          else
-            a(href=taskLink, target='_blank')= taskName
+        - var result = view.getTaskURL(taskName)
+        if result !== null
+          // https://github.com/codecombat/codecombat/wiki/Tasks-Tab#<slug goes here>
+          a(href='https://github.com/codecombat/codecombat/wiki/Tasks-Tab#' + result, target='blank')= taskName
         else
           span= taskName
 
diff --git a/app/views/editor/level/modals/ArtisanGuideModal.coffee b/app/views/editor/level/modals/ArtisanGuideModal.coffee
index a0887a3c4..58c82a59f 100644
--- a/app/views/editor/level/modals/ArtisanGuideModal.coffee
+++ b/app/views/editor/level/modals/ArtisanGuideModal.coffee
@@ -25,16 +25,21 @@ module.exports = class ArtisanGuideModal extends ModalView
 
   initialize: (options) ->
     @level = options.level
-    @options = level: @level.get 'name'
-    @creator = @level.get 'creator'
-    @meID = me.id
+    @options = 
+      level:@level.get('name')
+      levelSlug:@level.get('slug')
 
   levelSubmit: ->
     @playSound 'menu-button-click'
     forms.clearFormAlerts @$el
-    contactMessage = forms.formToObject @$el
-    res = tv4.validateMultiple contactMessage, contactSchema
+    results = forms.formToObject @$el
+    res = tv4.validateMultiple results, contactSchema
     return forms.applyErrorsToForm @$el, res.errors unless res.valid
+    contactMessage = {message:"""User Name: #{results.creditName}
+      Level: <a href="http://codecombat.com/editor/level/#{@options.levelSlug}">#{@options.level}</a>
+      Purpose: #{results.levelPurpose}
+      Inspiration: #{results.levelInspiration}
+      Location: #{results.levelLocation}"""}
     @populateBrowserData contactMessage
     contactMessage = _.merge contactMessage, @options
     contactMessage.country = me.get('country')
@@ -46,3 +51,8 @@ module.exports = class ArtisanGuideModal extends ModalView
       context.browser = "#{$.browser.platform} #{$.browser.name} #{$.browser.versionNumber}"
     context.screenSize = "#{screen?.width ? $(window).width()} x #{screen?.height ? $(window).height()}"
     context.screenshotURL = @screenshotURL
+
+  hasOwnership: ->
+    if @level.getOwner() is me.id
+      return true
+    return false
\ No newline at end of file
diff --git a/app/views/editor/level/tasks/TasksTabView.coffee b/app/views/editor/level/tasks/TasksTabView.coffee
index 005e19a9f..c4218232e 100644
--- a/app/views/editor/level/tasks/TasksTabView.coffee
+++ b/app/views/editor/level/tasks/TasksTabView.coffee
@@ -18,44 +18,6 @@ module.exports = class TasksTabView extends CocoView
   subscriptions:
     'editor:level-loaded': 'onLevelLoaded'
 
-  defaultTaskLinks:
-    # Order doesn't matter.
-    'Name the level.':'./'
-    'Create a Referee stub, if needed.':'./'
-    'Build the level.':'./'
-    'Set up goals.':'./'
-    'Choose the Existence System lifespan and frame rate.':'./'
-    'Choose the UI System paths and coordinate hover if needed.':'./'
-    'Choose the AI System pathfinding and Vision System line of sight.':'./'
-    'Write the sample code.':'./'
-    'Do basic set decoration.':'./'
-    'Adjust script camera bounds.':'./'
-    'Choose music file in Introduction script.':'./'
-    'Choose autoplay in Introduction script.':'./'
-    'Add to a campaign.':'./'
-    'Publish.':'./'
-    'Choose level options like required/restricted gear.':'./'
-    'Create achievements, including unlocking next level.':'./'
-    'Choose leaderboard score types.':'./'
-    'Playtest with a slow/tough hero.':'./'
-    'Playtest with a fast/weak hero.':'./'
-    'Playtest with a couple random seeds.':'./'
-    'Make sure the level ends promptly on success and failure.':'./'
-    'Remove/simplify unnecessary doodad collision.':'./'
-    'Release to adventurers via MailChimp.':'./'
-    'Write the description.':'./'
-    'Add i18n field for the sample code comments.':'./'
-    'Add Clojure/Lua/CoffeeScript.':'./'
-    'Write the guide.':'./'
-    'Write a loading tip, if needed.':'./'
-    'Click the Populate i18n button.':'./'
-    'Add programming concepts covered.':'./'
-    'Mark whether it requires a subscription.':'./'
-    'Release to everyone via MailChimp.':'./'
-    'Check completion/engagement/problem analytics.':'./'
-    'Do thorough set decoration.':'./'
-    'Add a walkthrough video.':'./'
-
   missingDefaults: ->
     missingTasks = []
     if @level
@@ -98,7 +60,7 @@ module.exports = class TasksTabView extends CocoView
       @render()
 
   focusEditInput: ->
-    editInput = @$el.find('#cur-edit')[0]
+    editInput = @$('#cur-edit')[0]
     if editInput
       editInput.focus()
       len = editInput.value.length * 2
@@ -115,6 +77,7 @@ module.exports = class TasksTabView extends CocoView
 
   onLevelLoaded: (e) ->
     @level = e.level
+    @defaultTasks = @level.schema().properties.tasks.default
     Task = Backbone.Model.extend({
       initialize: ->
         # We want to keep track of the revertAttributes easily without digging back into the level every time.
@@ -138,9 +101,9 @@ module.exports = class TasksTabView extends CocoView
     @level.set 'tasks', @taskMap()
 
   onClickTaskRow: (e) ->
-    if not @$el.find(e.target).is('input') and not @$el.find(e.target).is('a') and not @$el.find(e.target).hasClass('start-edit') and @$el.find('#cur-edit').length is 0
-      task = @tasks.get @$el.find(e.target).closest('tr').data('task-cid')
-      checkbox = @$el.find(e.currentTarget).find('.task-input')[0]
+    if not $(e.target).is('input') and not $(e.target).is('a') and not $(e.target).hasClass('start-edit') and @$('#cur-edit').length is 0
+      task = @tasks.get $(e.target).closest('tr').data('task-cid')
+      checkbox = $(e.currentTarget).find('.task-input')[0]
       if task.get 'complete'
         task.set 'complete', false
       else
@@ -149,29 +112,29 @@ module.exports = class TasksTabView extends CocoView
       @pushTasks()
 
   onClickTaskInput: (e) ->
-    task = @tasks.get @$el.find(e.target).closest('tr').data('task-cid')
+    task = @tasks.get $(e.target).closest('tr').data('task-cid')
     task.set 'complete', e.currentTarget.checked
     @pushTasks()
 
   onClickStartEdit: (e) ->
-    if @$el.find('#cur-edit').length is 0
-      task = @tasks.get @$el.find(e.target).closest('tr').data('task-cid')
+    if @$('#cur-edit').length is 0
+      task = @tasks.get $(e.target).closest('tr').data('task-cid')
       task.set 'curEdit', true
       @render()
       @focusEditInput()
 
   onKeyDownCurEdit: (e) ->
     if e.keyCode is 13
-      editInput = @$el.find('#cur-edit')[0]
+      editInput = @$('#cur-edit')[0]
       editInput.blur()
 
   onBlurCurEdit: (e) ->
-    editInput = @$el.find('#cur-edit')[0]
-    task = @tasks.get @$el.find(e.target).closest('tr').data('task-cid')
+    editInput = @$('#cur-edit')[0]
+    task = @tasks.get $(e.target).closest('tr').data('task-cid')
     @applyTaskName(task, editInput)
 
   onClickCreateTask: (e) ->
-    if @$el.find('#cur-edit').length is 0
+    if @$('#cur-edit').length is 0
       @tasks.add
         name: ''
         complete: false
@@ -181,3 +144,8 @@ module.exports = class TasksTabView extends CocoView
           complete: false
       @render()
       @focusEditInput()
+
+  getTaskURL: (_n) ->
+    if _.find(@defaultTasks, {name:_n})?
+      return _.string.slugify(_n)
+    return null