     }
 }
 
-public class StringTransformer: Transformer {
+public class BoolSerializer: Serializer {
+    public func objectForValue(value: AnyObject?) -> AnyObject? {
+        return value
+    }
+    public func exampleValue() -> AnyObject {
+        return Bool()
+    }
+}
+
+public class StringSerializer: Serializer {
     public func objectForValue(value: AnyObject?) -> AnyObject? {
         return value
     }

import UIKit

public class Eson: NSObject {
    var transformers: [Transformer]? = [Transformer]()
    
    public override init() {
        self.transformers?.append(StringTransformer())
        self.transformers?.append(IntTransformer())
    }
    
    public func toJsonDictionary(object: AnyObject) -> [String: AnyObject]? {
        var json = [String: AnyObject]()
        
        let mirror = Mirror(reflecting: object)
        
        var children = [(label: String?, value: Any)]()

        
        var currentMirror = mirror
        while let superclassChildren = currentMirror.superclassMirror()?.children {
            let randomCollection = AnyRandomAccessCollection(superclassChildren)
            if let collection = randomCollection {
                children += collection
            }
            currentMirror = currentMirror.superclassMirror()!
        }
        
        return children
    }
    
    func propertyTypeForName(object: NSObject, name: String) -> AnyClass? {
        var propertyType: AnyClass?
        let children = childrenOfClass(object)
        
        for (optionalPropertyName, value) in children {
            let propertyName = optionalPropertyName!
            if propertyName == name {
                propertyType = (value as! AnyObject).dynamicType
            }
        }
        return propertyType
    }
    
    func convertToCamelCase(string: String) -> String {
        let stringArray = string.characters.split("_")
