completed basic IM client and server