     }
 }
 
+
+public protocol SQValueConvertible {
+    var asSQValue: SQValue { get }
+}
+
+// MARK: - SQValue convertibles
+extension Int: SQValueConvertible {
+    public var asSQValue: SQValue {
+        get {
+            return SQValue.Int(self)
+        }
+    }
+}
+
+
+extension Double: SQValueConvertible {
+    public var asSQValue: SQValue {
+        get {
+            return SQValue.Float(self)
+        }
+    }
+}
+
+
+extension Bool: SQValueConvertible {
+    public var asSQValue: SQValue {
+        get {
+            return SQValue.Bool(self)
+        }
+    }
+}
+
+
+extension String: SQValueConvertible {
+    public var asSQValue: SQValue {
+        get {
+            return SQValue.String(self)
+        }
+    }
+}
+
+
+extension SQObject: SQValueConvertible {
+    public var asSQValue: SQValue {
+        get {
+            return SQValue.Object(self)
+        }
+    }
+}
    }
}

// MARK: - SQValue::operators
public func ==(left: SQValue, right: SQValue) -> Bool {
    switch (left, right) {

public enum SQValue: Hashable, FloatLiteralConvertible,
                               IntegerLiteralConvertible,
                               BooleanLiteralConvertible,
                               StringLiteralConvertible,
                               NilLiteralConvertible,
                               SQValueConvertible {
    
    public typealias IntType = Swift.Int
    public typealias FloatType = Swift.Double
