           'dist/server/easyXDM/easyXDM.min.js':             ['libs/easyXDM.js']
           'dist/easyXDM/easyXDM.min.js':                    ['libs/easyXDM.js']
 
-  grunt.registerTask 'default', ['jshint', 'qunit', 'less', 'concat', 'uglify', 'copy']
-  grunt.registerTask 'server',  ['concat', 'uglify', 'less', 'copy']
+  grunt.registerTask 'default', ['jshint', 'qunit', 'less', 'coffee', 'concat', 'uglify', 'copy']
+  grunt.registerTask 'server',  ['coffee', 'concat', 'uglify', 'less', 'copy']
 
   grunt.loadNpmTasks 'grunt-contrib-less'
   grunt.loadNpmTasks 'grunt-contrib-uglify'

module.exports = (grunt) ->
  grunt.initConfig
    pkg: grunt.file.readJSON 'package.json'
    concat:
      wrapped_files:
        src: [
          'wrap/first.js',
          'plugins/*',
          'src/js/models/*',
          'src/js/views/*',
          'src/js/util/*',
          'src/js/initializers/*',
          'wrap/last.js'
        ]
        dest: 'tmp/factlink.core.js'
      core:
        options:
          banner: banner_template

      all: ['test/*.html']
    watch:
      files: ['src/js/**/*', 'src/css/**/*', 'test/**/*', 'grunt.js', 'libs/**/*.js', 'plugins/**/*.js', 'wrap/*.js']
      tasks: ['jshint', 'qunit', 'coffee', 'concat', 'less', 'copy']
    jshint:
      all: ['grunt.js', 'src/js/**/*.js', 'test/**/*.js']
      options:
