diff --git a/src/engine/adapter.js b/src/engine/adapter.js
index 93bc901b3..586d8d5d7 100644
--- a/src/engine/adapter.js
+++ b/src/engine/adapter.js
@@ -35,7 +35,7 @@ function domToBlocks (blocksDOM) {
         var block = blocksDOM[i];
         var tagName = block.name.toLowerCase();
         if (tagName === 'block') {
-            domToBlock(block, blocks, 0);
+            domToBlock(block, blocks, true);
         }
     }
     // Flatten blocks object into a list.
@@ -50,24 +50,20 @@ function domToBlocks (blocksDOM) {
  * Convert and an individual block DOM to the representation tree.
  * Based on Blockly's `domToBlockHeadless_`.
  * @param {Element} blockDOM DOM tree for an individual block.
- * @param {Number} treeDepth How far down the tree we have recursed.
+ * @param {Boolean} isTopBlock Whether blocks at this level are "top blocks."
  * @param {Object} blocks Collection of blocks to add to.
  */
-function domToBlock (blockDOM, blocks, treeDepth) {
+function domToBlock (blockDOM, blocks, isTopBlock) {
     // Block skeleton.
     var block = {
-        id: null, // Block ID
-        opcode: null, // Execution opcode, e.g., "event_whengreenflag".
+        id: blockDOM.attribs.id, // Block ID
+        opcode: blockDOM.attribs.type, // For execution, "event_whengreenflag".
         inputs: {}, // Inputs to this block and the blocks they point to.
         fields: {}, // Fields on this block and their values.
         next: null, // Next block in the stack, if one exists.
-        topLevel: treeDepth == 0 // If this block starts a stack.
+        topLevel: isTopBlock // If this block starts a stack.
     };
 
-    // Basic properties of the block from XML.
-    block.id = blockDOM.attribs.id;
-    block.opcode = blockDOM.attribs.type;
-
     // Add the block to the representation tree.
     blocks[block.id] = block;
 
@@ -110,7 +106,7 @@ function domToBlock (blockDOM, blocks, treeDepth) {
         case 'value':
         case 'statement':
             // Recursively generate block structure for input block.
-            domToBlock(childBlockNode, blocks, treeDepth + 1);
+            domToBlock(childBlockNode, blocks, false);
             // Link this block's input to the child block.
             var inputName = xmlChild.attribs.name;
             block.inputs[inputName] = {
@@ -120,7 +116,7 @@ function domToBlock (blockDOM, blocks, treeDepth) {
             break;
         case 'next':
             // Recursively generate block structure for next block.
-            domToBlock(childBlockNode, blocks, treeDepth + 1);
+            domToBlock(childBlockNode, blocks, false);
             // Link next block to this block.
             block.next = childBlockNode.attribs.id;
             break;