Java TM software solutions foundations of program design - Lewis, John; Loftus, William (Addison-Wesley, 1998)