 
 // MARK: -
 
+/// The Day is physical number representing an Earth day.
+/// Day structs conform to SwiftAA Numeric type protocol.
 public struct Day: NumericType, CustomStringConvertible {
+    
+    /// The Day value
     public let value: Double
+    
+    /// Returns a Day struct initialized to contain the given value.
+    ///
+    /// - Parameter value: The value for the new Day.
     public init(_ value: Double) {
         self.value = value
     }
     
+    /// Transform the current Day value into Hours.
     public var inHours: Hour { return Hour(value * 24.0) }
+    /// Transform the current Day value into Minutes.
     public var inMinutes: Minute { return Minute(value * 24.0 * 60.0) }
+    /// Transform the current Day value into Seconds.
     public var inSeconds: Second { return Second(value * 24.0 * 3600.0) }
+    /// Transform the current Day value into Julian Days (convenient for easily making operations with Julian Day fractions).
     public var inJulianDays: JulianDay { return JulianDay(value) }
+    
+    /// The standard description of the Day
     public var description: String { return String(format: "%.2f d", value) }
 }
 
+/// The Hour is physical number representing an Earth hour.
+/// Hour structs conform to SwiftAA Numeric type protocol.
 public struct Hour: NumericType, CustomStringConvertible {
+
+    /// The Hour value
     public let value: Double
+    
+    /// Returns a Hour struct initialized to contain the given value.
+    ///
+    /// - Parameter value: The value for the new Hour.
     public init(_ value: Double) {
         self.value = value
     }
     
+    /// Returns a Hour struct initialized from a sexagesimal representation of the hour.
+    ///
+    /// - Parameters:
+    ///   - sign: The sign of the hour
+    ///   - hours: The hour component of the sexagesimal representation. Sign is ignored.
+    ///   - minutes: The minute component of the sexagesimal representation. Sign is ignored.
+    ///   - seconds: The second component of the sexagesimal representation. Sign is ignored.
     public init(_ sign: FloatingPointSign = .plus, _ hours: Int, _ minutes: Int, _ seconds: Double) {
         let absHour = abs(Double(hours))
         let absMinutes = abs(Double(minutes))/60.0


// MARK: -

public struct Minute: NumericType, CustomStringConvertible {
    public let value: Double
    public init(_ value: Double) {
        self.value = value
    }
    
    public var inDays: Day { return Day(value / (24.0 * 60.0)) }
    public var inHours: Hour { return Hour(value / 60.0) }
    public var inSeconds: Second { return Second(value * 60.0) }
    public var inDegrees: Degree { return Degree(value / 60.0 * 15.0) }
    public var inJulianDays: JulianDay { return JulianDay(value / 1440.0) }
    
    /// Returns self reduced to 0..<60 range
    public var reduced: Minute { return Minute(value.positiveTruncatingRemainder(dividingBy: 60.0)) }
    
    public var description: String { return String(format: "%.2f min", value) }
}

// MARK: -

public struct Second: NumericType, CustomStringConvertible {
    public let value: Double
    public init(_ value: Double) {
        self.value = value
    }
    
    public var inDays: Day { return Day(value / (24.0 * 3600.0)) }
    public var inHours: Hour { return Hour(value / 3600.0) }
    public var inMinutes: Minute { return Minute(value / 60.0) }
    public var inDegrees: Degree { return Degree(value / 3600.0 * 15.0) }
    public var inJulianDays: JulianDay { return JulianDay(value / 86400.0) }
    
    /// Returns self reduced to 0..<60 range
    public var reduced: Second { return Second(value.positiveTruncatingRemainder(dividingBy: 60.0)) }
    
    public var description: String { return String(format: "%.2f sec", value) }
}


        self.init(Double(sign) * (absHour + absMinutes + absSeconds))
    }
    
    /// Transform the current Hour value into Days.
    public var inDays: Day { return Day(value / 24.0) }
    /// Transform the current Hour value into Minutes.
    public var inMinutes: Minute { return Minute(value * 60.0) }
    /// Transform the current Hour value into Seconds.
    public var inSeconds: Second { return Second(value * 3600.0) }
    /// Transform the current Hour value into Degrees.
    public var inDegrees: Degree { return Degree(value * 15.0) }
    /// Transform the current Hour value into Julian Days (convenient for easily making operations with Julian Day fractions).
    public var inJulianDays: JulianDay { return JulianDay(value / 24.0) }
    
    /// Returns a sexagesimal representation of the hour.
    public var sexagesimalNotation: SexagesimalNotation {
        get {
            let hrs = abs(value.rounded(.towardZero))
