first version functional raytracer