simplified the communication threads run() method a bit, should both be
less error prone and a bit cleaner