         let context = dispatch_get_context(threadLock)
         switch context
         {
-        case contextptr:
+        case &newElement:
           return true
 
         case nil:
           return self.put(newElement)
 
         default:
-          preconditionFailure("Weird context value in waitSelect case of \(__FUNCTION__)")
+          preconditionFailure("Weird context value (\(context)) in waitSelect case of \(__FUNCTION__)")
         }
 
       default:
+        // attach a new copy of our data to the reader's semaphore
         context.initialize(newElement)
         dispatch_semaphore_signal(rs)
         return true

    OSSpinLockLock(&lock)
    if let rs = readerQueue.dequeue()
    {
      OSSpinLockUnlock(&lock)
      return Selection(selectionID: selectionID, selectionData: rs)
    }
    else
    {
      OSSpinLockUnlock(&lock)
      return nil
    }
  }

  override func selectPut(semaphore: SemaphoreChan, selectionID: Selectable) -> Signal

      let context = UnsafePointer<T>(dispatch_get_context(ws))
      switch context
      {
      case nil, UnsafePointer(cancelSelect):
        preconditionFailure(__FUNCTION__)

      default:
