Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS