     }
 }
 
-public protocol FixedRationalElement : RationalElement & FixedWidthInteger {}
-
-extension Int:      FixedRationalElement {}
-extension Int8:     FixedRationalElement {}
-extension Int16:    FixedRationalElement {}
-extension Int32:    FixedRationalElement {}
-extension Int64:    FixedRationalElement {}
-
-
-extension FixedRationalElement {
-    public func over(_ den:Self)->FixRat<Self> {
-        return FixRat(self, den)
-    }
-}
-
-public protocol FixedRationalType : RationalType where Element: FixedRationalElement { }
-
-extension FixedRationalType {
+public protocol FixedWidthRationalElement : RationalElement & FixedWidthInteger {}
+
+extension Int:      FixedWidthRationalElement {}
+extension Int8:     FixedWidthRationalElement {}
+extension Int16:    FixedWidthRationalElement {}
+extension Int32:    FixedWidthRationalElement {}
+extension Int64:    FixedWidthRationalElement {}
+
+
+extension FixedWidthRationalElement {
+    public func over(_ den:Self)->FixedWidthRational<Self> {
+        return FixedWidthRational(self, den)
+    }
+}
+
+public protocol FixedWidthRationalType : RationalType where Element: FixedWidthRationalElement { }
+
+extension FixedWidthRationalType {
     public static var max:Self {
         return Self(+Element.max, 1)
     }

    }
}

public struct FixRat<I:FixedRationalElement> : FixedRationalType {
    public typealias IntegerLiteralType = Int
    public typealias Element = I
    public var (num, den):(I, I)

    }
}

public typealias IntRat = FixedWidthRational<Int>

extension FixedWidthRational : Codable where Element: Codable {
    public enum CodingKeys : String, CodingKey {
        public typealias RawValue = String
        case num, den
