Updated version
added explanations