Added sun, shadows, sky and refactored the code.