     class func tokenWithURL(url: NSURL, secret: NSData? = nil) -> Self? {
         if let urlString = url.absoluteString {
             if let token = Token.URLSerializer.deserialize(urlString, secret: secret) {
-                return self(token: token)
+                let otp = self()
+                otp.updateWithToken(token)
+                return otp
             }
         }
         return nil

    }

    class func tokenWithKeychainItem(keychainItem: Token.KeychainItem) -> Self {
        let otp = self(token: keychainItem.token)
        otp.keychainItem = keychainItem
        return otp
    }

    class func tokenWithURL(url: NSURL) -> Self? {
        if let urlString = url.absoluteString {
            if let token = Token.URLSerializer.deserialize(urlString) {
                let otp = self()
                otp.updateWithToken(token)
                return otp
            }
        }
        return nil
