     }
 
     private func propertyNames() -> NSArray {
-        var reference: AnyClass = self.superclass!
+        var reference: AnyClass = superclass!
         let properties = NSMutableSet.new()
 
-        properties.addObjectsFromArray(propertyNamesForClass(self.mirrorClass()!) as [AnyObject])
+        properties.addObjectsFromArray(propertyNamesForClass(mirrorClass()!) as [AnyObject])
 
         while reference.superclass() != nil {
             properties.addObjectsFromArray(propertyNamesForClass(reference) as [AnyObject])

    }

    public func propertyTypes() -> NSDictionary {
        var aClass: AnyClass = self.mirrorClass()!

        var reference: AnyClass = self.superclass!
        let mutableDictionary = NSMutableDictionary.new()
        mutableDictionary.addEntriesFromDictionary(propertyTypesForClass(self.mirrorClass()!))

        while reference.superclass() != nil {
            mutableDictionary.addEntriesFromDictionary(propertyTypesForClass(reference))

            if propertyNames.containsObject(key),
                let typeString = propertyTypes["\(key)"]! as? String {
                    if typeString == "\(reflect(value).valueType)" {
                        setValue(value, forKey: key)
                    } else if typeString == "NSDate" &&
                        "Swift.String" == "\(reflect(value).valueType)" {
                            var date = NSDate(fromString: value as! String, format: dateFormat!)
                            setValue(date, forKey: key)
                    }
            }
        }
