var cat = function (input) {
  if (Array.prototype.slice.call(arguments, 1).length > 0) {
    var args = Array.prototype.slice.call(arguments, 1), cmd_string = [], opt = '';
    for (var i = 0; i < args.length; ++i) {
      if (args[i].indexOf('http://tako3.com/') == 0) {
        cmd_string.push('echo ' + args[i].replace(/^http:\/\/tako3\.com\//, '') + ' | getako3 -feed | cat');
      } else if (args[i].indexOf('http') == 0) {
        cmd_string.push('echo ' + args[i] + ' | googlefeed ' + opt + ' | gfselect link categories | cat');
      } else if (args[i].indexOf('-') == 0) {
        opt = args[i];
      }
    }
    var result = [], cmd = new Command(cmd_string.join('|'));
    /*
    cmd.addEventListener('execute', function (state) {
      alert(state.toSource());
    });
      */
    cmd.addEventListener('cat', function (state) {
      for (var i = 0; i < state.result.length; ++i) {
        result.push(state.result[i]);
      }
    });
    cmd.addEventListener('result', function (state) {
      delete result.loading;
    });
    result.loading = true;
    cmd.execute();
    return result;
  }
  return input;
};
