         return ["name": self.name,
                 "timestamp": Constants.dateFormatter.string(from: self.timestamp),
                 "longitude": self.coordinates.longitude,
-                "free_bikes": self.freeBikes,
+                "free_bikes": self.freeBikes ?? 0,
                 "latitude": self.coordinates.latitude,
-                "empty_slots": self.emptySlots,
+                "empty_slots": self.emptySlots ?? 0,
                 "id": self.id,
                 "status": self.statusDisplayText,
                 "updated": self.dateComponentText,

            let timeString = json["timestamp"] as? String,
            let timestamp = Constants.dateFormatter.date(from: timeString),
            let longitude = json["longitude"] as? Double,
            let freeBikes = json["free_bikes"] as? Int,
            let latitude = json["latitude"] as? Double,
            let emptySlots = json["empty_slots"] as? Int,
            let id = json["id"] as? String
            else
        {
            return nil
        }
        self.name = name
        self.coordinates = Coordinates(latitude: latitude, longitude: longitude)
        self.freeBikes = freeBikes

    
    var color: String
    {
        guard let freeBikes = self.freeBikes,
              let emptySlots = self.emptySlots
        else
        {
            return "orange"
        }
        let totalDocks = freeBikes + emptySlots
        if freeBikes == 0 || emptySlots == 0
        {
            return "red"
        }
        if Double(freeBikes) / Double(totalDocks) < 0.25
        {
            return "orange"
        }
        else if Double(emptySlots) / Double(totalDocks) < 0.10
        {
            return "orange"
        }
