Migrate to pipe. Dropped rotation options.

Fixes #28 

There are some things that may seem odd about this code, but there are plans to add the time rotation back in and I left some of the logic in there to make that easier.
The empty object should probably just be `{}`