classes used in O'Reilly 'Understanding Computation'