Factored State into subclasses to handle each HTTP method. A request dispatches to an object appropriate to handle the method. PUT and DELETE don't use default parameters anymore, and hence this lets Cherrypy catch a bad method-uri combination. Cherrypy raises a 404 at that point, which reduces a level of checks in State.process()