     }
     
     func valueForStoreKey(storeKey: UserDefaultsStoreKey<Int64?>) -> Int64? {
-        return userDefaults.objectForKey(storeKey.key) as? Int64
+        guard let value = userDefaults.objectForKey(storeKey.key) as? Int else {
+            return nil
+        }
+        
+        return NSNumber(long: value).longLongValue
     }
     
     func valueForStoreKey(storeKey: UserDefaultsStoreKey<Double?>) -> Double? {

    }
    
    func valueForStoreKey(storeKey: UserDefaultsStoreKey<Int64>) -> Int64 {
        guard let value = userDefaults.objectForKey(storeKey.key) as? Int64 else {
            return 0
        }
        
        return value
    }
    
    func valueForStoreKey(storeKey: UserDefaultsStoreKey<Double>) -> Double {

    
    func setNewValue(value: Bool, forStoreKey storeKey: UserDefaultsStoreKey<Bool>)
    func setNewValue(value: Int, forStoreKey storeKey: UserDefaultsStoreKey<Int>)
    func setNewValue(value: Int64, forStoreKey storeKey: UserDefaultsStoreKey<Int64>)
    func setNewValue(value: Double, forStoreKey storeKey: UserDefaultsStoreKey<Double>)
    func setNewValue(value: String, forStoreKey storeKey: UserDefaultsStoreKey<String>)
}
