Two way communication achieved!

Lots of refactoring to do in order to make this easy.