Text this: Data Abstraction and Problem Solving with Java: Walls and Mirrors