 		}
 	}
 	
-	typealias ThreadClosure = () -> ()
-	typealias ThreadQueue = Int // bogus
-	typealias ThreadOnce = pthread_once_t
-	typealias ThreadFunction = @convention(c) (UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>
+	public typealias ThreadClosure = () -> ()
+	public typealias ThreadQueue = Int // bogus
+	public typealias ThreadOnce = pthread_once_t
+	public typealias ThreadFunction = @convention(c) (UnsafeMutablePointer<Void>) -> UnsafeMutablePointer<Void>
 	
 	class IsThisRequired {
 		let closure: ThreadClosure

#endif
#endif

class Threading {
	
	typealias ThreadOnceFunction = @convention(c) () -> ()
	
#if USE_LIBDISPATCH
	typealias ThreadClosure = () -> ()
	typealias ThreadQueue = dispatch_queue_t
	typealias ThreadSemaphore = dispatch_semaphore_t
	typealias ThreadOnce = dispatch_once_t
#else
	
	class ThreadSemaphore {
		
		var mutex = pthread_mutex_t()
		var cond = pthread_cond_t()

#endif
	}
	
	public static func createConcurrentQueue(named: String) -> ThreadQueue {
#if USE_LIBDISPATCH
		return dispatch_queue_create(named, DISPATCH_QUEUE_CONCURRENT)
#else
