Refactored to use request. 

Looks pretty much the same as James managed.