ligths mostly implemented
ray implemented