inspired by .NET, use a large thread pool
updated binary search implementation
prefix all interfaces with 'I'; generic clone function; make sure Sets clone everything as passing out references could destroy the internal state