finish message passing first draft