restructured the raytracer