docs
use interface as context, move reference types to interfaces to avoid circular imports, add tests fore views
add tests for subscribers
add narrative docs for locking