 
 private extension Account {
 
+	func metadata(feedID: String) -> FeedMetadata {
+		if let d = feedMetadata[feedID] {
+			assert(d.delegate === self)
+			return d
+		}
+		let d = FeedMetadata(feedID: feedID)
+		d.delegate = self
+		feedMetadata[feedID] = d
+		return d
+	}
+
 	func updateFlattenedFeeds() {
 		var feeds = Set<Feed>()
 		feeds.formUnion(topLevelFeeds)


	private var startingUp = true

	private struct SettingsKey {
		static let unreadCount = "unreadCount"
	}
	public var dirty = false {
		didSet {
			queueSaveToDiskIfNeeded()

	}

	func rebuildFeedDictionaries() {
		var idDictionary = [String: Feed]()

		flattenedFeeds().forEach { (feed) in
