PAIP has some great code and explains more how to do version a), how to move to version b) and finally reach version c). The process is typical in Lisp: you do a quick first version and then refine it where needed by adding features or by optimizing it at the right places.