Stream based comparison

The return of stream based comparison, this time with less bugs