fix terrible mutual-reference bug in light