anchor.diff:      pipeline = pipeline.addMiddleware(shelf.logRequests());
     }
   
  -  var handler = pipeline.addHandler(
  -      createStaticHandler('example/files', defaultDocument: 'index.html'));
  +  var defaultDoc = _defaultDoc;
  +  if (listDirectories) {
  +    defaultDoc = null;
  +  }
   
  -  io.serve(handler, 'localhost', 8080).then((server) {
  +  var handler = pipeline.addHandler(createStaticHandler('example/files',
  +      defaultDocument: defaultDoc, listDirectories: listDirectories));
  +
  +  io.serve(handler, 'localhost', port).then((server) {
       print('Serving at http://${server.address.host}:${server.port}');
     });
   }
   
   ArgParser _getParser() => new ArgParser()
  -  ..addFlag('logging', abbr: 'l', defaultsTo: true, negatable: true);
  +  ..addFlag('logging', abbr: 'l', defaultsTo: true, negatable: true)
  +  ..addOption('port', abbr: 'p', defaultsTo: '8080')
  +  ..addFlag('list-directories',
  +      abbr: 'f',
  +      defaultsTo: false,
  +      negatable: false,
  +      help: 'List the files in the source directory instead of servering the default document - "$_defaultDoc".');
  +
  +const _defaultDoc = 'index.html';
  
positive.code: void main(List<String> args) {
    var parser = _getParser();
  
    ArgResults result;
    try {
      result = parser.parse(args);
    } on FormatException catch (e) {
      stderr.writeln(e.message);
      stderr.writeln(parser.usage);
  
negative.code:     // #define EX_USAGE	64	/* command line usage error */
      exit(64);
    }
  
    if (!FileSystemEntity.isFileSync('example/example_server.dart')) {
      throw new StateError('Server expects to be started the '
  