 
 public func <=(lhs: JSON, rhs: JSON) -> Bool {
 
-    if lhs.numberValue != nil && rhs.numberValue != nil {
-        return lhs.numberValue <= rhs.numberValue
+    if lhs.number != nil && rhs.number != nil {
+        return lhs.number <= rhs.number
     }
     
     if lhs.type != rhs.type {

    
    switch lhs {
    case JSON.ScalarNumber:
        return lhs.numberValue! == rhs.numberValue!
    case JSON.ScalarString:
        return lhs.stringValue! == rhs.stringValue!
    case .Sequence:
        return lhs.arrayValue! == rhs.arrayValue!
    case .Mapping:
        return lhs.dictionaryValue! == rhs.dictionaryValue!
    case .Null:
        return true
    default:

            }
        }
    }
    
    public var numberValue: NSNumber! {
        get {
            switch self {
            case .ScalarString(let string):
                let scanner = NSScanner(string: string)
                if scanner.scanDouble(nil){
                    if (scanner.atEnd) {
                        return NSNumber(double:(string as NSString).doubleValue)
                    }
                }
                return NSNumber(double: 0.0)
            case .ScalarNumber(let number):
                return number
            default:
                return NSNumber(double: 0.0)
            }
        }
    }
    
    public var URL: NSURL? {
        get {
            switch self {
            case .ScalarString(let string):
