Rory: I didn't abstract the request object but it would be a nice separation to do so.

Michael: I haven't read that but I will, thanks for the link. Calling formulaic method names seems to a feature of most implementations I've seen so far. I haven't looked at the Zend Framework stuff - the application for this service is high-availability enough to keep us away from frameworks of any kind, purely for performance reasons.