added shadowcasting, not tested