There are several methods in this class that are parsing and then stringifying XML. A better strategy would be to parse the xml stored in `self.data`, extract the relevant subsections (instructions, content), store that extracted content in memory (on `self`), and then render it only when it's asked for.

In fact, delaying work as much as possible would be advantageous for other parts of our system. You could use `@lazy` on a method that parses the xml to only parse the xml once, and only when needed. That way, just instantiating the XModule doesn't incur the cost of xml parsing.