     
     public override init() {
         rootNode = IMGTreeNode()
+    }
+    
+    init(rootNode: IMGTreeNode) {
+        self.rootNode = rootNode
     }
     
     //MARK: tree construction class methods

/**
Provides structure to a nested object graph such that it can be used in a UITableView or UICollectionView
*/
public class IMGTree: NSObject, NSCoding {
    
    /**
    Defines the root node which is never displayed on screen but contains the top level nodes

    var isVisible: Bool = false {
        willSet {
            //keep track of prior subtree visibility
            if isVisible {
                previousVisibleIndex = visibleTraversalIndex()
                previousVisibleChildren = visibleIndicesForTraversal()
            } else {
                previousVisibleChildren = []
