added in much more synchronization. also added in yielding, for purposes of demonstration