         return buffer.getIndexedFileV1Header()
     }
 
-    struct Header { // 1024
+    public struct Header: Printable { // 1024
         var fileType: UInt32 = 0
         var pageSize: Int = 0
         var fileSize: Int = 0

        var lastFreePageOffset: Int = 0
        var numberOfFreePages: Int = 0
        var rootIndexOffset: Int = 0
    }
    
    struct Index: Printable { // 984

    }
}

public class IndexedFileV1 {
    var byteOrder: ByteOrder
    var binaryFile: BinaryFile
    var header: Header
    var mappedBuffer: ByteBuffer
    var indexCache = Dictionary<Int, Index>(minimumCapacity: 64)
    
    public var readonlyHeader: Header {
        return header
    }
    
    public struct Error {
        public let code: Int
        public let message: String
        
        public init(code: Int = 0, message: String = "") {
            self.code = code
            self.message = message
        }
    }
    
    public class func openForReading(path: String, inout error: Error) -> IndexedFileV1? {
        let result = BinaryFile.openForReading(path)
        
        if let fileError = result.error {
