I'd suggest coroutines: http://en.wikipedia.org/wiki/Coroutine They have the advantage of being fairly similar to what some of us have done already with send.in to get this sort of behavior, and probably wouldn't break existing syntax.