 
 class VisualRecognitionTests: XCTestCase {
 
+    private static let timeout: TimeInterval = 45.0
+
     private var visualRecognition: VisualRecognition!
-    private var classifierID = Credentials.VisualRecognitionClassifierID
+    private let classifierID = Credentials.VisualRecognitionClassifierID
 
     static var allTests: [(String, (VisualRecognitionTests) -> () throws -> Void)] {
         return [

            return
        }

        defer {
            // allow zip files to propagate through object storage, so that
            // they will be deleted when the service deletes the classifier
            // (otherwise they remain and dramatically slow down the tests)
            sleep(15) // wait 15 seconds

            let expectation = self.expectation(description: "Delete the new classifier.")

            visualRecognition.deleteClassifier(classifierID: newClassifierID, failure: failWithError) {
                expectation.fulfill()
            }
            waitForExpectations()
        }

        var trained = false

            return
        }

        addTeardownBlock {
            // allow zip files to propagate through object storage, so that
            // they will be deleted when the service deletes the classifier
            // (otherwise they remain and dramatically slow down the tests)
            sleep(15) // wait 15 seconds

            let teardownExpectation = self.expectation(description: "Delete the new classifier.")

            self.visualRecognition.deleteClassifier(classifierID: newClassifierID, failure: nil) {
                teardownExpectation.fulfill()
            }
            self.wait(for: [teardownExpectation], timeout: VisualRecognitionTests.timeout)
        }

        var trained = false
