adding receiver and a register abstraction
removed the (too) fancy dsl. Also introduce register indirection