     }
 
     // MARK: Bubble insertion/removal
-    private func addBubble(bubble: BubbleView) {
+    private func addBubble(bubble: BubbleView, origin: CGPoint) {
         assert(bubble.index != -1)
         let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapBubble))
         bubble.addGestureRecognizer(tapRecognizer)
         tapRecognizers[bubble] = tapRecognizer
-        bubble.frame = CGRect(origin: center, size: CGSize(width: 100, height: 100))
+        bubble.frame = CGRect(origin: origin, size: CGSize(width: 100, height: 100))
+        bubble.transform = CGAffineTransformMakeScale(0.1, 0.1)
         addSubview(bubble)
         indexToBubble[bubble.index!] = bubble
         addBehaviors(bubble)
+
+        animateToNormalSize(bubble)
     }
 
     private func removeBubble(bubble: BubbleView) {

    public override func layoutSubviews() {
        if let focused = focusedBubble {
            // Snap the bubble to the new center
            disengageFocused(focused)
            configureFocused(focused)
        }
    }


            return
        }

        // Remove focused
        if let oldFocused = focusedBubble {
            disengageFocused(oldFocused)
            removeBubble(oldFocused)
        }

        // Remove all related
        let currentRelatedViews = currentRelated.map{indexToBubble[$0]}.flatMap{$0}
        currentRelatedViews.forEach{self.disengageRelated($0)}
        currentRelatedViews.forEach{removeBubble($0)}

        // Add new focused
        let focusedIndex = dataSource.focusedBubble()
        let newFocused = dataSource.configureBubble(focusedIndex)
        newFocused.index = focusedIndex
        addBubble(newFocused, origin: center)
        configureFocused(newFocused)

        // Add new related
        let related = dataSource.relatedForBubble(focusedIndex)
        currentRelated = related
        let relatedBubbles = related.forEach { index in
            let bubble = dataSource.configureBubble(index)
            bubble.index = index
            let position = positionClock.advance(withCenter: center)
            self.addBubble(bubble, origin: position)
            self.configureRelated(bubble)
            self.addAttachment(bubble)
        }
    }

    /**
     Dynamically reconfigures the graph to have a new focus node. Animates out unrelated nodes, preserving
