added explanations, plus some other stuff