tested message passing, begin restructure