Redesign Shipper

The current implementation of Shipper is complex and stupid. It's a wanna be stream. This implementation uses real streams and breaks out the logic into different parts. Here's to hoping it is better!