using through2 and rewrote tests

Using `through2` instead of `through`. Rewrote all unit tests.