This code appears to be fairly common in this file, so it should get cleaned up a bit:

```rust
let args = std::os::args();
let path = Path::new(args.get_opt(1).expect("No input file parameter"));
let mut reader = BufferedReader::new(File::open(&path));
```

I'm also beginning to think that we need `fn buffered(self) -> BufferedReader<Self>` on the reader trait.