Rewrote timeout, throw exceptions, etc.