 
     private func getterOfName(name: String) -> Selector {
         var getter = Selector()
-        let property = class_getProperty(self.target.dynamicType, name)
+        let property = class_getProperty(target.dynamicType, name)
         if property != nil {
             let attr = property_copyAttributeValue(property, "G")
             getter = Selector(attr == nil ? name : String(UTF8String: attr)!)


            if typeChar == "f", let float = argument as? Float {
                // Float type shouldn't be promoted to double if it is not variadic.
                args[i] = [ Word(unsafeBitCast(float, UInt32.self)) ]
            } else if let val = argument as? CVarArgType {
                // Scalar(except float), pointer and Objective-C object types
                args[i] = val.encode()
            } else if let obj: AnyObject = argument as? AnyObject {
                // Pure swift object type
                args[i] = [ unsafeBitCast(unsafeAddressOf(obj), Word.self) ]
            } else {
                // Nil or unsupported type
                assert(argument == nil, "Unsupported argument type '\(String(UTF8String: type))'")
                var align: Int = 0
                NSGetSizeAndAlignment(sig.getArgumentTypeAtIndex(i), nil, &align)
                args[i] = [Word](count: align / sizeof(Word.self), repeatedValue: 0)
            }
            args[i].withUnsafeBufferPointer() {
                inv.setArgument(UnsafeMutablePointer($0.baseAddress), atIndex: i + 2)
            }
        }


        // Setup arguments
        assert(arguments.count + 2 <= Int(sig.numberOfArguments), "Too many arguments for calling -[\(target.dynamicType) \(selector)]")
        var args = [[UInt]](count: arguments.count, repeatedValue: [])
        for var i = 0; i < arguments.count; ++i {
            let type = sig.getArgumentTypeAtIndex(i + 2)
            let typeChar = Character(UnicodeScalar(UInt8(type[0])))
