public function attachToXml($data, $prefix, &$parentNode = false)
    {
        if (!$parentNode) {
            $parentNode = &$this->mainNode;
        }
        // i don't like how this is done, but i can't see an easy alternative
        // that is clean. if the prefix is attributes, instead of creating
        // a node, just put all of the data onto the parent node as attributes
        if (strtolower($prefix) == 'attributes') {
            // set all of the attributes onto the node
            foreach ($data as $key=>$val) {
                $parentNode->setAttribute($key, $val);
            }

            $node = &$parentNode;
        } else {
            $node = $this->convertToXml($data, $prefix);
            $parentNode->appendChild($node);
        }
        return $node;
    }