     }
     
     /// Returns the `UInt8`-value of the next byte and increments the reading cursor.
-    mutating func readByte() throws -> UInt8 {
+    public mutating func readByte() throws -> UInt8 {
         let result = try getByte(index: bitCursor / byteSize)
         bitCursor = incrementedCursorBy(bytes: 1)
         return result

    }
    
    /// Sets the reading cursor back to its initial value.
    mutating func resetCursor() {
        self.bitCursor = 0
    }
    
    // MARK: - Bit
    
    /// Returns the binary value `0` or `1` of the given position.
    func getBit(index: Int) throws -> UInt8 {
        guard (0..<(bytesStore.count)).contains(index / byteSize) else {
            throw BinError.outOfBounds
        }

    }
    
    /// Returns the `Int`-value of the given range.
    public mutating func getBits(range: Range<Int>) throws -> Int {
        guard (0...(bytesStore.count * byteSize)).contains(range.endIndex) else {
            throw BinError.outOfBounds
        }
