Title: Java software solutions : foundations of program design