Library architecture

I'm a little confused about the library architecture. I see how to do
the "hard" stuff but not how to do the "easy" stuff. For example, if
I just want to get the raw source for an http request and write it to
a socket what functions do I need to override to get the minimal amount
of stuff loaded from the library? 

I've been overriding HTML_new and the HText_foo functions but I'm
still getting an enormous amount of stuff loaded and from reading the
code, it looks like the source is getting translated to a structured
stream and then flattened back. Am I right? Is there a way to avoid
that and just get the http source directly?

I've looked at the proxy code and it's still not clear to me what is
really going on?

Here's the code that I'm using to just load some http source and write
it to a socket:

  request =  HTRequest_new();
  request->output_stream = HTWriter_newNoClose(sock);
  request->output_format = WWW_SOURCE;
  request->BlockingIO = YES;	/* Turn off non-blocking I/O */

  result = HTLoadToStream(uri, NULL, request);

Thanks in advance.