     }
     
     /**
-     Initializes a new NSTimer object using the specified action.
+     Initializes a new Timer object using the specified action.
      The receiver, initialized such that, when added to a run loop, it will fire at date and then, if repeats is true, every ti after that.
      - parameter timeInterval: The number of seconds between firings of the timer. If ti is less than or equal to 0.0, this method chooses the nonnegative value of 0.1 milliseconds instead.
      - parameter userInfo: Custom user info for the timer. The timer maintains a strong reference to this object until it (the timer) is invalidated. This parameter is nil by default.
      - parameter repeats: If true, the timer will repeatedly reschedule itself until invalidated. If false, the timer will be invalidated after it fires. Default is false
      - parameter action: The closure called on the timeout
-     - returns: A new NSTimer object, configured according to the specified parameters.
+     - returns: A new Timer object, configured according to the specified parameters.
      */
     public convenience init(timeInterval interval: TimeInterval, userInfo: AnyObject? = nil, repeats: Bool = false, action: @escaping (Void) -> Void) {
         let action = VoidAction(action: action)

    }
    
    /** 
     Initializes a new NSTimer object using the specified action.
     The receiver, initialized such that, when added to a run loop, it will fire at date and then, if repeats is true, every ti after that.
     - parameter fireAt: The time at which the timer should first fire.
     - parameter interval: For a repeating timer, this parameter contains the number of seconds between firings of the timer. If ti is less than or equal to 0.0, this method chooses the nonnegative value of 0.1 milliseconds instead.

    
    // MARK: Inits with time interval
    /**
     Initializes a new Timer object using the specified action.
     The receiver, initialized such that, when added to a run loop, it will fire at date and then, if repeats is true, every ti after that.
     - parameter timeInterval: The number of seconds between firings of the timer. If ti is less than or equal to 0.0, this method chooses the nonnegative value of 0.1 milliseconds instead.
     - parameter userInfo: Custom user info for the timer. The timer maintains a strong reference to this object until it (the timer) is invalidated. This parameter is nil by default.
     - parameter repeats: If true, the timer will repeatedly reschedule itself until invalidated. If false, the timer will be invalidated after it fires. Default is false
     - parameter action: The closure called on the timeout
     - returns: A new Timer object, configured according to the specified parameters.
     */
    public convenience init<T: Timer>(timeInterval interval: TimeInterval, userInfo: AnyObject? = nil, repeats: Bool = false, action: @escaping (T) -> Void) {
        let action = ParametizedAction(action: action)
