Refactored request building into a factory.
Added a delegate to the request factory for allowing others to build custom request building logic.