This is my current code dojo where I try to find elegant solutions to simple problems. The problems are from http://projecteuler.net/ and selecting Java from functional problems is not the best way to go, but that is not the point here. The point is to abstract everything to remove unnecessary duplication. I do look forward of redoing all of this in Scala, which seems to be way better suited.