My approach to this was to create a Pixel class (so that I have an object that stores both an x and y coordinate), and add and remove Pixel objects from ArrayLists. The general process is like this: 1. Maintain an ArrayList of Pixel objects that are confirmed to be changing color called pixelsToChange. 2. Maintain an ArrayList of Pixel objects still to be tested called pixelQueue. 3. Maintain an ArrayList of Pixel objects that have been tested (regardless of result) to prevent re-testing called pixelsToIgnore. 4. Add the starting pixel to pixelsToChange and pixelsToIgnore. 5. Add all adjacent pixels to pixelQueue and pixelsToIgnore, then enter while loop: 6.a. Get and remove the next Pixel in pixelQueue 6.b. If it should be changed, add it to pixelsToChange, and then 6.c. Add its adjacent pixels to pixelQueue, ignoring any that are already in pixelsToIgnore 7. When pixelQueue is empty, the loop ends. 8. Iterate through pixelsToChange, and get each Pixel's x and y values, and change the value of image[y][x] appropriately. However, it doesn't pass validation. I'm looking for some hints as to where it may be going wrong.