   grunt.registerTask 'test', [
     'clean'
     'shell:compile'
-    # A local webserver may be used for testing
+    'shell:serveAsync' # A local webserver may be used for testing
+    # TODO: make this a multitask and capture for error so server is killed
+    # regardless
+    'karma:ci:start'
+    'shell:serveAsync:kill' # Remember to terminate the local webserver after
+                            # testing is done
+  ]
+
+  # JUST watch for file changes. Don't run server
+  grunt.registerTask 'watch', [
+    'clean'
+    'shell:html2jade'
     'shell:watch'
-    'karma:ci:start'
-    # But terminate the local webserver after testing is done
-    'shell:watch:kill'
+    'copy:404'
+    'clean:index'
+  ]
+
+  # JUST compile, nothing else
+  grunt.registerTask 'compile', [
+    'clean'
+    'shell:html2jade'
+    'shell:compile'
+    'copy:404'
+    'clean:index'
   ]
 
   # Build -- minify and uglify

      # Build for production
      build:
        command: 'node_modules/.bin/brunch build -P',
      # Watch for changes for re-assembly
      watch:
        options:
          async: true
        command: 'node_modules/.bin/brunch watch --server'
      # Synchronously watch for changes for re-assembly
      syncWatch:
        command: 'node_modules/.bin/brunch watch --server'
      # Convert HTML to Jade for Harp
      html2jade:
        command: 'node_modules/.bin/html2jade app/assets/index.html'
      # Run Harp server (production mode)

      'changelog'
      'bump-commit'
    ]
