added a streaming api
Added interface for readers/writers