                 switch result {
                 case .fulfilled(let value):
                     if let currencyPair = value.representedObject as? CurrencyPair {
-                        let price = value.json["data"]["last"].doubleValue
+                        let price = value.json["last"].doubleValue
                         self?.setPrice(price, for: currencyPair)
                     }
                 default: break

    
    override func load() {
        super.load(from: Constants.ProductListAPIPath) {
            $0.json["data"].arrayValue.compactMap { result in
                let customCode = result["symbol"].stringValue
                let symbolParts = customCode.components(separatedBy: "_")
                guard symbolParts.count == 2 else {
                    return nil
                }
                
                return CurrencyPair(
                    baseCurrency: symbolParts.first,
                    quoteCurrency: symbolParts.last,
                    customCode: customCode
                )
            }
        }

class OKExExchange: Exchange {
    
    private struct Constants {
        static let ProductListAPIPath = "https://www.okex.com/api/spot/v3/instruments"
        static let TickerAPIPathFormat = "https://www.okex.com/api/spot/v3/instruments/%@/ticker"
    }
    
    init(delegate: ExchangeDelegate? = nil) {
