something about synchronous vs. nonsynchronous.. should be extended and (very) possibly rewritten.