Fix to handle lazy results.
Refactor slightly to put row logic in its own function.
Refactored and added doc comments.
Fixed problem with blank cells throwing off data alignment.