         return Timestamp(value: value, unit: otherUnit)
     }
 }
+
+// MARK: - Auxiliary Functions
 
 extension Timestamp {
 

/// Returns new `Timestamp` which is a result of adding `baseValues`
/// of both parameters. New `Timestamp` has the same `Unit` as `lhs`.
func +(lhs: Timestamp, rhs: Timestamp) -> Timestamp {
    return Timestamp(value: lhs.baseValue + rhs.baseValue, unit: .milliseconds).converted(to: lhs.unit)
}

/// Returns new `Timestamp` which is a result of subtracting 
/// `rhs`'s `baseValue` from `lhs`'s. New `Timestamp` has the same `Unit` as `lhs`.
func -(lhs: Timestamp, rhs: Timestamp) -> Timestamp {
    return Timestamp(value: lhs.baseValue - rhs.baseValue, unit: .milliseconds).converted(to: lhs.unit)
}

    let value: Double

    /// Represnts a unit in which `Timestamp` calculates `baseValue`.
    let unit: Unit

    /// Represents a value which doesn't depend on any unit
    /// or unit's value. It can be treated as a base unit
    /// which all `Unit`s can be calculated from or stored in.
    /// Its value depends on a multiplier specified for each `Unit`.
    let baseValue: Double
}

// MARK: - Initializers

extension Timestamp {

    /// Creates a new instance with given `value` in specified
    /// `unit`. `baseValue` is calculaed based on `value` and `unit`.
