code: function(callback) {
  
  				// build a list of individual files
  				var rasterFiles =	[];
  				task.files.forEach(function(file) {
  					if (!grunt.file.isDir(file.src[0]) && path.extname(file.dest).toLowerCase() !== '.svg') {
  						rasterFiles.push(file.src[0]);
  					}
  				});
  
  				// if there’s anything to optimize…
  				if (rasterFiles.length > 0) {
  
  					// get absolute paths to the stuff we’re optimizing
  					var rasterFilesResolved = rasterFiles.map(function(dir) {
  						return path.resolve(__dirname, '../' + dir);
  					});
  
  					// optimize as many times as the user wants
  					async.timesSeries(options.optimize.input.picopt, function(i, next) {
  
  						// let the user know that we’re optimizing inputs
  						grunt.log.writeln('Optimizing inputs with picopt (pass ' + (i + 1) + ' of ' + options.optimize.input.picopt + ')…');
  
  						// do the optimizations (with promises)
  						optimizePicopt(rasterFilesResolved, binPath.picopt).then(function() {
  							next();
  						});
  
  					}, callback);
  
  				} else {
  					callback(null);
  				}
  
  			}
docs: optimize inputs - picopt