lighting works, but needs to be refactored and prettyfied