This is a lot better. I still have a couple of questions:

Consider the following assignments to a query sequence:

```
a;b;c
a;d;e
a;b;c
```

With the current algorithm, I think we'd end up with:

```
a: 1.0
b: 0.667
c: 0.667

Result: a;b;c 0.667
```

Is that right? At the third level, we're computing consensus for all assignments still, even though at level two we have chosen ```b``` as the consensus. Should ```c```'s consensus then be 1.0 instead?

Consider another case:

```
a;b;c
a;d;e
a;b;c
z;y;c
```

We'd then end up with:

```
a: 0.75
b: 0.5
c: 0.75

Result: a;b;c 0.75
```

I'm not sure that the third level calculation is right, since we're counting ```z;y;c``` as part of the consensus for ```c```. Shouldn't it be ```c: 0.5```?