CHECK THE COMMENTS FOR MORE DETAILS.