Text this: Data abstraction and problem solving with java walls and mirrors