http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Source/UsergridRequest.swift
----------------------------------------------------------------------
diff --git a/Source/UsergridRequest.swift b/Source/UsergridRequest.swift
index 0a651e2..f0bdf42 100644
--- a/Source/UsergridRequest.swift
+++ b/Source/UsergridRequest.swift
@@ -54,7 +54,7 @@ public class UsergridRequest : NSObject {
     public let headers: [String:String]?
 
     /// The JSON body that will be set on the request.  Can be either a valid 
JSON object or NSData.
-    public let jsonBody: AnyObject?
+    public let jsonBody: Any?
     
     /// The query params that will be set on the request.
     public let queryParams: [String:String]?
@@ -81,7 +81,7 @@ public class UsergridRequest : NSObject {
         query:UsergridQuery? = nil,
         auth:UsergridAuth? = nil,
         headers:[String:String]? = nil,
-        jsonBody:AnyObject? = nil,
+        jsonBody:Any? = nil,
         queryParams:[String:String]? = nil) {
             self.method = method
             self.baseUrl = baseUrl
@@ -90,7 +90,7 @@ public class UsergridRequest : NSObject {
             self.headers = headers
             self.query = query
             self.queryParams = queryParams
-            if let body = jsonBody where (body is NSData || 
NSJSONSerialization.isValidJSONObject(body)) {
+            if let body = jsonBody , (body is Data || 
JSONSerialization.isValidJSONObject(body)) {
                 self.jsonBody = body
             } else {
                 self.jsonBody = nil
@@ -104,20 +104,20 @@ public class UsergridRequest : NSObject {
 
     - returns: An initialized and configured `NSURLRequest` object.
     */
-    public func buildNSURLRequest() -> NSURLRequest {
-        let request = NSMutableURLRequest(URL: self.buildURL())
-        request.HTTPMethod = self.method.stringValue
+    public func buildNSURLRequest() -> URLRequest {
+        let request = NSMutableURLRequest(url: self.buildURL())
+        request.httpMethod = self.method.stringValue
         self.applyHeaders(request)
         self.applyBody(request)
         self.applyAuth(request)
-        return request
+        return request as URLRequest
     }
 
-    private func buildURL() -> NSURL {
+    private func buildURL() -> URL {
         var constructedURLString = self.baseUrl
         if let appendingPaths = self.paths {
             for pathToAppend in appendingPaths {
-                if let encodedPath = 
pathToAppend.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())
 {
+                if let encodedPath = 
pathToAppend.addingPercentEncoding(withAllowedCharacters: 
CharacterSet.urlPathAllowed) {
                     constructedURLString = 
"\(constructedURLString)\(UsergridRequest.FORWARD_SLASH)\(encodedPath)"
                 }
             }
@@ -129,19 +129,19 @@ public class UsergridRequest : NSObject {
             }
         }
         if let queryParams = self.queryParams {
-            if let components = NSURLComponents(string: constructedURLString) {
+            if var components = URLComponents(string: constructedURLString) {
                 components.queryItems = components.queryItems ?? []
                 for (key, value) in queryParams {
-                    let q: NSURLQueryItem = NSURLQueryItem(name: key, value: 
value)
+                    let q: URLQueryItem = URLQueryItem(name: key, value: value)
                     components.queryItems!.append(q)
                 }
                 constructedURLString = components.string!
             }
         }
-        return NSURL(string:constructedURLString)!
+        return URL(string:constructedURLString)!
     }
 
-    private func applyHeaders(request:NSMutableURLRequest) {
+    fileprivate func applyHeaders(_ request:NSMutableURLRequest) {
         if let httpHeaders = self.headers {
             for (key,value) in httpHeaders {
                 request.setValue(value, forHTTPHeaderField: key)
@@ -149,14 +149,14 @@ public class UsergridRequest : NSObject {
         }
     }
 
-    private func applyBody(request:NSMutableURLRequest) {
-        if let jsonBody = self.jsonBody, httpBody = 
UsergridRequest.jsonBodyToData(jsonBody) {
-            request.HTTPBody = httpBody
-            request.setValue(String(format: "%lu", httpBody.length), 
forHTTPHeaderField: UsergridRequest.CONTENT_LENGTH)
+    private func applyBody(_ request:NSMutableURLRequest) {
+        if let jsonBody = self.jsonBody, let httpBody = 
UsergridRequest.jsonBodyToData(jsonBody) {
+            request.httpBody = httpBody
+            request.setValue(String(format: "%lu", httpBody.count), 
forHTTPHeaderField: UsergridRequest.CONTENT_LENGTH)
         }
     }
 
-    private func applyAuth(request:NSMutableURLRequest) {
+    private func applyAuth(_ request:NSMutableURLRequest) {
         if let usergridAuth = self.auth {
             if usergridAuth.isValid, let accessToken = 
usergridAuth.accessToken {
                 request.setValue("\(UsergridRequest.BEARER) \(accessToken)", 
forHTTPHeaderField: UsergridRequest.AUTHORIZATION)
@@ -164,26 +164,28 @@ public class UsergridRequest : NSObject {
         }
     }
 
-    private static func jsonBodyToData(jsonBody:AnyObject) -> NSData? {
-        if let jsonBodyAsNSData = jsonBody as? NSData {
+    private static func jsonBodyToData(_ jsonBody:Any) -> Data? {
+        if let jsonBodyAsNSData = jsonBody as? Data {
             return jsonBodyAsNSData
         } else {
-            var jsonBodyAsNSData: NSData? = nil
-            do { jsonBodyAsNSData = try 
NSJSONSerialization.dataWithJSONObject(jsonBody, options: 
NSJSONWritingOptions(rawValue: 0)) }
+            var jsonBodyAsNSData: Data? = nil
+            do { jsonBodyAsNSData = try JSONSerialization.data(withJSONObject: 
jsonBody, options: JSONSerialization.WritingOptions(rawValue: 0)) }
             catch { print(error) }
             return jsonBodyAsNSData
         }
     }
 
-    private static let AUTHORIZATION = "Authorization"
-    private static let ACCESS_TOKEN = "access_token"
-    private static let APPLICATION_JSON = "application/json; charset=utf-8"
-    private static let BEARER = "Bearer"
-    private static let CONTENT_LENGTH = "Content-Length"
-    private static let CONTENT_TYPE = "Content-Type"
-    private static let FORWARD_SLASH = "/"
+    fileprivate static let AUTHORIZATION = "Authorization"
+    fileprivate static let ACCESS_TOKEN = "access_token"
+    fileprivate static let APPLICATION_JSON = "application/json; charset=utf-8"
+    fileprivate static let BEARER = "Bearer"
+    fileprivate static let CONTENT_LENGTH = "Content-Length"
+    fileprivate static let CONTENT_TYPE = "Content-Type"
+    fileprivate static let FORWARD_SLASH = "/"
 
-    static let JSON_CONTENT_TYPE_HEADER = 
[UsergridRequest.CONTENT_TYPE:UsergridRequest.APPLICATION_JSON]
+    static func jsonHeaderContentType() -> [String:String] {
+        return [UsergridRequest.CONTENT_TYPE:UsergridRequest.APPLICATION_JSON]
+    }
 }
 
 /**
@@ -197,15 +199,16 @@ public class UsergridAssetUploadRequest: UsergridRequest {
     public let asset: UsergridAsset
 
     /// A constructed multipart http body for requests to upload.
-    public var multiPartHTTPBody: NSData {
+    public var multiPartHTTPBody: Data {
         let httpBodyString = UsergridAssetUploadRequest.MULTIPART_START +
             
"\(UsergridAssetUploadRequest.CONTENT_DISPOSITION):\(UsergridAssetUploadRequest.FORM_DATA);
 name=file; filename=\(self.asset.filename)\r\n" +
-            "\(UsergridRequest.CONTENT_TYPE): 
\(self.asset.contentType)\r\n\r\n" as NSString
+            "\(UsergridRequest.CONTENT_TYPE): 
\(self.asset.contentType)\r\n\r\n"
+
 
-        let httpBody = NSMutableData()
-        
httpBody.appendData(httpBodyString.dataUsingEncoding(NSUTF8StringEncoding)!)
-        httpBody.appendData(self.asset.data)
-        
httpBody.appendData(UsergridAssetUploadRequest.MULTIPART_END.dataUsingEncoding(NSUTF8StringEncoding)!)
+        var httpBody = Data()
+        httpBody.append(httpBodyString.data(using: String.Encoding.utf8)!)
+        httpBody.append(self.asset.data)
+        httpBody.append(UsergridAssetUploadRequest.MULTIPART_END.data(using: 
String.Encoding.utf8)!)
 
         return httpBody
     }
@@ -227,19 +230,19 @@ public class UsergridAssetUploadRequest: UsergridRequest {
                 auth:UsergridAuth? = nil,
                 asset:UsergridAsset) {
                     self.asset = asset
-                    super.init(method: .Put, baseUrl: baseUrl, paths: paths, 
auth: auth)
+                    super.init(method: .put, baseUrl: baseUrl, paths: paths, 
auth: auth)
     }
 
-    private override func applyHeaders(request: NSMutableURLRequest) {
+    fileprivate override func applyHeaders(_ request: NSMutableURLRequest) {
         super.applyHeaders(request)
         
request.setValue(UsergridAssetUploadRequest.ASSET_UPLOAD_CONTENT_HEADER, 
forHTTPHeaderField: UsergridRequest.CONTENT_TYPE)
-        request.setValue(String(format: "%lu", self.multiPartHTTPBody.length), 
forHTTPHeaderField: UsergridRequest.CONTENT_LENGTH)
+        request.setValue(String(format: "%lu", self.multiPartHTTPBody.count), 
forHTTPHeaderField: UsergridRequest.CONTENT_LENGTH)
     }
 
     private static let ASSET_UPLOAD_BOUNDARY = "usergrid-asset-upload-boundary"
     private static let ASSET_UPLOAD_CONTENT_HEADER = "multipart/form-data; 
boundary=\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)"
     private static let CONTENT_DISPOSITION = "Content-Disposition"
     private static let MULTIPART_START = 
"--\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)\r\n"
-    private static let MULTIPART_END = 
"\r\n--\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)--\r\n" as NSString
+    private static let MULTIPART_END = 
"\r\n--\(UsergridAssetUploadRequest.ASSET_UPLOAD_BOUNDARY)--\r\n"
     private static let FORM_DATA = "form-data"
 }

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Source/UsergridRequestManager.swift
----------------------------------------------------------------------
diff --git a/Source/UsergridRequestManager.swift 
b/Source/UsergridRequestManager.swift
index 46a4213..a876f81 100644
--- a/Source/UsergridRequestManager.swift
+++ b/Source/UsergridRequestManager.swift
@@ -30,7 +30,7 @@ final class UsergridRequestManager {
 
     unowned let client: UsergridClient
 
-    let session: NSURLSession
+    let session: URLSession
 
     var sessionDelegate : UsergridSessionDelegate {
         return session.delegate as! UsergridSessionDelegate
@@ -39,19 +39,19 @@ final class UsergridRequestManager {
     init(client:UsergridClient) {
         self.client = client
 
-        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
+        let config = URLSessionConfiguration.default
 
         #if os(tvOS)
-        config.HTTPAdditionalHeaders = ["User-Agent": 
"usergrid-tvOS/v\(UsergridSDKVersion)"]
+        config.httpAdditionalHeaders = ["User-Agent": 
"usergrid-tvOS/v\(UsergridSDKVersion)"]
         #elseif os(iOS)
-        config.HTTPAdditionalHeaders = ["User-Agent": 
"usergrid-ios/v\(UsergridSDKVersion)"]
+        config.httpAdditionalHeaders = ["User-Agent": 
"usergrid-ios/v\(UsergridSDKVersion)"]
         #elseif os(watchOS)
-        config.HTTPAdditionalHeaders = ["User-Agent": 
"usergrid-watchOS/v\(UsergridSDKVersion)"]
+        config.httpAdditionalHeaders = ["User-Agent": 
"usergrid-watchOS/v\(UsergridSDKVersion)"]
         #elseif os(OSX)
-        config.HTTPAdditionalHeaders = ["User-Agent": 
"usergrid-osx/v\(UsergridSDKVersion)"]
+        config.httpAdditionalHeaders = ["User-Agent": 
"usergrid-osx/v\(UsergridSDKVersion)"]
         #endif
 
-        self.session = NSURLSession(configuration:  config,
+        self.session = URLSession(configuration:  config,
                                     delegate:       UsergridSessionDelegate(),
                                     delegateQueue:  nil)
     }
@@ -60,11 +60,11 @@ final class UsergridRequestManager {
         session.invalidateAndCancel()
     }
 
-    func performRequest(request:UsergridRequest, 
completion:UsergridResponseCompletion?) {
-        session.dataTaskWithRequest(request.buildNSURLRequest()) { [weak self] 
(data, response, error) -> Void in
-            let response = UsergridResponse(client:self?.client, data: data, 
response: response as? NSHTTPURLResponse, error: error)
-            dispatch_async(dispatch_get_main_queue()) {
-                completion?(response: response)
+    func performRequest(_ request:UsergridRequest, 
completion:UsergridResponseCompletion?) {
+        session.dataTask(with: request.buildNSURLRequest()) { [weak self] 
(data, response, error) -> Void in
+            let usergridResponse = UsergridResponse(client:self?.client, data: 
data, response: response as? HTTPURLResponse, error: error as NSError?)
+            DispatchQueue.main.async {
+                completion?(usergridResponse)
             }
         }.resume()
     }
@@ -74,32 +74,32 @@ final class UsergridRequestManager {
 // MARK: - Authentication -
 extension UsergridRequestManager {
 
-    static func getTokenAndExpiryFromResponseJSON(jsonDict:[String:AnyObject]) 
-> (token:String?,expiry:NSDate?) {
+    static func getTokenAndExpiryFromResponseJSON(_ jsonDict:[String:Any]) -> 
(token:String?,expiry:Date?) {
         var token: String? = nil
-        var expiry: NSDate? = nil
+        var expiry: Date? = nil
         if let accessToken = jsonDict["access_token"] as? String {
             token = accessToken
         }
         if let expiresIn = jsonDict["expires_in"] as? Int {
             let expiresInAdjusted = expiresIn - 5000
-            expiry = NSDate(timeIntervalSinceNow: 
NSTimeInterval(expiresInAdjusted))
+            expiry = Date(timeIntervalSinceNow: 
TimeInterval(expiresInAdjusted))
         }
         return (token,expiry)
     }
 
-    func performUserAuthRequest(userAuth:UsergridUserAuth, 
request:UsergridRequest, completion:UsergridUserAuthCompletionBlock?) {
-        session.dataTaskWithRequest(request.buildNSURLRequest()) { (data, 
response, error) -> Void in
-            let dataAsJSON = try! 
NSJSONSerialization.JSONObjectWithData(data!, options: 
NSJSONReadingOptions.MutableContainers)
+    func performUserAuthRequest(_ userAuth:UsergridUserAuth, 
request:UsergridRequest, completion:UsergridUserAuthCompletionBlock?) {
+        session.dataTask(with: request.buildNSURLRequest()) { (data, response, 
error) -> Void in
+            let dataAsJSON = try! JSONSerialization.jsonObject(with: data!, 
options: JSONSerialization.ReadingOptions.mutableContainers)
 
             var createdUser: UsergridUser? = nil
             var responseError: UsergridResponseError? = nil
 
-            if let jsonDict = dataAsJSON as? [String:AnyObject] {
+            if let jsonDict = dataAsJSON as? [String:Any] {
                 let tokenAndExpiry = 
UsergridRequestManager.getTokenAndExpiryFromResponseJSON(jsonDict)
                 userAuth.accessToken = tokenAndExpiry.token
                 userAuth.expiry = tokenAndExpiry.expiry
 
-                if let userDict = jsonDict[UsergridUser.USER_ENTITY_TYPE] as? 
[String:AnyObject] {
+                if let userDict = jsonDict[UsergridUser.USER_ENTITY_TYPE] as? 
[String:Any] {
                     if let newUser = UsergridEntity.entity(jsonDict: userDict) 
as? UsergridUser {
                         newUser.auth = userAuth
                         createdUser = newUser
@@ -112,19 +112,19 @@ extension UsergridRequestManager {
                 responseError = UsergridResponseError(errorName: "Auth 
Failed.", errorDescription: "Error Description: 
\(error?.localizedDescription).")
             }
 
-            dispatch_async(dispatch_get_main_queue()) {
-                completion?(auth: userAuth, user: createdUser, error: 
responseError)
+            DispatchQueue.main.async {
+                completion?(userAuth, createdUser, responseError)
             }
         }.resume()
     }
 
-    func performAppAuthRequest(appAuth: UsergridAppAuth, request: 
UsergridRequest, completion: UsergridAppAuthCompletionBlock?) {
-        session.dataTaskWithRequest(request.buildNSURLRequest()) { (data, 
response, error) -> Void in
-            let dataAsJSON = try! 
NSJSONSerialization.JSONObjectWithData(data!, options: 
NSJSONReadingOptions.MutableContainers)
+    func performAppAuthRequest(_ appAuth: UsergridAppAuth, request: 
UsergridRequest, completion: UsergridAppAuthCompletionBlock?) {
+        session.dataTask(with: request.buildNSURLRequest()) { (data, response, 
error) -> Void in
+            let dataAsJSON = try! JSONSerialization.jsonObject(with: data!, 
options: JSONSerialization.ReadingOptions.mutableContainers)
 
             var responseError: UsergridResponseError? = nil
 
-            if let jsonDict = dataAsJSON as? [String:AnyObject] {
+            if let jsonDict = dataAsJSON as? [String:Any] {
                 let tokenAndExpiry = 
UsergridRequestManager.getTokenAndExpiryFromResponseJSON(jsonDict)
                 appAuth.accessToken = tokenAndExpiry.token
                 appAuth.expiry = tokenAndExpiry.expiry
@@ -132,8 +132,8 @@ extension UsergridRequestManager {
                 responseError = UsergridResponseError(errorName: "Auth 
Failed.", errorDescription: "Error Description: 
\(error?.localizedDescription).")
             }
 
-            dispatch_async(dispatch_get_main_queue()) {
-                completion?(auth: appAuth, error: responseError)
+            DispatchQueue.main.async {
+                completion?(appAuth, responseError)
             }
         }.resume()
     }
@@ -142,35 +142,35 @@ extension UsergridRequestManager {
 // MARK: - Asset Management -
 extension UsergridRequestManager {
 
-    func performAssetDownload(contentType:String, 
usergridRequest:UsergridRequest, progress: UsergridAssetRequestProgress? = nil, 
completion:UsergridAssetDownloadCompletion? = nil) {
-        let downloadTask = 
session.downloadTaskWithRequest(usergridRequest.buildNSURLRequest())
+    func performAssetDownload(_ contentType:String, 
usergridRequest:UsergridRequest, progress: UsergridAssetRequestProgress? = nil, 
completion:UsergridAssetDownloadCompletion? = nil) {
+        let downloadTask = session.downloadTask(with: 
usergridRequest.buildNSURLRequest())
         let requestWrapper = UsergridAssetRequestWrapper(session: 
self.session, sessionTask: downloadTask, progress: progress)  { (request) -> 
Void in
             var asset: UsergridAsset? = nil
             var responseError: UsergridResponseError? = nil
 
-            if let assetData = request.responseData where assetData.length > 0 
{
+            if let assetData = request.responseData , assetData.count > 0 {
                 asset = UsergridAsset(data: assetData, contentType: 
contentType)
             } else {
                 responseError = UsergridResponseError(errorName: "Download 
Failed.", errorDescription: "Downloading asset failed.  No data was recieved.")
             }
 
-            dispatch_async(dispatch_get_main_queue()) {
-                completion?(asset: asset, error: responseError)
+            DispatchQueue.main.async {
+                completion?(asset, responseError)
             }
         }
         self.sessionDelegate.addRequestDelegate(requestWrapper.sessionTask, 
requestWrapper:requestWrapper)
         requestWrapper.sessionTask.resume()
     }
 
-    func performAssetUpload(usergridRequest:UsergridAssetUploadRequest, 
progress:UsergridAssetRequestProgress? = nil, completion: 
UsergridAssetUploadCompletion? = nil) {
-        let uploadTask = 
session.uploadTaskWithRequest(usergridRequest.buildNSURLRequest(), fromData: 
usergridRequest.multiPartHTTPBody)
+    func performAssetUpload(_ usergridRequest:UsergridAssetUploadRequest, 
progress:UsergridAssetRequestProgress? = nil, completion: 
UsergridAssetUploadCompletion? = nil) {
+        let uploadTask = session.uploadTask(with: 
usergridRequest.buildNSURLRequest() as URLRequest, from: 
usergridRequest.multiPartHTTPBody as Data)
         let requestWrapper = UsergridAssetRequestWrapper(session: 
self.session, sessionTask: uploadTask, progress: progress)  { [weak self] 
(request) -> Void in
-            let response = UsergridResponse(client: self?.client, data: 
request.responseData, response: request.response as? NSHTTPURLResponse, error: 
request.error)
-            dispatch_async(dispatch_get_main_queue()) {
-                completion?(asset: usergridRequest.asset, response: response)
+            let response = UsergridResponse(client: self?.client, data: 
request.responseData, response: request.response as? HTTPURLResponse, error: 
request.error)
+            DispatchQueue.main.async {
+                completion?(usergridRequest.asset, response)
             }
         }
         self.sessionDelegate.addRequestDelegate(requestWrapper.sessionTask, 
requestWrapper:requestWrapper)
         requestWrapper.sessionTask.resume()
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Source/UsergridResponse.swift
----------------------------------------------------------------------
diff --git a/Source/UsergridResponse.swift b/Source/UsergridResponse.swift
index b9e58ec..525bfde 100644
--- a/Source/UsergridResponse.swift
+++ b/Source/UsergridResponse.swift
@@ -27,7 +27,7 @@
 import Foundation
 
 /// The completion block used in for most `UsergridClient` requests.
-public typealias UsergridResponseCompletion = (response: UsergridResponse) -> 
Void
+public typealias UsergridResponseCompletion = (_ response: UsergridResponse) 
-> Void
 
 /**
 `UsergridResponse` is the core class that handles both successful and 
unsuccessful HTTP responses from Usergrid. 
@@ -44,7 +44,7 @@ public class UsergridResponse: NSObject {
     public weak var client: UsergridClient?
 
     /// The raw response JSON.
-    internal(set) public var responseJSON: [String:AnyObject]?
+    internal(set) public var responseJSON: [String:Any]?
 
     /// The query used on the request.
     internal(set) public var query: UsergridQuery?
@@ -97,7 +97,7 @@ public class UsergridResponse: NSObject {
     /// The string value.
     public var stringValue : String {
         if let responseJSON = self.responseJSON {
-            return NSString(data: try! 
NSJSONSerialization.dataWithJSONObject(responseJSON, options: .PrettyPrinted), 
encoding: NSUTF8StringEncoding) as? String ?? ""
+            return NSString(data: try! JSONSerialization.data(withJSONObject: 
responseJSON, options: .prettyPrinted), encoding: 
String.Encoding.utf8.rawValue) as? String ?? ""
         } else {
             return error?.description ?? ""
         }
@@ -142,10 +142,10 @@ public class UsergridResponse: NSObject {
 
     - returns: A new instance of `UsergridResponse`.
     */
-    public init(client:UsergridClient?, data:NSData?, 
response:NSHTTPURLResponse?, error:NSError?, query:UsergridQuery? = nil) {
+    public init(client:UsergridClient?, data:Data?, response:HTTPURLResponse?, 
error:NSError?, query:UsergridQuery? = nil) {
         self.client = client
         self.statusCode = response?.statusCode
-        self.headers = response?.allHeaderFields as? [String:String]
+//        self.headers = response?.allHeaderFields as? [String:String]
 
         if let sessionError = error {
             self.error = UsergridResponseError(errorName: sessionError.domain, 
errorDescription: sessionError.localizedDescription)
@@ -157,16 +157,16 @@ public class UsergridResponse: NSObject {
 
         if let jsonData = data {
             do {
-                let dataAsJSON = try 
NSJSONSerialization.JSONObjectWithData(jsonData, options: 
NSJSONReadingOptions.MutableContainers)
-                if let jsonDict = dataAsJSON as? [String:AnyObject] {
+                let dataAsJSON = try JSONSerialization.jsonObject(with: 
jsonData, options: JSONSerialization.ReadingOptions.mutableContainers)
+                if let jsonDict = dataAsJSON as? [String:Any] {
                     self.responseJSON = jsonDict
                     if let responseError = 
UsergridResponseError(jsonDictionary: jsonDict) {
                         self.error = responseError
                     } else {
-                        if let entitiesJSONArray = 
jsonDict[UsergridResponse.ENTITIES] as? [[String:AnyObject]] where 
entitiesJSONArray.count > 0 {
+                        if let entitiesJSONArray = 
jsonDict[UsergridResponse.ENTITIES] as? [[String:Any]] , 
entitiesJSONArray.count > 0 {
                             self.entities = UsergridEntity.entities(jsonArray: 
entitiesJSONArray)
                         }
-                        if let cursor = jsonDict[UsergridResponse.CURSOR] as? 
String where !cursor.isEmpty {
+                        if let cursor = jsonDict[UsergridResponse.CURSOR] as? 
String , !cursor.isEmpty {
                             self.cursor = cursor
                         }
                     }
@@ -186,7 +186,7 @@ public class UsergridResponse: NSObject {
 
     - parameter completion: The completion block that is called once the 
request for the next page has finished.
     */
-    public func loadNextPage(completion: UsergridResponseCompletion) {
+    public func loadNextPage(_ completion: UsergridResponseCompletion) {
         if self.hasNextPage, let type = (self.responseJSON?["path"] as? 
NSString)?.lastPathComponent {
             if let query = self.query?.copy() as? UsergridQuery {
                 self.client?.GET(query.cursor(self.cursor), 
queryCompletion:completion)
@@ -194,7 +194,7 @@ public class UsergridResponse: NSObject {
                 self.client?.GET(UsergridQuery(type).cursor(self.cursor), 
queryCompletion:completion)
             }
         } else {
-            completion(response: UsergridResponse(client: self.client, 
errorName: "No next page.", errorDescription: "No next page was found."))
+            completion(UsergridResponse(client: self.client, errorName: "No 
next page.", errorDescription: "No next page was found."))
         }
     }
 

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Source/UsergridResponseError.swift
----------------------------------------------------------------------
diff --git a/Source/UsergridResponseError.swift 
b/Source/UsergridResponseError.swift
index eda8a30..f4dbc4a 100644
--- a/Source/UsergridResponseError.swift
+++ b/Source/UsergridResponseError.swift
@@ -74,9 +74,9 @@ public class UsergridResponseError: NSObject {
 
      - returns: A new instance of `UsergridResponseError` if the JSON 
dictionary did indeed contain error information.
      */
-    public convenience init?(jsonDictionary:[String:AnyObject]) {
+    public convenience init?(jsonDictionary:[String:Any]) {
         if let errorName = jsonDictionary[USERGRID_ERROR] as? String,
-               errorDescription = jsonDictionary[USERGRID_ERROR_DESCRIPTION] 
as? String {
+               let errorDescription = 
jsonDictionary[USERGRID_ERROR_DESCRIPTION] as? String {
             
self.init(errorName:errorName,errorDescription:errorDescription,exception:jsonDictionary[USERGRID_EXCEPTION]
 as? String)
         } else {
             self.init(errorName:"",errorDescription:"")
@@ -87,4 +87,4 @@ public class UsergridResponseError: NSObject {
 
 let USERGRID_ERROR = "error"
 let USERGRID_ERROR_DESCRIPTION = "error_description"
-let USERGRID_EXCEPTION = "exception"
\ No newline at end of file
+let USERGRID_EXCEPTION = "exception"

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Source/UsergridSessionDelegate.swift
----------------------------------------------------------------------
diff --git a/Source/UsergridSessionDelegate.swift 
b/Source/UsergridSessionDelegate.swift
index cb36fb7..7866c26 100644
--- a/Source/UsergridSessionDelegate.swift
+++ b/Source/UsergridSessionDelegate.swift
@@ -28,63 +28,63 @@ import Foundation
 
 final class UsergridSessionDelegate: NSObject {
 
-    private var requestDelegates: [Int:UsergridAssetRequestWrapper] = [:]
+    fileprivate var requestDelegates: [Int:UsergridAssetRequestWrapper] = [:]
 
-    func 
addRequestDelegate(task:NSURLSessionTask,requestWrapper:UsergridAssetRequestWrapper)
 {
+    func addRequestDelegate(_ 
task:URLSessionTask,requestWrapper:UsergridAssetRequestWrapper) {
         requestDelegates[task.taskIdentifier] = requestWrapper
     }
 
-    func removeRequestDelegate(task:NSURLSessionTask) {
+    func removeRequestDelegate(_ task:URLSessionTask) {
         requestDelegates[task.taskIdentifier] = nil
     }
 }
 
-extension UsergridSessionDelegate : NSURLSessionTaskDelegate {
+extension UsergridSessionDelegate : URLSessionTaskDelegate {
 
-    func URLSession(session: NSURLSession, task: NSURLSessionTask, 
didSendBodyData bytesSent: Int64, totalBytesSent: Int64, 
totalBytesExpectedToSend: Int64) {
+    func urlSession(_ session: URLSession, task: URLSessionTask, 
didSendBodyData bytesSent: Int64, totalBytesSent: Int64, 
totalBytesExpectedToSend: Int64) {
         if let progressBlock = requestDelegates[task.taskIdentifier]?.progress 
{
-            progressBlock(bytesFinished:totalBytesSent, bytesExpected: 
totalBytesExpectedToSend)
+            progressBlock(totalBytesSent, totalBytesExpectedToSend)
         }
     }
 
-    func URLSession(session: NSURLSession, task: NSURLSessionTask, 
didCompleteWithError error: NSError?) {
+    func urlSession(_ session: URLSession, task: URLSessionTask, 
didCompleteWithError error: Error?) {
         if let requestWrapper = requestDelegates[task.taskIdentifier] {
-            requestWrapper.error = error
-            requestWrapper.completion(requestWrapper: requestWrapper)
+            requestWrapper.error = error as? NSError // WTF
+            requestWrapper.completion(requestWrapper)
         }
         self.removeRequestDelegate(task)
     }
 }
 
-extension UsergridSessionDelegate : NSURLSessionDataDelegate {
+extension UsergridSessionDelegate : URLSessionDataDelegate {
 
-    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, 
didReceiveResponse response: NSURLResponse, completionHandler: 
(NSURLSessionResponseDisposition) -> Void) {
+    public func urlSession(_ session: URLSession, dataTask: 
URLSessionDataTask, didReceive response: URLResponse, completionHandler: 
@escaping (URLSession.ResponseDisposition) -> Swift.Void) {
         if let requestWrapper = requestDelegates[dataTask.taskIdentifier] {
             requestWrapper.response = response
         }
-        completionHandler(NSURLSessionResponseDisposition.Allow)
+        completionHandler(Foundation.URLSession.ResponseDisposition.allow)
     }
 
-    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, 
didReceiveData data: NSData) {
+    public func urlSession(_ session: URLSession, dataTask: 
URLSessionDataTask, didReceive data: Data) {
         if let requestWrapper = requestDelegates[dataTask.taskIdentifier] {
-            let mutableData = requestWrapper.responseData != nil ? 
NSMutableData(data: requestWrapper.responseData!) : NSMutableData()
-            mutableData.appendData(data)
+            var mutableData = requestWrapper.responseData != nil ? 
(NSMutableData(data: requestWrapper.responseData!) as Data) : Data()
+            mutableData.append(data)
             requestWrapper.responseData = mutableData
         }
     }
 }
 
-extension UsergridSessionDelegate : NSURLSessionDownloadDelegate {
+extension UsergridSessionDelegate : URLSessionDownloadDelegate {
 
-    func URLSession(session: NSURLSession, downloadTask: 
NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: 
Int64, totalBytesExpectedToWrite: Int64) {
+    func urlSession(_ session: URLSession, downloadTask: 
URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: 
Int64, totalBytesExpectedToWrite: Int64) {
         if let progressBlock = 
requestDelegates[downloadTask.taskIdentifier]?.progress {
-            progressBlock(bytesFinished:totalBytesWritten, bytesExpected: 
totalBytesExpectedToWrite)
+            progressBlock(totalBytesWritten, totalBytesExpectedToWrite)
         }
     }
 
-    func URLSession(session: NSURLSession, downloadTask: 
NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
+    func urlSession(_ session: URLSession, downloadTask: 
URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
         if let requestWrapper = requestDelegates[downloadTask.taskIdentifier] {
-            requestWrapper.responseData = NSData(contentsOfURL: location)!
+            requestWrapper.responseData = try! Data(contentsOf: location)
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Source/UsergridUser.swift
----------------------------------------------------------------------
diff --git a/Source/UsergridUser.swift b/Source/UsergridUser.swift
index 17415ba..f01430b 100644
--- a/Source/UsergridUser.swift
+++ b/Source/UsergridUser.swift
@@ -27,10 +27,10 @@
 import Foundation
 
 /// The completion block used for checking email and/or username availablity 
for new `UsergridUser` objects.
-public typealias UsergridUserAvailabilityCompletion = (error: 
UsergridResponseError?, available:Bool) -> Void
+public typealias UsergridUserAvailabilityCompletion = (_ error: 
UsergridResponseError?, _ available:Bool) -> Void
 
 /// The completion block used for changing the password of `UsergridUser` 
objects.
-public typealias UsergridUserResetPasswordCompletion = (error: 
UsergridResponseError?, didSucceed:Bool) -> Void
+public typealias UsergridUserResetPasswordCompletion = (_ error: 
UsergridResponseError?, _ didSucceed:Bool) -> Void
 
 /**
 `UsergridUser` is a special subclass of `UsergridEntity` that supports 
functions and properties unique to users.
@@ -50,32 +50,32 @@ public class UsergridUser : UsergridEntity {
     Unlike `UsergridEntity` objects, `UsergridUser`'s can change their name 
property which is why we provide a getter here.
     */
     override public var name: String? {
-        set(name) { self[UsergridUserProperties.Name.stringValue] = name }
+        set(name) { self[UsergridUserProperties.name.stringValue] = name }
         get{ return super.name }
     }
 
     /// Property getter and setter helpers for the `UsergridUser` objects 
`UsergridUserProperties.Username`.
     public var username: String? {
-        set(username) { self[UsergridUserProperties.Username.stringValue] = 
username }
-        get { return self.getUserSpecificProperty(.Username) as? String }
+        set(username) { self[UsergridUserProperties.username.stringValue] = 
username }
+        get { return self.getUserSpecificProperty(.username) as? String }
     }
 
     /// Property getter and setter helpers for the `UsergridUser` objects 
`UsergridUserProperties.Password`.
     public var password: String? {
-        set(password) { self[UsergridUserProperties.Password.stringValue] = 
password }
-        get { return self.getUserSpecificProperty(.Password) as? String }
+        set(password) { self[UsergridUserProperties.password.stringValue] = 
password }
+        get { return self.getUserSpecificProperty(.password) as? String }
     }
 
     /// Property getter and setter helpers for the `UsergridUser` objects 
`UsergridUserProperties.Email`.
     public var email: String? {
-        set(email) { self[UsergridUserProperties.Email.stringValue] = email }
-        get { return self.getUserSpecificProperty(.Email) as? String }
+        set(email) { self[UsergridUserProperties.email.stringValue] = email }
+        get { return self.getUserSpecificProperty(.email) as? String }
     }
 
     /// Property getter and setter helpers for the `UsergridUser` objects 
`UsergridUserProperties.Age`.
     public var age: NSNumber? {
-        set(age) { self[UsergridUserProperties.Age.stringValue] = age }
-        get { return self.getUserSpecificProperty(.Age) as? NSNumber }
+        set(age) { self[UsergridUserProperties.age.stringValue] = age }
+        get { return self.getUserSpecificProperty(.age) as? NSNumber }
     }
 
     /// Property helper method to get the username or email of the 
`UsergridUser`.
@@ -87,14 +87,14 @@ public class UsergridUser : UsergridEntity {
     Indicates whether the user account has been activated or not.
     */
     public var activated: Bool {
-        set(activated) { self[UsergridUserProperties.Activated.stringValue] = 
activated }
-        get { return self.getUserSpecificProperty(.Activated) as? Bool ?? 
false }
+        set(activated) { self[UsergridUserProperties.activated.stringValue] = 
activated }
+        get { return self.getUserSpecificProperty(.activated) as? Bool ?? 
false }
     }
 
     /// Property getter and setter helpers for the `UsergridUser` objects 
`UsergridUserProperties.Disabled`.
     public var disabled: Bool {
-        set(disabled) { self[UsergridUserProperties.Disabled.stringValue] = 
disabled }
-        get { return self.getUserSpecificProperty(.Disabled) as? Bool ?? false 
}
+        set(disabled) { self[UsergridUserProperties.disabled.stringValue] = 
disabled }
+        get { return self.getUserSpecificProperty(.disabled) as? Bool ?? false 
}
     }
 
     /**
@@ -103,8 +103,8 @@ public class UsergridUser : UsergridEntity {
     URL path to user’s profile picture. Defaults to Gravatar for email 
address.
     */
     public var picture: String? {
-        set(picture) { self[UsergridUserProperties.Picture.stringValue] = 
picture }
-        get { return self.getUserSpecificProperty(.Picture) as? String }
+        set(picture) { self[UsergridUserProperties.picture.stringValue] = 
picture }
+        get { return self.getUserSpecificProperty(.picture) as? String }
     }
 
     /// The UUID or username property value if found.
@@ -132,7 +132,7 @@ public class UsergridUser : UsergridEntity {
 
      - returns: A new `UsergridUser` object.
      */
-    required public init(type: String, name: String?, propertyDict: [String : 
AnyObject]?) {
+    required public init(type: String, name: String?, propertyDict: [String : 
Any]?) {
         super.init(type: type, name: name, propertyDict: propertyDict)
     }
 
@@ -144,7 +144,7 @@ public class UsergridUser : UsergridEntity {
 
     - returns: A new instance of `UsergridUser`.
     */
-    public init(name:String,propertyDict:[String:AnyObject]? = nil) {
+    public init(name:String,propertyDict:[String:Any]? = nil) {
         super.init(type: UsergridUser.USER_ENTITY_TYPE, name:name, 
propertyDict:propertyDict)
     }
 
@@ -225,7 +225,7 @@ public class UsergridUser : UsergridEntity {
     - returns: A decoded `UsergridUser` object.
     */
     required public init?(coder aDecoder: NSCoder) {
-        self.auth = aDecoder.decodeObjectForKey("auth") as? UsergridUserAuth
+        self.auth = aDecoder.decodeObject(forKey: "auth") as? UsergridUserAuth
         super.init(coder: aDecoder)
     }
 
@@ -234,9 +234,9 @@ public class UsergridUser : UsergridEntity {
 
      - parameter aCoder: The encoder.
      */
-    public override func encodeWithCoder(aCoder: NSCoder) {
-        aCoder.encodeObject(self.auth, forKey: "auth")
-        super.encodeWithCoder(aCoder)
+    public override func encode(with aCoder: NSCoder) {
+        aCoder.encode(self.auth, forKey: "auth")
+        super.encode(with: aCoder)
     }
 
     // MARK: - Class Methods -
@@ -248,7 +248,7 @@ public class UsergridUser : UsergridEntity {
     - parameter username:   The optional username.
     - parameter completion: The completion block.
     */
-    public static func checkAvailable(email:String?, username:String?, 
completion:UsergridUserAvailabilityCompletion) {
+    public static func checkAvailable(_ email:String?, username:String?, 
completion:UsergridUserAvailabilityCompletion) {
         self.checkAvailable(Usergrid.sharedInstance, email: email, username: 
username, completion: completion)
     }
 
@@ -260,16 +260,16 @@ public class UsergridUser : UsergridEntity {
      - parameter username:   The optional username.
      - parameter completion: The completion block.
      */
-    public static func checkAvailable(client: UsergridClient, email:String?, 
username:String?, completion:UsergridUserAvailabilityCompletion) {
+    public static func checkAvailable(_ client: UsergridClient, email:String?, 
username:String?, completion:UsergridUserAvailabilityCompletion) {
         let query = UsergridQuery(USER_ENTITY_TYPE)
         if let emailValue = email {
-            query.eq(UsergridUserProperties.Email.stringValue, value: 
emailValue)
+            query.eq(UsergridUserProperties.email.stringValue, value: 
emailValue)
         }
         if let usernameValue = username {
-            query.or().eq(UsergridUserProperties.Username.stringValue, value: 
usernameValue)
+            query.or().eq(UsergridUserProperties.username.stringValue, value: 
usernameValue)
         }
         client.GET(query) { (response) -> Void in
-            completion(error: response.error, available: response.entity == 
nil)
+            completion(response.error, response.entity == nil)
         }
     }
 
@@ -280,7 +280,7 @@ public class UsergridUser : UsergridEntity {
 
     - parameter completion: The optional completion block.
     */
-    public func create(completion: UsergridResponseCompletion? = nil) {
+    public func create(_ completion: UsergridResponseCompletion? = nil) {
         self.create(Usergrid.sharedInstance, completion: completion)
     }
 
@@ -290,12 +290,12 @@ public class UsergridUser : UsergridEntity {
     - parameter client:     The client to use for creation.
     - parameter completion: The optional completion block.
     */
-    public func create(client: UsergridClient, completion: 
UsergridResponseCompletion? = nil) {
+    public func create(_ client: UsergridClient, completion: 
UsergridResponseCompletion? = nil) {
         client.POST(self) { (response) -> Void in
             if response.ok, let createdUser = response.user {
                 self.copyInternalsFromEntity(createdUser)
             }
-            completion?(response: response)
+            completion?(response)
         }
     }
 
@@ -308,7 +308,7 @@ public class UsergridUser : UsergridEntity {
     - parameter password:   The password.
     - parameter completion: The optional completion block.
     */
-    public func login(username:String, password:String, completion: 
UsergridUserAuthCompletionBlock? = nil) {
+    public func login(_ username:String, password:String, completion: 
UsergridUserAuthCompletionBlock? = nil) {
         self.login(Usergrid.sharedInstance, username: username, password: 
password, completion: completion)
     }
 
@@ -322,11 +322,11 @@ public class UsergridUser : UsergridEntity {
     - parameter password:   The password.
     - parameter completion: The optional completion block.
     */
-    public func login(client: UsergridClient, username:String, 
password:String, completion: UsergridUserAuthCompletionBlock? = nil) {
+    public func login(_ client: UsergridClient, username:String, 
password:String, completion: UsergridUserAuthCompletionBlock? = nil) {
         let userAuth = UsergridUserAuth(username: username, password: password)
         client.authenticateUser(userAuth,setAsCurrentUser:false) { (auth, 
user, error) -> Void in
             self.auth = userAuth
-            completion?(auth: userAuth, user: user, error: error)
+            completion?(userAuth, user, error)
         }
     }
 
@@ -337,7 +337,7 @@ public class UsergridUser : UsergridEntity {
      - parameter new:        The new password.
      - parameter completion: The optional completion block.
      */
-    public func resetPassword(old:String, new:String, 
completion:UsergridUserResetPasswordCompletion? = nil) {
+    public func resetPassword(_ old:String, new:String, 
completion:UsergridUserResetPasswordCompletion? = nil) {
         self.resetPassword(Usergrid.sharedInstance, old: old, new: new, 
completion: completion)
     }
 
@@ -349,7 +349,7 @@ public class UsergridUser : UsergridEntity {
      - parameter new:        The new password.
      - parameter completion: The optional completion block
      */
-    public func resetPassword(client: UsergridClient, old:String, new:String, 
completion:UsergridUserResetPasswordCompletion? = nil) {
+    public func resetPassword(_ client: UsergridClient, old:String, 
new:String, completion:UsergridUserResetPasswordCompletion? = nil) {
         client.resetPassword(self, old: old, new: new, completion: completion)
     }
 
@@ -358,7 +358,7 @@ public class UsergridUser : UsergridEntity {
 
      - parameter completion: The optional completion block.
      */
-    public func reauthenticate(completion: UsergridUserAuthCompletionBlock? = 
nil) {
+    public func reauthenticate(_ completion: UsergridUserAuthCompletionBlock? 
= nil) {
         self.reauthenticate(Usergrid.sharedInstance, completion: completion)
     }
 
@@ -368,10 +368,10 @@ public class UsergridUser : UsergridEntity {
      - parameter client:     The client to use for reauthentication.
      - parameter completion: The optional completion block.
      */
-    public func reauthenticate(client: UsergridClient, completion: 
UsergridUserAuthCompletionBlock? = nil) {
+    public func reauthenticate(_ client: UsergridClient, completion: 
UsergridUserAuthCompletionBlock? = nil) {
         guard let userAuth = self.auth
             else {
-                completion?(auth: nil, user: self, error: 
UsergridResponseError(errorName: "Invalid UsergridUserAuth.", errorDescription: 
"No UsergridUserAuth found on the UsergridUser."))
+                completion?(nil, self, UsergridResponseError(errorName: 
"Invalid UsergridUserAuth.", errorDescription: "No UsergridUserAuth found on 
the UsergridUser."))
                 return
         }
 
@@ -383,7 +383,7 @@ public class UsergridUser : UsergridEntity {
 
     - parameter completion: The optional completion block.
     */
-    public func logout(completion:UsergridResponseCompletion? = nil) {
+    public func logout(_ completion:UsergridResponseCompletion? = nil) {
         self.logout(Usergrid.sharedInstance,completion:completion)
     }
 
@@ -393,17 +393,17 @@ public class UsergridUser : UsergridEntity {
     - parameter client:     The client to use for logout.
     - parameter completion: The optional completion block.
     */
-    public func logout(client: UsergridClient, 
completion:UsergridResponseCompletion? = nil) {
+    public func logout(_ client: UsergridClient, 
completion:UsergridResponseCompletion? = nil) {
         guard let uuidOrUsername = self.uuidOrUsername,
               let accessToken = self.auth?.accessToken
             else {
-                completion?(response: UsergridResponse(client:client, 
errorName:"Logout Failed.", errorDescription:"UUID or Access Token not found on 
UsergridUser object."))
+                completion?(UsergridResponse(client:client, errorName:"Logout 
Failed.", errorDescription:"UUID or Access Token not found on UsergridUser 
object."))
                 return
         }
         
         client.logoutUser(uuidOrUsername, token: accessToken) { (response) in
             self.auth = nil
-            completion?(response: response)
+            completion?(response)
         }
     }
 
@@ -413,7 +413,7 @@ public class UsergridUser : UsergridEntity {
      - parameter device:     The device to connect to.  If nil it will use the 
`UsergridDevice.sharedDevice` instance.
      - parameter completion: The optional completion block.
      */
-    public func connectToDevice(device:UsergridDevice? = nil, 
completion:UsergridResponseCompletion? = nil) {
+    public func connectToDevice(_ device:UsergridDevice? = nil, 
completion:UsergridResponseCompletion? = nil) {
         self.connectToDevice(Usergrid.sharedInstance, device: device, 
completion: completion)
     }
 
@@ -424,11 +424,11 @@ public class UsergridUser : UsergridEntity {
      - parameter device:     The device to connect to.  If nil it will use the 
`UsergridDevice.sharedDevice` instance.
      - parameter completion: The optional completion block.
      */
-    public func connectToDevice(client:UsergridClient, device:UsergridDevice? 
= nil, completion:UsergridResponseCompletion? = nil) {
+    public func connectToDevice(_ client:UsergridClient, 
device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil) {
         let deviceToConnect = device ?? UsergridDevice.sharedDevice
         guard let _ = deviceToConnect.uuidOrName
             else {
-            completion?(response: UsergridResponse(client: client, errorName: 
"Device cannot be connected to User.", errorDescription: "Device has neither an 
UUID or name specified."))
+            completion?(UsergridResponse(client: client, errorName: "Device 
cannot be connected to User.", errorDescription: "Device has neither an UUID or 
name specified."))
             return
         }
 
@@ -440,7 +440,7 @@ public class UsergridUser : UsergridEntity {
 
      - parameter completion: The optional completion block.
      */
-    public func getConnectedDevice(completion:UsergridResponseCompletion? = 
nil) {
+    public func getConnectedDevice(_ completion:UsergridResponseCompletion? = 
nil) {
         self.getConnectedDevice(Usergrid.sharedInstance, completion: 
completion)
     }
 
@@ -450,8 +450,8 @@ public class UsergridUser : UsergridEntity {
      - parameter client:     The `UsergridClient` object to use for connecting.
      - parameter completion: The optional completion block.
      */
-    public func getConnectedDevice(client:UsergridClient, 
completion:UsergridResponseCompletion? = nil) {
-        client.getConnections(.Out, entity: self, relationship: "device", 
completion: completion)
+    public func getConnectedDevice(_ client:UsergridClient, 
completion:UsergridResponseCompletion? = nil) {
+        client.getConnections(.out, entity: self, relationship: "device", 
completion: completion)
     }
 
     /**
@@ -460,7 +460,7 @@ public class UsergridUser : UsergridEntity {
      - parameter device:     The device to connect to.  If nil it will use the 
`UsergridDevice.sharedDevice` instance.
      - parameter completion: The optional completion block.
      */
-    public func disconnectFromDevice(device:UsergridDevice? = nil, 
completion:UsergridResponseCompletion? = nil) {
+    public func disconnectFromDevice(_ device:UsergridDevice? = nil, 
completion:UsergridResponseCompletion? = nil) {
         self.disconnectFromDevice(Usergrid.sharedInstance, device: device, 
completion: completion)
     }
 
@@ -471,26 +471,25 @@ public class UsergridUser : UsergridEntity {
      - parameter device:     The device to connect to.
      - parameter completion: The optional completion block.
      */
-    public func disconnectFromDevice(client:UsergridClient, 
device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil) {
+    public func disconnectFromDevice(_ client:UsergridClient, 
device:UsergridDevice? = nil, completion:UsergridResponseCompletion? = nil) {
         let deviceToDisconnectFrom = device ?? UsergridDevice.sharedDevice
         guard let _ = deviceToDisconnectFrom.uuidOrName
             else {
-                completion?(response: UsergridResponse(client: client, 
errorName: "Device cannot be disconnected from User.", errorDescription: 
"Device has neither an UUID or name specified."))
+                completion?(UsergridResponse(client: client, errorName: 
"Device cannot be disconnected from User.", errorDescription: "Device has 
neither an UUID or name specified."))
                 return
         }
 
         self.disconnect(client, relationship: "", fromEntity: 
deviceToDisconnectFrom, completion: completion)
     }
 
-    private func getUserSpecificProperty(userProperty: UsergridUserProperties) 
-> AnyObject? {
-        var propertyValue: AnyObject? = super[userProperty.stringValue]
-        NSJSONReadingOptions.AllowFragments
+    private func getUserSpecificProperty(_ userProperty: 
UsergridUserProperties) -> Any? {
+        var propertyValue: Any? = super[userProperty.stringValue]
         switch userProperty {
-            case .Activated,.Disabled :
-                propertyValue = propertyValue?.boolValue
-            case .Age :
-                propertyValue = propertyValue?.integerValue
-            case .Name,.Username,.Password,.Email,.Picture :
+            case .activated,.disabled :
+                propertyValue = (propertyValue as AnyObject) as? Bool ?? false
+            case .age :
+                propertyValue = (propertyValue as AnyObject) as? Int ?? 0 // 
TODO: Check these conversions
+            case .name,.username,.password,.email,.picture :
                 break
         }
         return propertyValue
@@ -508,7 +507,7 @@ public class UsergridUser : UsergridEntity {
     usergridUser["name"] = someName
     ```
     */
-    override public subscript(propertyName: String) -> AnyObject? {
+    override public subscript(propertyName: String) -> Any? {
         get {
             if let userProperty = 
UsergridUserProperties.fromString(propertyName) {
                 return self.getUserSpecificProperty(userProperty)
@@ -520,4 +519,4 @@ public class UsergridUser : UsergridEntity {
             super[propertyName] = propertyValue
         }
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Tests/ASSET_Tests.swift
----------------------------------------------------------------------
diff --git a/Tests/ASSET_Tests.swift b/Tests/ASSET_Tests.swift
index c6f860f..0de2127 100644
--- a/Tests/ASSET_Tests.swift
+++ b/Tests/ASSET_Tests.swift
@@ -25,6 +25,7 @@
  */
 
 import XCTest
+import Foundation
 @testable import UsergridSDK
 
 class ASSET_Tests: XCTestCase {
@@ -46,8 +47,8 @@ class ASSET_Tests: XCTestCase {
         super.tearDown()
     }
 
-    func getFullPathOfFile(fileLocation:String) -> String {
-        return (NSBundle(forClass: object_getClass(self)).resourcePath! as 
NSString).stringByAppendingPathComponent(fileLocation)
+    func getFullPathOfFile(_ fileLocation:String) -> String {
+        return (Bundle(for: object_getClass(self)).resourcePath!) + 
"/\(fileLocation)"
     }
 
     func test_ASSET_INIT() {
@@ -57,28 +58,28 @@ class ASSET_Tests: XCTestCase {
         XCTAssertNotNil(asset)
         XCTAssertNotNil(asset!.data)
         XCTAssertNotNil(asset!.filename)
-        XCTAssertEqual(asset!.contentType, 
UsergridImageContentType.Png.stringValue)
+        XCTAssertEqual(asset!.contentType, 
UsergridImageContentType.png.stringValue)
         XCTAssertTrue(asset!.contentLength > 0)
 
-        asset = UsergridAsset(filename:ASSET_Tests.imageName, fileURL: 
NSURL(fileURLWithPath: filePath))
+        asset = UsergridAsset(filename:ASSET_Tests.imageName, fileURL: 
URL(fileURLWithPath: filePath))
         XCTAssertNotNil(asset)
         XCTAssertNotNil(asset!.data)
         XCTAssertNotNil(asset!.filename)
-        XCTAssertEqual(asset!.contentType, 
UsergridImageContentType.Png.stringValue)
+        XCTAssertEqual(asset!.contentType, 
UsergridImageContentType.png.stringValue)
         XCTAssertTrue(asset!.contentLength > 0)
 
         filePath = self.getFullPathOfFile(ASSET_Tests.jpgLocation)
         image = UIImage(contentsOfFile: filePath)
-        asset = UsergridAsset(filename:nil,image: image!, 
imageContentType:.Jpeg)
+        asset = UsergridAsset(filename:nil,image: image!, 
imageContentType:.jpeg)
         XCTAssertNotNil(asset)
         XCTAssertNotNil(asset!.data)
         XCTAssertEqual(asset!.filename,UsergridAsset.DEFAULT_FILE_NAME)
-        XCTAssertEqual(asset!.contentType, 
UsergridImageContentType.Jpeg.stringValue)
+        XCTAssertEqual(asset!.contentType, 
UsergridImageContentType.jpeg.stringValue)
         XCTAssertTrue(asset!.contentLength > 0)
     }
 
     func test_IMAGE_UPLOAD() {
-        let getExpect = self.expectationWithDescription("\(#function)")
+        let getExpect = self.expectation(description: "\(#function)")
         let uploadProgress : UsergridAssetRequestProgress = { (bytes,expected) 
in
             print("UPLOAD PROGRESS BLOCK: BYTES:\(bytes) --- 
EXPECTED:\(expected)")
         }
@@ -87,7 +88,7 @@ class ASSET_Tests: XCTestCase {
         }
 
         Usergrid.GET(ASSET_Tests.collectionName, 
uuidOrName:ASSET_Tests.entityUUID) { (response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
 
             let entity = response.first!
             XCTAssertNotNil(entity)
@@ -103,7 +104,7 @@ class ASSET_Tests: XCTestCase {
             XCTAssertNotNil(asset)
 
             entity.uploadAsset(asset!, progress:uploadProgress) { 
uploadedAsset,response in
-                XCTAssertTrue(NSThread.isMainThread())
+                XCTAssertTrue(Thread.isMainThread)
                 XCTAssertTrue(response.ok)
                 XCTAssertNil(response.error)
 
@@ -120,9 +121,9 @@ class ASSET_Tests: XCTestCase {
                 XCTAssertEqual(entity.asset!.contentLength, 
entity.fileMetaData!.contentLength)
                 XCTAssertEqual(entity.asset!.contentType, 
entity.fileMetaData!.contentType)
 
-                entity.downloadAsset(UsergridImageContentType.Png.stringValue, 
progress:downloadProgress)
+                entity.downloadAsset(UsergridImageContentType.png.stringValue, 
progress:downloadProgress)
                 { (downloadedAsset, error) -> Void in
-                    XCTAssertTrue(NSThread.isMainThread())
+                    XCTAssertTrue(Thread.isMainThread)
                     XCTAssertNotNil(downloadedAsset)
                     XCTAssertNil(error)
                     let downloadedImage = UIImage(data: downloadedAsset!.data)
@@ -132,12 +133,12 @@ class ASSET_Tests: XCTestCase {
                 }
             }
         }
-        self.waitForExpectationsWithTimeout(100, handler: nil)
+        self.waitForExpectations(timeout: 100, handler: nil)
     }
 
-    func deleteUser(user:UsergridUser,expectation:XCTestExpectation) {
+    func deleteUser(_ user:UsergridUser,expectation:XCTestExpectation) {
         user.remove() { removeResponse in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(removeResponse)
             XCTAssertTrue(removeResponse.ok)
             XCTAssertNotNil(removeResponse.user)
@@ -148,7 +149,7 @@ class ASSET_Tests: XCTestCase {
     }
 
     func test_ATTACH_ASSET_TO_CURRENT_USER() {
-        let userAssetExpect = self.expectationWithDescription("\(#function)")
+        let userAssetExpect = self.expectation(description: "\(#function)")
 
         let user = UsergridUser(name:User_Tests.name, email:User_Tests.email, 
username:User_Tests.username, password:User_Tests.password)
         let uploadProgress : UsergridAssetRequestProgress = { (bytes,expected) 
in
@@ -160,12 +161,12 @@ class ASSET_Tests: XCTestCase {
 
         UsergridUser.checkAvailable(user.email, username: user.username) { 
error,available in
 
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNil(error)
             XCTAssertTrue(available)
 
             user.create() { (createResponse) in
-                XCTAssertTrue(NSThread.isMainThread())
+                XCTAssertTrue(Thread.isMainThread)
                 XCTAssertNotNil(createResponse)
                 XCTAssertTrue(createResponse.ok)
                 XCTAssertNotNil(createResponse.user)
@@ -173,14 +174,14 @@ class ASSET_Tests: XCTestCase {
                 XCTAssertNotNil(user.uuid)
 
                 user.login(user.username!, password:User_Tests.password) { 
(auth, loggedInUser, error) -> Void in
-                    XCTAssertTrue(NSThread.isMainThread())
+                    XCTAssertTrue(Thread.isMainThread)
                     XCTAssertNil(error)
                     XCTAssertNotNil(auth)
                     XCTAssertNotNil(loggedInUser)
                     XCTAssertEqual(auth, user.auth!)
 
                     Usergrid.authenticateUser(user.auth!) { 
auth,currentUser,error in
-                        XCTAssertTrue(NSThread.isMainThread())
+                        XCTAssertTrue(Thread.isMainThread)
                         XCTAssertNil(error)
                         XCTAssertNotNil(auth)
                         XCTAssertEqual(auth, user.auth!)
@@ -199,7 +200,7 @@ class ASSET_Tests: XCTestCase {
                         XCTAssertNotNil(asset)
 
                         Usergrid.currentUser!.uploadAsset(asset!, 
progress:uploadProgress) { uploadedAsset,response in
-                            XCTAssertTrue(NSThread.isMainThread())
+                            XCTAssertTrue(Thread.isMainThread)
                             XCTAssertTrue(response.ok)
                             XCTAssertNil(response.error)
 
@@ -216,9 +217,9 @@ class ASSET_Tests: XCTestCase {
                             
XCTAssertEqual(Usergrid.currentUser!.asset!.contentLength, 
Usergrid.currentUser!.fileMetaData!.contentLength)
                             
XCTAssertEqual(Usergrid.currentUser!.asset!.contentType, 
Usergrid.currentUser!.fileMetaData!.contentType)
 
-                            
Usergrid.currentUser!.downloadAsset(UsergridImageContentType.Png.stringValue, 
progress:downloadProgress)
+                            
Usergrid.currentUser!.downloadAsset(UsergridImageContentType.png.stringValue, 
progress:downloadProgress)
                                 { (downloadedAsset, error) -> Void in
-                                    XCTAssertTrue(NSThread.isMainThread())
+                                    XCTAssertTrue(Thread.isMainThread)
                                     XCTAssertNotNil(downloadedAsset)
                                     XCTAssertNil(error)
                                     let downloadedImage = UIImage(data: 
downloadedAsset!.data)
@@ -231,7 +232,7 @@ class ASSET_Tests: XCTestCase {
                 }
             }
         }
-        self.waitForExpectationsWithTimeout(100, handler: nil)
+        self.waitForExpectations(timeout: 100, handler: nil)
     }
 
 
@@ -240,12 +241,12 @@ class ASSET_Tests: XCTestCase {
                                 "etag":"dfa7421ea4f35d33e12ba93979a46b7e",
                                 "checkSum":"dfa7421ea4f35d33e12ba93979a46b7e",
                                 "content-length":1417896,
-                                "last-modified":1455728898545]
+                                "last-modified":1455728898545] as [String : 
Any]
         
         let fileMetaData = 
UsergridFileMetaData(fileMetaDataJSON:fileMetaDataDict)
 
-        let fileMetaDataCodingData = 
NSKeyedArchiver.archivedDataWithRootObject(fileMetaData)
-        let newInstanceFromData = 
NSKeyedUnarchiver.unarchiveObjectWithData(fileMetaDataCodingData) as? 
UsergridFileMetaData
+        let fileMetaDataCodingData = 
NSKeyedArchiver.archivedData(withRootObject: fileMetaData)
+        let newInstanceFromData = NSKeyedUnarchiver.unarchiveObject(with: 
fileMetaDataCodingData) as? UsergridFileMetaData
         XCTAssertNotNil(newInstanceFromData)
 
         if let newInstance = newInstanceFromData {
@@ -259,12 +260,12 @@ class ASSET_Tests: XCTestCase {
 
     func test_ASSET_NSCODING() {
         let imagePath = self.getFullPathOfFile(ASSET_Tests.pngLocation)
-        let asset = UsergridAsset(filename:ASSET_Tests.imageName,fileURL: 
NSURL(fileURLWithPath: imagePath))
+        let asset = UsergridAsset(filename:ASSET_Tests.imageName,fileURL: 
URL(fileURLWithPath: imagePath))
         XCTAssertNotNil(asset)
 
         if let originalAsset = asset {
-            let assetCodingData = 
NSKeyedArchiver.archivedDataWithRootObject(originalAsset)
-            let newInstanceFromData = 
NSKeyedUnarchiver.unarchiveObjectWithData(assetCodingData) as? UsergridAsset
+            let assetCodingData = NSKeyedArchiver.archivedData(withRootObject: 
originalAsset)
+            let newInstanceFromData = NSKeyedUnarchiver.unarchiveObject(with: 
assetCodingData) as? UsergridAsset
 
             XCTAssertNotNil(newInstanceFromData)
 

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Tests/AUTH_Tests.swift
----------------------------------------------------------------------
diff --git a/Tests/AUTH_Tests.swift b/Tests/AUTH_Tests.swift
index 80ec695..d77bcae 100644
--- a/Tests/AUTH_Tests.swift
+++ b/Tests/AUTH_Tests.swift
@@ -32,8 +32,8 @@ class AUTH_Tests: XCTestCase {
     var appAuth: UsergridAppAuth!
     var userAuth: UsergridUserAuth!
 
-    private static let collectionName = "publicevent"
-    private static let entityUUID = "fa015eaa-fe1c-11e3-b94b-63b29addea01"
+    fileprivate static let collectionName = "publicevent"
+    fileprivate static let entityUUID = "fa015eaa-fe1c-11e3-b94b-63b29addea01"
 
     override func setUp() {
         super.setUp()
@@ -49,10 +49,10 @@ class AUTH_Tests: XCTestCase {
 
     func test_CLIENT_AUTH() {
 
-        let authExpect = self.expectationWithDescription("\(#function)")
-        Usergrid.authMode = .App
+        let authExpect = self.expectation(description: "\(#function)")
+        Usergrid.authMode = .app
         Usergrid.authenticateApp(appAuth) { auth,error in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNil(error)
             XCTAssertNotNil(Usergrid.appAuth)
 
@@ -63,7 +63,7 @@ class AUTH_Tests: XCTestCase {
                 XCTAssertNotNil(appAuth.isValid)
 
                 Usergrid.GET(AUTH_Tests.collectionName) { (response) in
-                    XCTAssertTrue(NSThread.isMainThread())
+                    XCTAssertTrue(Thread.isMainThread)
                     XCTAssertNotNil(response)
                     XCTAssertTrue(response.hasNextPage)
                     XCTAssertEqual(response.entities!.count, 10)
@@ -73,7 +73,7 @@ class AUTH_Tests: XCTestCase {
                 }
             }
         }
-        self.waitForExpectationsWithTimeout(100, handler: nil)
+        self.waitForExpectations(timeout: 100, handler: nil)
     }
 
     func test_DESTROY_AUTH() {
@@ -93,10 +93,10 @@ class AUTH_Tests: XCTestCase {
     func test_APP_AUTH_NSCODING() {
 
         appAuth.accessToken = 
"YWMt91Q2YtWaEeW_Ki2uDueMEwAAAVMUTVSPeOdX-oradxdqirEFz5cPU3GWybs"
-        appAuth.expiry = NSDate.distantFuture()
+        appAuth.expiry = Date.distantFuture
 
-        let authCodingData = 
NSKeyedArchiver.archivedDataWithRootObject(appAuth)
-        let newInstanceFromData = 
NSKeyedUnarchiver.unarchiveObjectWithData(authCodingData) as? UsergridAppAuth
+        let authCodingData = NSKeyedArchiver.archivedData(withRootObject: 
appAuth)
+        let newInstanceFromData = NSKeyedUnarchiver.unarchiveObject(with: 
authCodingData) as? UsergridAppAuth
 
         XCTAssertNotNil(newInstanceFromData)
 
@@ -112,10 +112,10 @@ class AUTH_Tests: XCTestCase {
     func test_USER_AUTH_NSCODING() {
 
         userAuth.accessToken = 
"YWMt91Q2YtWaEeW_Ki2uDueMEwAAAVMUTVSPeOdX-oradxdqirEFz5cPU3GWybs"
-        userAuth.expiry = NSDate.distantFuture()
+        userAuth.expiry = Date.distantFuture
 
-        let authCodingData = 
NSKeyedArchiver.archivedDataWithRootObject(userAuth)
-        let newInstanceFromData = 
NSKeyedUnarchiver.unarchiveObjectWithData(authCodingData) as? UsergridUserAuth
+        let authCodingData = NSKeyedArchiver.archivedData(withRootObject: 
userAuth)
+        let newInstanceFromData = NSKeyedUnarchiver.unarchiveObject(with: 
authCodingData) as? UsergridUserAuth
 
         XCTAssertNotNil(newInstanceFromData)
 

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Tests/CONNECTION_Tests.swift
----------------------------------------------------------------------
diff --git a/Tests/CONNECTION_Tests.swift b/Tests/CONNECTION_Tests.swift
index 2640778..e824088 100644
--- a/Tests/CONNECTION_Tests.swift
+++ b/Tests/CONNECTION_Tests.swift
@@ -30,7 +30,7 @@ import XCTest
 class CONNECTION_Tests: XCTestCase {
 
     let clientAuth = UsergridAppAuth(clientId: "b3U6THNcevskEeOQZLcUROUUVA", 
clientSecret: "b3U6RZHYznP28xieBzQPackFPmmnevU")
-    private static let collectionName = "publicevent"
+    fileprivate static let collectionName = "publicevent"
 
     override func setUp() {
         super.setUp()
@@ -44,10 +44,10 @@ class CONNECTION_Tests: XCTestCase {
 
     func test_CLIENT_AUTH() {
 
-        let authExpect = self.expectationWithDescription("\(#function)")
-        Usergrid.authMode = .App
+        let authExpect = self.expectation(description: "\(#function)")
+        Usergrid.authMode = .app
         Usergrid.authenticateApp(clientAuth) { auth,error in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNil(error)
             XCTAssertNotNil(Usergrid.appAuth)
 
@@ -57,7 +57,7 @@ class CONNECTION_Tests: XCTestCase {
                 XCTAssertNotNil(appAuth.expiry)
 
                 Usergrid.GET(CONNECTION_Tests.collectionName) { (response) in
-                    XCTAssertTrue(NSThread.isMainThread())
+                    XCTAssertTrue(Thread.isMainThread)
                     XCTAssertNotNil(response)
                     XCTAssertTrue(response.ok)
                     XCTAssertTrue(response.hasNextPage)
@@ -68,12 +68,12 @@ class CONNECTION_Tests: XCTestCase {
                     XCTAssertEqual(entity.type, 
CONNECTION_Tests.collectionName)
 
                     entity.connect("likes", toEntity: entityToConnect) { 
(response) -> Void in
-                        XCTAssertTrue(NSThread.isMainThread())
+                        XCTAssertTrue(Thread.isMainThread)
                         XCTAssertNotNil(response)
                         XCTAssertTrue(response.ok)
 
-                        entity.getConnections(.Out, relationship: "likes", 
query:nil) { (response) -> Void in
-                            XCTAssertTrue(NSThread.isMainThread())
+                        entity.getConnections(.out, relationship: "likes", 
query:nil) { (response) -> Void in
+                            XCTAssertTrue(Thread.isMainThread)
                             XCTAssertNotNil(response)
                             XCTAssertTrue(response.ok)
 
@@ -82,12 +82,12 @@ class CONNECTION_Tests: XCTestCase {
                             XCTAssertEqual(connectedEntity.uuidOrName, 
entityToConnect.uuidOrName)
 
                             entity.disconnect("likes", fromEntity: 
connectedEntity) { (response) -> Void in
-                                XCTAssertTrue(NSThread.isMainThread())
+                                XCTAssertTrue(Thread.isMainThread)
                                 XCTAssertNotNil(response)
                                 XCTAssertTrue(response.ok)
 
-                                entity.getConnections(.Out, relationship: 
"likes", query:nil) { (response) -> Void in
-                                    XCTAssertTrue(NSThread.isMainThread())
+                                entity.getConnections(.out, relationship: 
"likes", query:nil) { (response) -> Void in
+                                    XCTAssertTrue(Thread.isMainThread)
                                     XCTAssertNotNil(response)
                                     XCTAssertTrue(response.ok)
                                     authExpect.fulfill()
@@ -100,6 +100,6 @@ class CONNECTION_Tests: XCTestCase {
                 authExpect.fulfill()
             }
         }
-        self.waitForExpectationsWithTimeout(20, handler: nil)
+        self.waitForExpectations(timeout: 20, handler: nil)
     }
 }

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Tests/ClientCreationTests.swift
----------------------------------------------------------------------
diff --git a/Tests/ClientCreationTests.swift b/Tests/ClientCreationTests.swift
index 40a7de1..6776cb4 100644
--- a/Tests/ClientCreationTests.swift
+++ b/Tests/ClientCreationTests.swift
@@ -50,7 +50,7 @@ class ClientCreationTests: XCTestCase {
     func test_CLIENT_PROPERTIES() {
         XCTAssertEqual(Usergrid.appId, ClientCreationTests.appId)
         XCTAssertEqual(Usergrid.orgId, ClientCreationTests.orgId)
-        XCTAssertEqual(Usergrid.authMode, UsergridAuthMode.User)
+        XCTAssertEqual(Usergrid.authMode, UsergridAuthMode.user)
         XCTAssertEqual(Usergrid.persistCurrentUserInKeychain, false)
         XCTAssertEqual(Usergrid.baseUrl, UsergridClient.DEFAULT_BASE_URL)
         XCTAssertEqual(Usergrid.clientAppURL, 
"\(UsergridClient.DEFAULT_BASE_URL)/\(ClientCreationTests.orgId)/\(ClientCreationTests.appId)"
 )
@@ -59,8 +59,8 @@ class ClientCreationTests: XCTestCase {
     }
 
     func test_CLIENT_NSCODING() {
-        let sharedInstanceAsData = 
NSKeyedArchiver.archivedDataWithRootObject(Usergrid.sharedInstance)
-        let newInstanceFromData = 
NSKeyedUnarchiver.unarchiveObjectWithData(sharedInstanceAsData) as? 
UsergridClient
+        let sharedInstanceAsData = 
NSKeyedArchiver.archivedData(withRootObject: Usergrid.sharedInstance)
+        let newInstanceFromData = NSKeyedUnarchiver.unarchiveObject(with: 
sharedInstanceAsData) as? UsergridClient
 
         XCTAssertNotNil(newInstanceFromData)
 

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Tests/GET_Tests.swift
----------------------------------------------------------------------
diff --git a/Tests/GET_Tests.swift b/Tests/GET_Tests.swift
index 2b0331f..b6698e5 100644
--- a/Tests/GET_Tests.swift
+++ b/Tests/GET_Tests.swift
@@ -46,36 +46,36 @@ class GET_Tests: XCTestCase {
 
     func test_GET_WITHOUT_QUERY() {
 
-        let getExpect = self.expectationWithDescription("\(#function)")
+        let getExpect = self.expectation(description: "\(#function)")
         Usergrid.GET(GET_Tests.collectionName) { (response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(response)
             XCTAssertTrue(response.ok)
             XCTAssertTrue(response.hasNextPage)
             XCTAssertEqual(response.count, 10)
             getExpect.fulfill()
         }
-        self.waitForExpectationsWithTimeout(10, handler: nil)
+        self.waitForExpectations(timeout: 10, handler: nil)
     }
 
     func test_GET_WITH_QUERY() {
 
-        let getExpect = self.expectationWithDescription("\(#function)")
+        let getExpect = self.expectation(description: "\(#function)")
         Usergrid.GET(self.query) { (response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(response)
             XCTAssertTrue(response.ok)
             XCTAssertEqual(response.count, 1)
             getExpect.fulfill()
         }
-        self.waitForExpectationsWithTimeout(10, handler: nil)
+        self.waitForExpectations(timeout: 10, handler: nil)
     }
 
     func test_GET_WITH_UUID() {
 
-        let getExpect = self.expectationWithDescription("\(#function)")
+        let getExpect = self.expectation(description: "\(#function)")
         Usergrid.GET(GET_Tests.collectionName, 
uuidOrName:GET_Tests.entityUUID) { (response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(response)
             XCTAssertTrue(response.ok)
             let entity = response.first!
@@ -85,29 +85,29 @@ class GET_Tests: XCTestCase {
             XCTAssertEqual(entity.uuid!, GET_Tests.entityUUID)
             getExpect.fulfill()
         }
-        self.waitForExpectationsWithTimeout(10, handler: nil)
+        self.waitForExpectations(timeout: 10, handler: nil)
     }
 
     func test_GET_NEXT_PAGE_WITH_NO_QUERY() {
 
-        let getExpect = self.expectationWithDescription("\(#function)")
+        let getExpect = self.expectation(description: "\(#function)")
         Usergrid.GET(GET_Tests.collectionName) { (response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(response)
             XCTAssertTrue(response.ok)
             XCTAssertTrue(response.hasNextPage)
             XCTAssertEqual(response.count, 10)
 
             response.loadNextPage() { (nextPageResponse) in
-                XCTAssertTrue(NSThread.isMainThread())
+                XCTAssertTrue(Thread.isMainThread)
                 XCTAssertTrue(nextPageResponse.ok)
                 XCTAssertNotNil(nextPageResponse)
-                XCTAssertFalse(nextPageResponse.hasNextPage)
-                XCTAssertEqual(nextPageResponse.entities!.count, 7)
+                XCTAssertFalse(!nextPageResponse.hasNextPage)
+                XCTAssertEqual(nextPageResponse.entities!.count, 10)
                 getExpect.fulfill()
             }
         }
-        self.waitForExpectationsWithTimeout(20, handler: nil)
+        self.waitForExpectations(timeout: 20, handler: nil)
     }
     
 }

http://git-wip-us.apache.org/repos/asf/usergrid-swift/blob/b022377f/Tests/PUT_Tests.swift
----------------------------------------------------------------------
diff --git a/Tests/PUT_Tests.swift b/Tests/PUT_Tests.swift
index b1ff3e7..ff67738 100644
--- a/Tests/PUT_Tests.swift
+++ b/Tests/PUT_Tests.swift
@@ -51,10 +51,10 @@ class PUT_Tests: XCTestCase {
 
         let propertyNameToUpdate = "\(#function)"
         let propertiesNewValue = "\(propertyNameToUpdate)_VALUE"
-        let putExpect = self.expectationWithDescription(propertyNameToUpdate)
+        let putExpect = self.expectation(description: propertyNameToUpdate)
 
         Usergrid.PUT(PUT_Tests.collectionName, uuidOrName: 
PUT_Tests.entityUUID, jsonBody:[propertyNameToUpdate : propertiesNewValue]) { 
(response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(response)
             XCTAssertTrue(response.ok)
             XCTAssertEqual(response.entities!.count, 1)
@@ -68,19 +68,19 @@ class PUT_Tests: XCTestCase {
             XCTAssertEqual(updatedPropertyValue!,propertiesNewValue)
             putExpect.fulfill()
         }
-        self.waitForExpectationsWithTimeout(10, handler: nil)
+        self.waitForExpectations(timeout: 10, handler: nil)
     }
 
     func test_PUT_BY_SPECIFYING_UUID_WITHIN_JSON_BODY() {
 
         let propertyNameToUpdate = "\(#function)"
         let propertiesNewValue = "\(propertyNameToUpdate)_VALUE"
-        let putExpect = self.expectationWithDescription(propertyNameToUpdate)
+        let putExpect = self.expectation(description: propertyNameToUpdate)
 
-        let jsonDictToPut = [UsergridEntityProperties.UUID.stringValue : 
PUT_Tests.entityUUID, propertyNameToUpdate : propertiesNewValue]
+        let jsonDictToPut = [UsergridEntityProperties.uuid.stringValue : 
PUT_Tests.entityUUID, propertyNameToUpdate : propertiesNewValue]
 
         Usergrid.PUT(PUT_Tests.collectionName, jsonBody: jsonDictToPut) { 
(response) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(response)
             XCTAssertTrue(response.ok)
             XCTAssertEqual(response.entities!.count, 1)
@@ -94,16 +94,16 @@ class PUT_Tests: XCTestCase {
             XCTAssertEqual(updatedPropertyValue!,propertiesNewValue)
             putExpect.fulfill()
         }
-        self.waitForExpectationsWithTimeout(10, handler: nil)
+        self.waitForExpectations(timeout: 10, handler: nil)
     }
 
     func test_PUT_WITH_ENTITY_OBJECT() {
         let propertyNameToUpdate = "\(#function)"
         let propertiesNewValue = "\(propertyNameToUpdate)_VALUE"
-        let putExpect = self.expectationWithDescription(propertyNameToUpdate)
+        let putExpect = self.expectation(description: propertyNameToUpdate)
 
         Usergrid.GET(PUT_Tests.collectionName, uuidOrName: 
PUT_Tests.entityUUID) { (getResponse) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(getResponse)
             XCTAssertTrue(getResponse.ok)
             XCTAssertEqual(getResponse.entities!.count, 1)
@@ -116,7 +116,7 @@ class PUT_Tests: XCTestCase {
             responseEntity[propertyNameToUpdate] = propertiesNewValue
 
             Usergrid.PUT(responseEntity) { (putResponse) in
-                XCTAssertTrue(NSThread.isMainThread())
+                XCTAssertTrue(Thread.isMainThread)
                 XCTAssertNotNil(putResponse)
                 XCTAssertTrue(putResponse.ok)
                 XCTAssertEqual(putResponse.entities!.count, 1)
@@ -131,16 +131,16 @@ class PUT_Tests: XCTestCase {
                 putExpect.fulfill()
             }
         }
-        self.waitForExpectationsWithTimeout(20, handler: nil)
+        self.waitForExpectations(timeout: 20, handler: nil)
     }
 
     func test_PUT_WITH_QUERY() {
         let propertyNameToUpdate = "\(#function)"
         let propertiesNewValue = "\(propertyNameToUpdate)_VALUE"
-        let putExpect = self.expectationWithDescription(propertyNameToUpdate)
+        let putExpect = self.expectation(description: propertyNameToUpdate)
 
         Usergrid.PUT(self.query, jsonBody: [propertyNameToUpdate : 
propertiesNewValue]) { (putResponse) in
-            XCTAssertTrue(NSThread.isMainThread())
+            XCTAssertTrue(Thread.isMainThread)
             XCTAssertNotNil(putResponse)
             XCTAssertTrue(putResponse.ok)
             XCTAssertEqual(putResponse.entities!.count, 1)
@@ -153,6 +153,6 @@ class PUT_Tests: XCTestCase {
             XCTAssertEqual(updatedPropertyValue!,propertiesNewValue)
             putExpect.fulfill()
         }
-        self.waitForExpectationsWithTimeout(10, handler: nil)
+        self.waitForExpectations(timeout: 10, handler: nil)
     }
 }

Reply via email to