 }
 */
 
-@objc public protocol Spec {
+public protocol Spec {
   func spec()
+}
+
+@objc class SpecBox {
+  let spec: Spec
+  let runner: SpecRunner
+
+  init(_ aSpec: Spec, _ aRunner: SpecRunner) {
+    spec = aSpec
+    runner = aRunner
+  }
 }
 
 private enum SpecStatus {

    // Silence assertions on this thread
    RSilentAssertionHandler.setup()

    let className = getClassNameOfObject(spec)

    currentGroup = Group(className)
    specStatus   = .Passed
  }

  @objc func runSpec(spec: Spec) {
    prepareForSpec(spec)

    // Process the definitions

        hasFailure = true
      }
      if specStatus == .Unknown {
        let name = getClassNameOfObject(spec as! AnyObject)
        println("Unknown status of spec: \(name)"); exit(2)
      }
    }
