couldn't it be synchronous too?