     private func migrateAppiraterKeysIfNecessary() {
 
         let appiraterAlreadyCompletedKey: NSString = keyForArmchairKeyType(.AppiraterMigrationCompleted)
-        var appiraterMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appiraterAlreadyCompletedKey)
+        var appiraterMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appiraterAlreadyCompletedKey as String)
 
         if let completed = appiraterMigrationAlreadyCompleted {
             if completed {

    private func defaultAppName() -> String {
        let mainBundle = NSBundle.mainBundle()
        let displayName = mainBundle.objectForInfoDictionaryKey("CFBundleDisplayName") as? String
        let bundleNameKey = kCFBundleNameKey as NSString?
        let name = mainBundle.objectForInfoDictionaryKey(bundleNameKey as String) as? String
        return displayName ?? name ?? "This App"
    }
    

public class StandardUserDefaults: ArmchairDefaultsObject {
    let defaults = NSUserDefaults.standardUserDefaults()

    @objc public func objectForKey(defaultName: String) -> AnyObject?             { return defaults.objectForKey(defaultName) }
    @objc public func setObject(value: AnyObject?, forKey defaultName: String)    { defaults.setObject(value, forKey: defaultName) }
    @objc public func removeObjectForKey(defaultName: String)                     { defaults.removeObjectForKey(defaultName) }

    @objc public func stringForKey(defaultName: String) -> String?                { return defaults.stringForKey(defaultName) }
    @objc public func integerForKey(defaultName: String) -> Int                   { return defaults.integerForKey(defaultName) }
    @objc public func doubleForKey(defaultName: String) -> Double                 { return defaults.doubleForKey(defaultName) }
    @objc public func boolForKey(defaultName: String) -> Bool                     { return defaults.boolForKey(defaultName) }

    @objc public func setInteger(value: Int, forKey defaultName: String)          { defaults.setInteger(value, forKey: defaultName) }
    @objc public func setDouble(value: Double, forKey defaultName: String)        { defaults.setDouble(value, forKey: defaultName) }
    @objc public func setBool(value: Bool, forKey defaultName: String)            { defaults.setBool(value, forKey: defaultName) }

    @objc public func synchronize() -> Bool                                       { return defaults.synchronize() }
}

public enum ArmchairKey: String, Printable {
