     { stream, map }
   end
 
-  defp decode_uint16(stream, size) do
-    decode_uint32(stream, size)
-  end
-
-  defp decode_uint32(stream, size) when 0 < size do
+  defp decode_uint(stream, size) when 0 < size do
     bytes  = Enum.take(stream, size) |> Enum.join()
     stream = Enum.drop(stream, size)
 

        ctrl_type = Enum.at(@ctrl_types, ctrl_code >>> 5)

        if :extended == ctrl_type do
          ext_code  = Enum.take(Enum.drop(stream, 1), 1) |> hd() |> byte_to_code()
          ctrl_type = Enum.at(@ctrl_types, ext_code + 7)
        end

        { stream, read_size } = get_meta_size(Enum.drop(stream, 1), ctrl_code)

        decode_type(stream, ctrl_type, read_size)
      _ -> nil
    end
  end


    # bitwise and with 0x1f
    case code &&& 31 do
      _size when 29 == _size ->
        { stream, size } = decode_uint(stream, 1)
        { stream, 29 + size }
      _size when 30 == _size ->
        { stream, size } = decode_uint(stream, 2)
        { stream, 285 + size }
      _ -> { stream, code &&& 31 }
    end
