Expose request-building logic publicly (Part 3)

Re: #38, #39, #42 - PR against dev