         }
 	}
 
-    public func read(length length: Int, deadline: Deadline = never) throws -> Data {
-        try assertNotClosed()
-
-        var data = Data.bufferWithSize(length)
+    public func read(length length: Int, deadline: Double = .never) throws -> Data {
+        try assertNotClosed()
+
+        var data = Data.buffer(with: length)
         let bytesProcessed = data.withUnsafeMutableBufferPointer {
-            fileread(file, $0.baseAddress, $0.count, deadline)
+            fileread(file, $0.baseAddress, $0.count, deadline.int64milliseconds)
         }
 
         try FileError.assertNoReceiveErrorWithData(data, bytesProcessed: bytesProcessed)
         return Data(data.prefix(bytesProcessed))
     }
 
-    public func read(lowWaterMark lowWaterMark: Int, highWaterMark: Int, deadline: Deadline = never) throws -> Data {
-        try assertNotClosed()
-
-        var data = Data.bufferWithSize(highWaterMark)
+    public func read(lowWaterMark lowWaterMark: Int, highWaterMark: Int, deadline: Double = .never) throws -> Data {
+        try assertNotClosed()
+
+        var data = Data.buffer(with: highWaterMark)
         let bytesProcessed = data.withUnsafeMutableBufferPointer {
-            filereadlh(file, $0.baseAddress, lowWaterMark, highWaterMark, deadline)
+            filereadlh(file, $0.baseAddress, lowWaterMark, highWaterMark, deadline.int64milliseconds)
         }
 
         try FileError.assertNoReceiveErrorWithData(data, bytesProcessed: bytesProcessed)
         return Data(data.prefix(bytesProcessed))
     }
 
-    public func read(deadline deadline: Deadline = never) throws -> Data {
+    public func read(deadline deadline: Double = .never) throws -> Data {
         var data = Data()
 
         while true {

        }
	}

    public func write(data: Data, flush: Bool = true, deadline: Deadline = never) throws {
        try assertNotClosed()

        let bytesProcessed = data.withUnsafeBufferPointer {
            filewrite(file, $0.baseAddress, $0.count, deadline)
        }

        try FileError.assertNoSendErrorWithData(data, bytesProcessed: bytesProcessed)

}

extension File {
    public func write(convertible: DataConvertible, flush: Bool = true, deadline: Double = .never) throws {
        try write(convertible.data, flush: flush, deadline: deadline)
    }
}
