             
             if memory {
                 count++
-                if let parent = entry.parent {
-                    print("(")
-                    print(entryColor(parent).wrap("\(pad(parent.index, 3)), \(formatPointer(parent.address))@\(pad(entry.parentOffset, 3, align: .Left))"))
-                    print(") <- ")
-                } else {
-                    print("                                 ")
-                }
+                let parent = entry.parent.map{ results[$0.address] }?
+                let result = ScanResult(entry: entry, parent: parent, memory: memory)
+                parent?.children.append(result)
+                results[entry.address] = result
                 
-                print(entryColor(entry).wrap("\(pad(entry.index, 3)) \(formatPointer(entry.address))"))
-                print(": ")
                 let pointersAndOffsets = memory.scanPointers()
                 for pointerAndOffset in pointersAndOffsets {
                     let pointer = pointerAndOffset.pointer

//println(obj.description)
class TestClass {}
let obj = TestClass()
dumpmem(obj)


                        toScan.insert(newEntry, atIndex: 0)
                    }
                }
            }
        }
        return results[firstAddr]!
    }
}


