implement incoming messages - second draft