Add source controller, tests.
Finalize tests, emit events on write operations.
Fix merge conflicts.