     public func readBlock(index : UID) -> D! {
         self.seekToFileID(index)
         
-        let header = readHeader()
+        let header :H! = readHeader()
+        
         if (header.used) {
             return self.readData()
         }

    
    // #pragma mark - read/write header
    
    func readHeader() -> H! {
        
        let data = self.fileHandle.readDataOfLength(sizeof(H))
        
        // works only by value?
        if data {
            var result = H()
            
            data.getBytes(&result)
            
            return result

            
            let pos = calculatePos(index)
            
            if (newValue != nil) {
                if (pos > endOfFile) {
                    // TODO: error
                } else {
