 
         let request = Request(URL: BaseURL, method: .GET, parameters: parameters, parse: { JSON -> Result<PaginatedAPIResponse<Track>, SoundcloudError> in
             return .Success(PaginatedAPIResponse(JSON, parse: parse))
-            }) { result in
-                completion(result.result!)
-        }
-        request.start()
-    }
-
-    /**
-    Load comments relative to a track
-
-    - parameter completion: The closure that will be called when the comments are loaded or upon error
-    */
-    public func comments(completion: PaginatedAPIResponse<Comment> -> Void) {
+        }) { result in
+            completion(result.result!)
+        }
+        request.start()
+    }
+
+    /**
+     Load comments relative to a track
+
+     - parameter trackIdentifier: The track identifier.
+     - parameter completion:      The closure that will be called when the comments are loaded or upon error
+     */
+    public static func comments(trackIdentifier: Int, completion: PaginatedAPIResponse<Comment> -> Void) {
         guard let clientIdentifier = Soundcloud.clientIdentifier else {
             completion(PaginatedAPIResponse(.CredentialsNotSet))
             return

    internal static let BaseURL = NSURL(string: "https://api.soundcloud.com/tracks")!

    /**
    Load track with a specific identifier

    - parameter identifier: The identifier of the track to load
    - parameter completion: The closure that will be called when track is loaded or upon error
    */
    public static func track(identifier: Int, completion: SimpleAPIResponse<Track> -> Void) {
        guard let clientIdentifier = Soundcloud.clientIdentifier else {
            completion(SimpleAPIResponse(.CredentialsNotSet))


        let request = Request(URL: URL, method: .GET, parameters: parameters, parse: { JSON -> Result<PaginatedAPIResponse<User>, SoundcloudError> in
            return .Success(PaginatedAPIResponse(JSON, parse: parse))
        }) { result in
            completion(result.result!)
        }
        request.start()
    }

    /**
     Fetch the list of users that favorited the track.

     - parameter completion: The closure that will be called when users are loaded or upon error
     */
    public func favoriters(completion: PaginatedAPIResponse<User> -> Void) {
        Track.favoriters(identifier, completion: completion)
    }

    #if os(iOS) || os(OSX)
    /**
     Favorites a track for the logged user

     **This method requires a Session.**

     - parameter userIdentifier: The identifier of the logged user
     - parameter completion:     The closure that will be called when the track has been favorited or upon error
     */
    @available(*, deprecated, message="Use `favorite(completion)`")
    public func favorite(userIdentifier: Int, completion: SimpleAPIResponse<Bool> -> Void) {
        Track.changeFavoriteStatus(identifier, favorite: true, completion: completion)
    }

    /**
     Unfavorites a track for the logged user

     **This method requires a Session.**

     - parameter userIdentifier: The identifier of the logged user
     - parameter completion:     The closure that will be called when the track has been unfavorited or upon error
     */
    @available(*, deprecated, message="Use `unfavorite(completion)`")
    public func unfavorite(userIdentifier: Int, completion: SimpleAPIResponse<Bool> -> Void) {
        Track.changeFavoriteStatus(identifier, favorite: false, completion: completion)
    }

    /**
     Favorites a track for the logged user

     **This method requires a Session.**

     - parameter trackIdentifier: The track identifier.
     - parameter completion:      The closure that will be called when the track has been favorited or upon error
     */
    public static func favorite(trackIdentifier: Int, completion: SimpleAPIResponse<Bool> -> Void) {
        Track.changeFavoriteStatus(trackIdentifier, favorite: true, completion: completion)
    }

    /**
     Favorites a track for the logged user

     **This method requires a Session.**

     - parameter completion: The closure that will be called when the track has been favorited or upon error
     */
    public func favorite(completion: SimpleAPIResponse<Bool> -> Void) {
        Track.changeFavoriteStatus(identifier, favorite: true, completion: completion)
    }

    /**
     Unfavorites a track for the logged user

     **This method requires a Session.**

     - parameter trackIdentifier: The track identifier.
     - parameter completion:      The closure that will be called when the track has been unfavorited or upon error
     */
    public static func unfavorite(trackIdentifier: Int, completion: SimpleAPIResponse<Bool> -> Void) {
        Track.changeFavoriteStatus(trackIdentifier, favorite: false, completion: completion)
    }

    /**
     Unfavorites a track for the logged user

     **This method requires a Session.**

     - parameter completion: The closure that will be called when the track has been unfavorited or upon error
     */
    public func unfavorite(completion: SimpleAPIResponse<Bool> -> Void) {
        Track.changeFavoriteStatus(identifier, favorite: false, completion: completion)
    }

    private static func changeFavoriteStatus(trackIdentifier: Int, favorite: Bool, completion: SimpleAPIResponse<Bool> -> Void) {
        guard let clientIdentifier = Soundcloud.clientIdentifier else {
            completion(SimpleAPIResponse(.CredentialsNotSet))
            return
