         }
         let stringPosition = Int(stringOffset)
         do {
-            let stringLength : Int32 = try fromByteArray(position: stringPosition)
+            let stringLength : Int32 = try getScalar(at: stringPosition)
             let stringCharactersPosition = stringPosition + MemoryLayout<Int32>.stride
             
-            return try buffer(position: stringCharactersPosition, length: Int(stringLength))
+            return try bytes(at: stringCharactersPosition, length: Int(stringLength))
         } catch {
             return nil
         }

        throw FBReaderError.outOfBufferBounds
    }
    
    public func buffer(position : Int, length : Int) throws -> UnsafeBufferPointer<UInt8> {
        if UInt64(position + length) > fileSize {
            throw FBReaderError.outOfBufferBounds
        }
        fileHandle.seek(toFileOffset: UInt64(position))
        let data = fileHandle.readData(ofLength:Int(length))
        let pointer = UnsafeMutablePointer<UInt8>.allocate(capacity: 1)
        let t : UnsafeMutableBufferPointer<UInt8> = UnsafeMutableBufferPointer(start: pointer, count: length)

        }
        let vectorPosition = Int(vectorOffset)
        do {
            let length2 : Int32 = try getScalar(at: vectorPosition)
            return Int(length2)
        } catch {
            return 0
