 
 	func updateArticles(with unsortedArticles: Set<Article>) {
 
-		let sortedArticles = Array(unsortedArticles).sortedByDate()
+		let sortedArticles = Array(unsortedArticles).sortedByDate(sortDirection)
 		if articles != sortedArticles {
 			articles = sortedArticles
 		}

			NotificationCenter.default.addObserver(self, selector: #selector(imageDidBecomeAvailable(_:)), name: .ImageDidBecomeAvailable, object: nil)
			NotificationCenter.default.addObserver(self, selector: #selector(imageDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil)
			NotificationCenter.default.addObserver(self, selector: #selector(accountDidDownloadArticles(_:)), name: .AccountDidDownloadArticles, object: nil)

			NSUserDefaultsController.shared.addObserver(self, forKeyPath: timelineFontSizeKVOKey, options: NSKeyValueObservingOptions(rawValue: 0), context: nil)

			didRegisterForNotifications = true
		}
	}

	// MARK: KVO

	override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
		
		if let keyPath = keyPath {

			switch (keyPath) {

			case timelineFontSizeKVOKey:
				fontSizeInDefaultsDidChange()
				return
			default:
				break
			}
		}

		super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
	}

	// MARK: Appearance Change

	private func fontSizeDidChange() {

		cellAppearance = TimelineCellAppearance(theme: appDelegate.currentTheme, showAvatar: false, fontSize: fontSize)
		cellAppearanceWithAvatar = TimelineCellAppearance(theme: appDelegate.currentTheme, showAvatar: true, fontSize: fontSize)
		updateRowHeights()
		if tableView.rowHeight != currentRowHeight {
			tableView.rowHeight = currentRowHeight
			tableView.reloadData()
		}
	}

	// MARK: - API

		}
	}

	func sortDirectionDidChange() {

		// TODO
	}

	// MARK: Fetching Articles

	func fetchArticles() {
