Text this: Data abstraction and problem solving with Java : walls and mirrors /