Massive API refactoring to utilize Option and Futures. Add reader and tests.