         {
           OSSpinLockUnlock(&self.lock)
           
-          let context = UnsafePointer<T>(dispatch_get_context(ws))
+          let context = dispatch_get_context(ws)
           switch context
           {
           case nil:
             preconditionFailure(__FUNCTION__)
 
           default:
-            let element = context.memory
+            let element: T = UnsafePointer(context).memory
             dispatch_semaphore_signal(ws)
 
             let selection = Selection(selectionID: selectionID, selectionData: element)

        }
        return

      case COpaquePointer(cancelSelect):
        // no need to try for the semaphore.
        break

      default:
        let selectget = Unmanaged<dispatch_semaphore_t>.fromOpaque(context).takeRetainedValue()
        if let s = semaphore.get()
        {
          let selection = Selection(selectionID: selectionID, selectionData: selectget)

    { // data is already available
      OSSpinLockUnlock(&lock)

      let context = dispatch_get_context(ws)
      switch context
      {
      case nil:
        preconditionFailure(__FUNCTION__)

      case waitSelect:
        let threadLock = dispatch_semaphore_create(0)!
        let buffer = UnsafeMutablePointer<T>.alloc(1)
        dispatch_set_context(threadLock, buffer)
