     public private(set) var authorizationCode: String
 
     //Token
-    public private(set) var accessToken: String?
-    public private(set) var accessTokenExpireDate: NSDate?
-
-    public private(set) var scope: String?
+    public fileprivate(set) var accessToken: String?
+    public fileprivate(set) var accessTokenExpireDate: Date?
+
+    public fileprivate(set) var scope: String?
 
     //Future session
-    public private(set) var refreshToken: String?
+    public fileprivate(set) var refreshToken: String?
 
     // MARK: Initialization
 


        authorizationCode = authCode
        accessToken = aDecoder.decodeObject(forKey: Session.accessTokenKey) as? String
        accessTokenExpireDate = aDecoder.decodeObject(forKey: Session.accessTokenExpireDateKey) as? NSDate
        scope = aDecoder.decodeObject(forKey: Session.scopeKey) as? String
        refreshToken = aDecoder.decodeObject(forKey: Session.refreshTokenKey) as? String
    }

        let url = URL(string: "https://api.soundcloud.com/oauth2/token")!

        let request = Request(url: url, method: .post, parameters: parameters, parse: {
            if let accessToken = $0["access_token"].stringValue,
                let expires = $0["expires_in"].doubleValue,
                let scope = $0["scope"].stringValue {
                let newSession = self.copy() as! Session
                newSession.accessToken = accessToken
                newSession.accessTokenExpireDate = Date(timeIntervalSinceNow: expires)
                newSession.scope = scope
                newSession.refreshToken = $0["refresh_token"].stringValue
                return .success(newSession)
