Added a test
Cleaned up TODOs
Added DrivenSource and Source.driven, and Sink.drive and SourceOps.drive