Still working in connecting peers, the major constraint I have right now is having to punch a whole in my main workplace firewall :). I also added a boolean variable to Peer called incoming which depending on its flag, it will determine to SEND the handshake first or WAIT for one at the run() method when the listener gets instantiated. The functionality of receiveHandshake stays the same and everything should work after the handshake as it is.