module.exports = function(options) {
  return function(app) {

    app.define('taskNamespace', function(namespace) {
      return function(taskName, deps, fn) {
        if(!fn && typeof deps === 'function') {
          fn = deps;
        }
        if(!Array.isArray(deps)) {
          deps = [];
        }

        deps = deps.map(fullName);
        app.task(fullName(taskName), deps, fn);
        if(!app.tasks.hasOwnProperty(taskName)) {
          app.task(taskName, []);
        }
        app.tasks[taskName].deps.push(fullName(taskName));
      };

      function fullName(taskName) {
        return taskName + ':' + namespace;
      }
    });
  };

};