Example of interactive protocol
Major rewrite