 public protocol JSONObjectConvertible {
     init(raw: JSONObject) throws
 }
+
+
+// MARK: Simple values
 
 public func BoolValue(optionalValue: AnyObject?) -> Bool? {
     if let value: AnyObject = optionalValue {

    }
}

public func ArrayValue<T>(optionalValue: AnyObject?, itemMapper: (AnyObject) -> T?) -> [T]? {
    if let value: AnyObject = optionalValue {
        if let array = value as? [AnyObject] {

    return ArrayValue(optionalValue) { JSONObjectValue($0) }
}


// MARK: JSONObjectConvertible

public func JSONConvertibleObjectValue <T: JSONObjectConvertible> (optional: AnyObject?) -> T? {
    if let raw: JSONObject = JSONObjectValue(optional) {
