     mutating func stop() {
         if (stopTimestamp == 0) {
             stopTimestamp = mach_absolute_time()
+        }
+    }
+
+    /// Pause countdown
+    mutating func pause() {
+        if (stopTimestamp == 0) {
+            pauses.append((TimeValue.now(), true))
+        }
+    }
+
+    /// Resume countdown
+    mutating func resume() {
+        if (stopTimestamp == 0) {
+            pauses.append((TimeValue.now(), false))
         }
     }
 

                return Double(value) / 1_000_000_000
        }
    }
    
}

extension TimeValue: Equatable {

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

    private func currentTimeNanoseconds() -> UInt64 {
