         self.view.translatesAutoresizingMaskIntoConstraints = false
         //self.canDrawSubviewsIntoLayer = true
         self.view.wantsLayer = true
-        self.view.add(subviews: [self.nameLabel, self.timeLabel, self.textLabel])
-        self.view.add(sublayer: self.photoLayer)
+        self.view.add(subviews: [self.photoButton, self.nameLabel, self.timeLabel, self.textLabel])
         
-        self.photoLayer.layout.left == self.view.left + 4
-        self.photoLayer.layout.centerY == self.view.centerY
-        self.photoLayer.layout.width == 40
-        self.photoLayer.layout.height == 40
-        self.photoLayer.layout.right == self.nameLabel.left - 4
-        self.photoLayer.layout.right == self.textLabel.left - 4
+        self.photoButton.left == self.view.left + 4
+        self.photoButton.centerY == self.view.centerY
+        self.photoButton.width == 40
+        self.photoButton.height == 40
+        self.photoButton.right == self.nameLabel.left - 4
+        self.photoButton.right == self.textLabel.left - 4
         self.nameLabel.top == self.view.top + 4
         self.nameLabel.right == self.timeLabel.left - 4
         self.nameLabel.bottom == self.textLabel.top - 4

        self.timeLabel.bottom == self.textLabel.top - 4
        self.textLabel.right == self.view.right - 4
        self.textLabel.bottom == self.view.bottom - 4
    }
    
    // Upon assignment of the represented object, configure the subview contents.
    public override var representedObject: Any? {
        didSet {
            guard let person = self.representedObject as? Person else { return }
            
            self.nameLabel.stringValue = person.fullName

        return v
    }()
    
    private var presenceSubscription: Subscription? = nil
    
    // Constraint setup here.
    public override func loadView() {
