 
 struct StopWatch {
 
-    typealias TimeEvent = (String, TimeValue)
     typealias TimeEventDouble = (String, Double)
+    fileprivate typealias TimeEvent = (String, TimeValue)
+    fileprivate typealias TimeEventPause = (TimeValue, Bool) //$1 - when event, $2 - isPaused
+
 
     fileprivate var startTimestamp: UInt64 = 0
     fileprivate var stopTimestamp: UInt64 = 0
 
     fileprivate var tag: String?
     fileprivate var splits = [TimeEvent]()
+
+    fileprivate var pauses = [TimeEventPause]()
 
     init() {
         mach_timebase_info(&timebase_info)

    mutating func stop() {
        if (stopTimestamp == 0) {
            stopTimestamp = mach_absolute_time()
        }
    }


        let formattedTime = elapsedTime.valueFor(unit: unit)
        let tag = self.tag ?? "\(startTimestamp)"
        return "[Stopwatch - \(tag)] time elapsed - \(formattedTime) \(unit.unitName())"
    }

    private func currentTimeNanoseconds() -> UInt64 {
