Port CurrentThreadScheduler and reduce generics close #19