A RayTracer with EPF Lenses

Task 1:
Some simple raycasting to determine the intersection between the rays and the spheres.
Task 2:
These are the spheres including diffuse lighting (phong-style).
Task 3:
These are the spheres including diffuse and ambient and specular lighting (phong-style).
Task 4:
And now some shadows.
Task 5:
More lightsources and colors and more shadows.
Task 6:
Added antialiasing (not really that visible on the thumbnail) and refraction.
Task 7:
Now the task was to implement a few more objects other than spheres, so here is a picture of my cylinders.
EPF Lenses:
At this point I decided to integrate EPF lenses into my raytracer just to see how I could warp the rays with it. Here is a simple zoom-out example.
A Manhattan Lens created an inset into the picture.
Another lens for which I can't remember the parameters I used (I assume it's a round lens with Gaussian drop-off.