improve pipe testing, refactor testing and improve it
tidy up dependencies
improve inline docs
improve inline docs
improve README