     :return: a newly-wrapped Chan<T> object
   */
 
-  internal class func Wrap<C: ReadableChannel where C.ReadElement == T>(c: C) -> Chan<T>
+  class func Wrap<C: ReadableChannel where C.ReadElement == T>(c: C) -> Chan<T>
   {
     return EnclosedDirectionalChan(c)
   }

  }

  // Computed properties

  /**
    Determine whether the channel is empty (and therefore can't be read from)
  */

  private override var isEmpty: Bool { return false }

  /**
    Determine whether the channel is full (and can't be written to)
  */

  private override var isFull: Bool { return false }

  /**
    Report the channel capacity
  */

  private override var capacity: Int { return 0 }

  /**
    Determine whether the channel has been closed

    :return: a newly-wrapped Chan<T> object
  */

  class func Wrap<C: WritableChannel where C.WrittenElement == T>(c: C) -> Chan<T>
  {
    return EnclosedDirectionalChan(c)
  }
