First draft of the push protocol

That compiles but has not been tested at all yet.