 
 public extension DispatchTimeInterval {
     
-	public static func fromSeconds(_ seconds: Double) -> DispatchTimeInterval {
+    static func fromSeconds(_ seconds: Double) -> DispatchTimeInterval {
 		return .nanoseconds(Int(seconds * Double(NSEC_PER_SEC)))
 	}
 
-    public var inSeconds: Double {
+    var inSeconds: Double {
 		switch self {
 		case .seconds(let t):
             return Double(t)

	}
	
	// An overload of timer that always uses the default global queue (because it is intended to enter the appropriate mutex as a separate step) and passes a user-supplied Int to the handler function to allow ignoring callbacks if cancelled or rescheduled before mutex acquisition.
	public class func singleTimer<T>(parameter: T, interval: DispatchTimeInterval, since time: DispatchTime = DispatchTime.now(), leeway: DispatchTimeInterval = .nanoseconds(0), queue: DispatchQueue = DispatchQueue.global(), handler: @escaping (T) -> Void) -> DispatchSourceTimer {
		let result = DispatchSource.makeTimerSource(queue: queue)
        result.scheduleOneshot(parameter: parameter, interval: interval, since: time, leeway: leeway, handler: handler)
		result.resume()

	}

	// An overload of timer that immediately sets the handler and schedules the timer
    class func repeatingTimer(interval: DispatchTimeInterval, since time: DispatchTime = DispatchTime.now(), leeway: DispatchTimeInterval = .nanoseconds(0), queue: DispatchQueue = DispatchQueue.global(), handler: @escaping () -> Void) -> DispatchSourceTimer {
		let result = DispatchSource.makeTimerSource(queue: queue)
		result.setEventHandler(handler: handler)
        result.schedule(deadline: time + interval, repeating: interval, leeway: leeway)
