Update HTTP() to improve modularity, code reuse

See individual commit summaries