lights implementation... needs to be more efficient.