MASTERING OBJECT-ORIENTED DESIGN USING JAVA: THE THOROUGH MANUAL