         self.name = name
         self.observed = observed
     }
+    
+    //MARK: NSCoding
+    required convenience init?(coder decoder: NSCoder) {
+        let observed = decoder.decodeBoolForKey(Team.observedPropertyName)
+        guard let name = decoder.decodeObjectForKey(Team.namePropertyName) as? String
+            else {
+                return nil;
+        }
+        self.init(name: name, observed: observed)
+    }
+    
+    
+    func encodeWithCoder(coder: NSCoder) {
+        coder.encodeObject(self.name, forKey:Team.namePropertyName)
+        coder.encodeBool(self.observed, forKey: Team.observedPropertyName)
+    }
+    
     
     func save() {
         let idx = Team.teamList.indexOf { (team: Team) -> Bool in


import Foundation

class Team: NSObject {
    
    //Temporary storage
    private static var teamList: [Team] = []
    
    //MARK: Properties
    var name: String

            Team.teamList.removeAtIndex(idx!)
            Team.teamList.append(self)
        }
        
        self.persistObservedTeams()
    }
    
    func persistObservedTeams() {
        let defaults = NSUserDefaults.standardUserDefaults()
        let data = NSKeyedArchiver.archivedDataWithRootObject(Team.teamList)
        
        defaults.setObject(data, forKey: Team.teamListPropertyName);
    }
    
    static func findByName(name name: String) -> Team? {
