Light calculations; refactored Vertex into its own class