         
         //create coder
         
-        var coder = DCCoder()
+        var coder = FCCoder()
         coder.rootObject = object
         coder.output = output
         coder.objectCache = objectCache

    }
    */
    
    static func DCWriteFloat(value: Float, output : NSMutableData) {
        
        var data  = value
        output.appendBytes(&data, length:sizeof(Float))
    }
    
    static func DCWriteDouble(value: Double, output : NSMutableData) {
        
        var data  = value
        output.appendBytes(&data, length:sizeof(Double))
    }
    
    static func DCWriteString(string : String, output : NSMutableData) {
        let dataUTF8 : NSData! = string.dataUsingEncoding(NSUTF8StringEncoding)
        output .appendData(dataUTF8)
    }
    
    static func DCWriteType(value: FCType, output : NSMutableData)
    {
      DCWriteUInt8(value.rawValue, output: output)
     //[output appendBytes:&value length:sizeof(value)];
    }
    
    static func DCWriteObject(object: NSObject?, coder : DCCoder) {
        
        if object != nil {
            object!.DC_encodeWithCoder(coder)
        } else {
            DataCoder.DCWriteType(.FCTypeNil, output: coder.output)
        }
    }
    
    static func DCAlignOutput(size : Int, output : NSMutableData) {
        var algin = output.length % size
        if algin > 0 {
            output.increaseLengthBy(size - algin)

        return false
    }
    
    static func FCWriteStringAlias(object : NSObject, coder : FCCoder) -> Bool {
        
        let max8 = Int(UInt8.max)
        let max16 = Int(UInt16.max)
