 extension EnhancedFloatingPointType {}
 
 
-extension Int    : NumericType, EnhancedIntegerType {}
-extension Int8   : NumericType, EnhancedIntegerType {}
-extension Int16  : NumericType, EnhancedIntegerType {}
-extension Int32  : NumericType, EnhancedIntegerType {}
-extension Int64  : NumericType, EnhancedIntegerType {}
-extension UInt   : NumericType, EnhancedIntegerType {}
-extension UInt8  : NumericType, EnhancedIntegerType {}
-extension UInt16 : NumericType, EnhancedIntegerType {}
-extension UInt32 : NumericType, EnhancedIntegerType {}
-extension UInt64 : NumericType, EnhancedIntegerType {
+extension Int    : EnhancedIntegerType {}
+extension Int8   : EnhancedIntegerType {}
+extension Int16  : EnhancedIntegerType {}
+extension Int32  : EnhancedIntegerType {}
+extension Int64  : EnhancedIntegerType {}
+extension UInt   : EnhancedIntegerType {}
+extension UInt8  : EnhancedIntegerType {}
+extension UInt16 : EnhancedIntegerType {}
+extension UInt32 : EnhancedIntegerType {}
+extension UInt64 : EnhancedIntegerType {
     func string(radix: Int, groupsOf: Int) -> String {
         let logradixDouble = log2(Double(radix))
         if logradixDouble.isNaturalNumber(includingZero: false) {

}


extension Double : NumericType {
    static var max : Double { return DBL_MAX }
    static var min : Double { return DBL_MIN }
    public func successor() -> Double {


import Foundation

typealias Byte = UInt8

typealias Word = UInt16

typealias DWord = UInt32

typealias QWord = UInt64

// partially from source: http://natecook.com/blog/2014/08/generic-functions-for-incompatible-types/

