Site icon ProVideo Coalition

Review: Blackmagic Web Presenter HD streaming encoder + shyness fixer

This is my review on Blackmagic’s new “Web Presenter HD”, more appropriately called a standalone web encoder. Who needs a standalone web encoder? I suppose it’s anybody who wants to webcast live —or someone who wants to perform live broadcast contribution to a TV studio or TV station via the Internet as part of a TV show, and doesn’t have an appropriate encoder internally. Either way, a standalone web encoder can be connected to the output of a video mixer (switcher) which lacks a built-in encoder… or a software based video mixer whose computer is too busy —or not powerful enough to handle the task well without overheating and/or dropping frames. Of course, it could also be any standalone camera without built-in streaming capabilities. Despite its inappropriate name, the new “Web Presenter HD” from Blackmagic is a very interesting standalone web streaming encoder for under US$500. But wait: Did I bury the lead? The Blackmagic Web Presenter HD can even fix certain types of shyness from a camera or a switcher (while it’s doing its official task of encoding and streaming)! Here’s my review, with a refresher of the three types of shyness. I’ll also cover everything I like… and six things I hope Blackmagic will improve via a firmware update someday soon.

Conditions of this review

Blackmagic lent me the Web Presenter HD for a few weeks to do my tests and I have already returned it to them.

Refresher about the three types of “shy” camera situations over HDMI or SDI

Although I more frequently cover these “shy” situations with cameras, some of them apply to video mixers (switchers) too.

 

Type 1: PsF (progressive segmented frame)

I am separating PsF (progressive segmented frame) into three subcategories:

  1. When the shy camera is set to image (and sometimes also to record internally) with a common progressive framerate (in ex NTSC regions) like ≈29.97p, it sadly outputs the signal as PsF (progressive segmented frame), in other words, disguised as ≈59.94i. To be more specific, it takes each progressive frame and segments it into two artificial fields, each with half of the original pixel resolution and each with 540 intertwining lines to add up to the original 1080. Unlike true 1080i —where each field can potentially have different temporal (time) information when there is movement, with PsF the temporal information of each artificial field is always identical.
  2. Similarly, when the shy camera is set to image (and record internally) with a common progressive framerate (in ex PAL regions) like 25p, it sadly outputs the signal as PsF (progressive segmented frame), in other words, disguised as 50i.
  3. The third PsF case is very rare nowadays and never happens with HDMI, but only with some SDI and with very expensive cameras, where with the ≈23.976p (aka ≈23.98p) rate the camera sadly outputs the signal as PsF (progressive segmented frame), in other words, disguised as 47.952. (In the case of HDMI, shy 1080p cameras in ≈23.976p use a telecine method with a 2:3 (aka 3:2) pulldown explained ahead.) This rare case is outside of the scope of this article.

Type 2: Telecine with pulldown

To make the ≈23.976 fit in a more standard ≈59.94i television rate in NTSC and ex-NTSC regions, telecine performs a complex assignment to make pieces of the original frames “fit” into ≈59.94 fields, some of which contain the same temporal information and others don’t.

This is illustrated in the above graphic, which I created in 2008 to illustrate my very first article in ProVideo Coalition magazine. The instructions for the pulldown (i.e. “Put the first progressive frame in both fields of the first interlaced video frame. Now, put the second progressive frame in both fields of the second video frame in the first field of the third video frame, then…”) seem as twisted as the Twister game which dates back to 1966. This is sometimes called pulldown.

 

Type 3: Doubling of progressive frames per second

When set to image and record ≈29.97p, some shy 1080p cameras double the number of frames per second to ≈59.94 progressive frames per second on the HDMI or SDI output. Similarly, when set to image and record 25p, they duplicate the output framerate to 50p (50 progressive frames per second) over HDMI or SDI. As long as your hardware can accept high progressive framerates like 1080/50p and 1080/≈59.94p (i.e. more recent models like the UltraStudio Recorder 3G, ATEM Mini, ATEM Mini Pro, ATEM Mini Pro ISO), this is the easiest type of shyness to solve, and doesn’t require the video mixer (“switcher”) developers/manufacturers to do anything special, as several already have at my request to properly resolve PsF and telecine while retaining all of the original image quality. To solve type 3 shyness, the user/operator should simply set the camera menu and the session in the video mixer (or output rate in a standalone web encoder like the “Web Presenter HD” from Blackmagic) for the desired delivery framerate (1080/25p or 1080/≈29.97p) and the device or software will simply skip half of the repeated progressive frames per second, as long as we tell the target device to use only 25p or ≈29.97p. This can be done with all Blackmagic ATEM Mini switchers that accept a custom XML (i.e Pro and higher), that’s the way you tell it that, in order to correct the Type 3 shyness on the input.

With the Web Presenter HD, it’s even easier to solve Type 3 Shyness: You simply tell it that in a pulldown menu, as I’ll demonstrate in this article. I’ll also cover how to do it with other types (1 and 2) but only in a very specific situation.

 

The reality of streaming in 2021: Why not stream 4K live…

Even though many available cameras offer 4K UHD, in most cases in 2021, it’s not feasible to live stream 4K UHD yet (even if you really wanted to do that). This is both because of bandwidth issues (your Internet upload speed) and platform capabilities. I’ll cover some popular services in alphabetical order:

Often in 2021, we simply want to stream at 1080p or 720p, without any local recording or ISO recording. As stated in the introductory paragraph, many standalone video mixers/switchers don’t have any inboard encoder. In the case of a software video mixer like Ecamm Live (covered in many articles) or vMix, it is often too demanding on a single computer to switch cameras, connect remote video guests, do picture-in-picture, add lower thirds, chroma key) so it is often better to delegate the encoding task to an external, standalone device like the “Web Presenter HD” from Blackmagic I am covering in this article.

Introducing the “Web Presenter HD”

The “Web Presenter HD” is a new, standalone web encoder with a retail price of US$495. I say that it is standalone in general operation, although it must be connected to a computer during initial setup to add credentials to a particular live streaming platform (i.e. Facebook, Twitch, Twitter/Periscope, YouTube or even Restream.io for simulcasting on multiple platforms) or to perform firmware updates, as I’ll cover ahead. It weighs 750 grams (1.66 pounds) and measures 17.5 x 14 x 4.45 centimeters (6.9 x 5.51 x 1.75 inches) which also makes it fit in half of a rack mount, if desired. (For that, Blackmagic offers the optional Teranex Mini Rack Shelf for US$109.)  The Web Presenter HD can be powered either via 12 volts DC (1 x 4-Pin XLR) or via 100-240 volts AC (21 watts) via a standard mains cable using a standard NEMA 5-15R Input. Please note that —like some other AC-powered Blackmagic devices, no AC mains cable is included with the Web Presenter HD: This is presumably to make it universal, with a single version to be distributed worldwide.

Unlike all of the ATEM Mini switchers available as of March 2021 (of which none can accept any type of 4K signal on their inputs), the Web Presenter HD can fortunately accept 4K UHD formats in its input, although its encoded output will be downscaled to 1080p or lower. In fact, the 4K input capability represents one of two different ways that the Web Presenter HD can solve shyness, as I’ll cover ahead. The video input from your source (i.e. video mixer/switcher or camera) is SDI only. If your source only offers HDMI, you can convert it to SDI with an inexpensive converter box, which can be from Blackmagic or another brand of HDMI-to-SDI converters.

The Web Presenter HD can connect to the Internet via two possible connections.

With the available presets, you can encode at the following bit rates:

You will notice that each setting has 2 data rates mentioned. The lower number is used for the lower frame rates like ≈23.976p, 24p, 25p and ≈29.97p, while the higher data rates are used when you are running higher frame rates of 50p and ≈59.94p. It’s also worth noting that the default setting for the streaming quality is Streaming High 6 to 9 Mb/s. That is the one I used during my testing with Francisco Javier Arbolí, since we first tested the ascending (upload) speed in his studio as being about 11 Mb/s. Note that even though Blackmagic has carried over the names of these preset names from other devices (like the ATEM Mini Pro and ATEM Mini Pro ISO) which can record, the Web Presenter HD does not offer recording (at least not with the current firmware).

In addition to the inboard 2.2 inch display, which shows very basic status information of a live broadcast, much more information is available via the HDMI output which I connected to an external monitor.

Changes compared with the original “Web Presenter”

The original “Web Presenter” from Blackmagic (which I have not reviewed) is quite different from the new “Web Presenter HD”. The original “Web Presenter” still exists for US$395. However, the original “Web Presenter” is not a standalone encoder for the Internet. Instead, it accepts video sources over HDMI or SDI and delivers them to a computer. The original “Web Presenter” does not have any RJ-45 connector and is not appropriate for most of the uses I am covering in this article. Unlike the included front panel with the new “Web Presenter HD”, with the original one, the front panel is optional at extra cost.

The new “Web Presenter HD” can indeed also be connected to a computer and appear as a webcam to web conferencing applications like Skype and Zoom.us as the original “Web Presenter” does. This can allow a standalone camera or video switcher with SDI output to connect to those services. In fact, the “Web Presenter HD” can also help solve shyness as covered ahead even in that mode when feeding Skype or Zoom.us.

How to set up one of the preset streaming platforms in your “Web Presenter HD”:

  1. Connect your Web Presenter to your computer (temporarily) via USB.
  2. Copy your stream key from your desired service (i.e. Facebook, Twitch, Twitter/Periscope, YouTube or even Restream.io for simulcasting on multiple platforms).
  3. In the Blackmagic Web Presenter Setup utility (which you can download free from BlackmagicDesign.com/support), go to the “live stream” page.
  4. Select the same platform where you copied in step 2, set it as primary and paste your stream key. Click Save.
  5. Disconnect the USB cable so the Web Presenter HD can be standalone.

NOTE: You could also add additional streaming platforms (i.e. Vimeo Live) to the Web Presenter HD by creating a custom XML file. However, I am not covering those details in this article.

Front panel buttons and knob

The front panel controls let’s us start and stop streaming and change settings. Here’s an explanation of each button.

 

On Air – To start streaming, simply press the ON AIR button. The button will highlight red while streaming on air.

Off – Pressing the ‘off’ button stops the stream.

Menu – Is to to open the settings on the LCD. Then the knob is used together with the buttons to change any setting

Call – This feature will be enabled in a future update, according to Blackmagic.

Lock – If you press and hold this button for 1 second, it locks the panel. This disables the buttons, preventing anyone from accidentally going on air or stopping a stream. The button illuminates red when active. Pressing and holding for 2 seconds unlocks the panel.

 

Internal LCD display

The internal LCD display shows some key information, but not nearly as much as what we’ll see in the next section. Here is what you can see on the internal LCD display:

 

Duration Counter – Shows the current duration of your live stream. The counter starts when you press the ‘on air’ button.

Data Rate – Shows the data rate of the encoder whether or not your Presenter HD is streaming. You can connect your video source to an input and quickly see the bit rate required to stream your live video feed.

Internet Connection – A small icon is displayed when your Web Presenter HD is connected to the network.

Cache – Shows the percentage of Web Presenter HD’s built in memory cache that is currently in use.

On Air Status – A bright red on air indicator will be displayed when your live stream is running. When the unit is standing by ready to start streaming OFF will be displayed. A flashing red and white on air indicator means that there has been an interruption during the stream, such as a slow internet connection.

Audio Meters – Displays the audio levels of the video source connected to the Web Presenter HD.

Internal Video Monitor – Displays the input video source that is connected to the Web Presenter HD.

Internet Connection Icons:

 

Output for an external monitor

The monitor output (HDMI or SDI) is divided into eight panels and lets you see everything about the video source and the stream: audio levels, on air status, encoded data rate and cache levels, plus technical information about the SDI input. During my tests, I connected the Blackmagic Presenter HD to a 1920×1080 HDMI monitor. All of the photographs you see on that monitor, I shot at Francisco Arbolí’s studio where I made the tests using my Moto G Power (2020), known outside of the US as Moto G8 Power.

Ahead are the eight panels you can see on the external monitor: In the above photo, the stream key has been sanitized for security reasons. Click on it to see it larger, if desired.

 

On Air Status

Prior to broadcasting, the on air status indicator will display OFF to let you know Web Presenter HD is standing by and ready to stream. When streaming begins, the indicator will display a bright red ON AIR status until streaming is stopped. (In my Suggestions to Blackmagic section, I’ll have information about the Castilian translation of this term ON AIR, since currently, Blackmagic has left this sign in English even if you select the menu to other languages.) Even though operators of the Webcam Presenter HD will understand the term ON AIR, often their clients will not. Underneath the on air indicator is the duration counter. When you press the ON AIR button on the Web Presenter HD, the duration counter will start running.

Live Stream

The live stream panel displays information about your live stream settings. This includes the streaming platform, server and the first 10 digits of your streaming key. It also displays the stream spatial resolution, temporal resolution (framerate) and quality settings.

Video Input

The 5 mini viewers at the top of the video input panel show the previous 6 seconds of your live stream, each mini viewer represents 1.2 seconds of streaming time. Below the mini viewers you can view detailed technical information about the video input source connected to your Web Presenter HD’s SDI input.

Input Standard

Displays the resolution and frame rate of the SDI video input. Web Presenter HD supports up to 2160p≈59.94 (or even the uncommon 2160p60) on the input.

Colorimetry

Shows the color space of the SDI video input. The Web Presenter HD supports Rec.601, Rec.709 and Rec.2020 color spaces.

SDI Ancillary Data

Ancillary data is optional, additional data carried in the SDI video input that is in addition to video. This includes embedded audio, timecode and closed captions. If your SDI input includes ancillary data then Present will be displayed.

Timecode

Displays the timecode from the SDI video input source.

Closed Captions

If your SDI video input includes Closed Captions, the format will be displayed here. CEA-608 and CEA-708 formats are supported.

SMPTE 292 CRC

This is an error checking function for SDI video. If your Web Presenter HD detects a problem in the SDI video input, it will display an error. CRC errors are usually caused by a faulty SDI cable or a cable that is too long.

Luminance Y Bits and Chroma Bits

The indicators for ‘luminance y bits’ and ‘chroma bits’ show you the activity of the SDI video input signal. Each letter represents the state of one bit of the video signal.

X – An ‘X’ indicates a constantly changing bit.

L – A low bit.

H – A high bit.

SDI offsets are subtracted to make it easy to understand. For example, all bits are low when video is black.

Generally, all 10 bits for your SDI video input will show ‘X’ to mean all the bits on your video stream are changing constantly. If your SDI input is derived from 8 bit video, the two rightmost bits will always be ‘L’ as they don’t have any data. If a bit stays ‘L’ or ‘H’ when you expect it to be ‘X’, this indicates a ‘stuck bit’ and could be the result of a fault in the upstream video.

Audio Input

The audio waveform display at the top of the audio input panel shows the audio information for the past 6 seconds of your live stream. This is continually updated and scrolls from right to left. Below the audio waveform display you can view detailed technical information about the audio input.

Sample Frequency

Displays the sampling frequency rate of the audio embedded in the SDI input.

Emphasis

Indicates if your audio source has its emphasis option enabled.

Audio Source Lock

Indicates whether the audio source frequency is locked to an external reference source.

Word Length

Shows the bit depth of the audio embedded in the SDI input. Origin These four characters indicate the channel origin.

Timecode

Time of Day or Free run

Audio Bits

Shows the bit activity in the audio samples embedded in the SDI connection. Even if the audio channel status says you have 16, 20 or 24 bit audio, the audio bit activity will confirm it.

VUCP Reading

VUCP bits from left to right: the ‘V’ bit indicates ‘valid’,

‘U’ is the ‘user’ bit, ‘C’ is the ‘channel status’ bit, and ‘P’ is for ‘parity’. This field is like ‘audio bits’.

Sample Address

Audio sample counter.

AUX Bits Use

Indicates whether AUX bits are used for main audio.

Audio Channels 1-32 Each digit represents an embedded audio channel on the SDI input.

A ‘P’ shows that an audio channel is in use and a ‘-’ means that there is no audio on that channel.

Data Rate Display

The data rate display shows the current data rate of the encoder over the past 60 seconds. The data rate is measured in megabits per second. This indicator runs consistently, even when off air, so you can accurately gauge your bandwidth before going on air.

Cache Display

The cache display shows the percentage of the Web Presenter HD’s built in memory buffer that is currently in use and the graph shows the amount used over the past 60 seconds.

The cache is a small amount of internal memory that continuously records and plays the program output. It acts as a safety measure if the streaming data rate decreases below a level able to sustain video.

The variable nature of the internet is mostly due to network activity or wireless signal strength, so if the broadcast data rate decreases, the buffer data will increase accordingly. If the connection speed becomes slow enough that it cannot support the video stream, the cache will fill with video frames to compensate. However, once the cache is 100% full, the video stream will be compromised, so you will want to avoid a full cache where possible. You can run a test by connecting a video feed and watching the cache display in the monitor output without having to start the stream. If the cache frequently approaches 100%, you can choose a lower quality in the live stream settings.

Audio Meters

You can monitor the levels of your audio source using the audio meters. These can be set to display either PPM or VU levels in the Web Presenter HD’s menu settings. If your audio levels are too high, the meters will illuminate red and may mean that the audio in your live stream could become distorted or clipped.

My general observations from the experience

I connected the Web Presenter HD via USB to a computer running macOS Catalina. I found it quite straightforward to get the stream key from a CDN (Facebook in my test), paste it into the Web Presenter HD software on macOS, save it, disconnect the USB cable and use the then standalone Web Presenter HD box to stream from a 1080p source over SDI. 

Ways the Web Presenter HD can solve shyness

There are two different ways that the Web Presentar can currently solve shyness:

  1. From 1080p sources (Type 3 shyness only, which I personally tested)
  2. From Types 1, 2 and 3 from shy cameras (or video mixers/switchers) as long as they output 4K. (I didn’t have a chance to verify this personally with the Web Presenter HD, but it should work perfectly, as I demonstrated in this article.)

How the Web Presenter HD can solve Type 3 shyness from a 1080p source

I happened to know in advance that the 1080p source I was planning to use is shy, since from previous experience, I knew that the Sony PXW-X70 is shy when shooting at 1080p25 or 1080p≈29.97. Specifically, the Sony PXW-X70 suffers from Type 3 shyness in these framerates, which you may recall from an earlier section of this article or a prior one.

In the above photograph, the stream key has been sanitized for security reasons.

In this case, we set the camera to shoot 1080p≈29.97 and (as expected) the camera duplicated the output frames over SDI to be 1080p≈59.94. As explained in prior articles, duplicating the frames to be encoded is a terrible waste of bandwidth, whatever amount of upload bandwidth is available to stream. So to solve the shyness in this case, I simply selected an encoding framerate of ≈29.97p. The math is simple. Since the Web Presenter HD was receiving ≈59.94p and was only supposed to encode and stream ≈29.97p, the Web Presenter HD simply ignored half of the incoming frames. In the above screenshot, you’ll see that the Web Presenter HD received the double framerate, but fulfilled my request and only streamed half, back to ≈29.97p.

We could have done the same with 1080p25 and set the Web Presenter HD to stream at 25p. It would have received 50p and then eliminated half of the frames to make it 25p again.

How the Web Presenter HD can (indirectly) solve Types 1,2 and 3 shyness from a 4K source

As covered in prior articles, I have fortunately discovered so far that all 4K signals over HDMI or SDI are immune from shyness and (in my experience so far) always deliver the desired framerates without the shyness nonsense which still plague many 1080p cameras and video mixers/switchers. So set your camera to shoot 4K at the desired framerate, be it ≈23.976p, exact 24p, 25p or ≈29.97p. Then set your Web Presenter HD to encode and stream at that same desired framerate while downscaling the 4K signal to 1080p (or 720p if required). Of course you can only do that if your camera or video mixer/switcher has 4K capabilities. I am glad we can do this method of solving shyness with 4K cameras with the Web Presenter HD. I wish we could use the same method with ATEM Mini series products, but we can’t yet —at the publication date of this article, since as of now, none of the ATEM Mini series can accept 4K on the inputs the way the Web Presenter HD fortunately can.

Suggestions for Blackmagic to improve the Web Presenter HD via a firmware update

  1. If the current hardware permits it, please add H.265 compression as a menu option. So far, you are using H.265 in other products that encode 4K. However, H.265 is also quite helpful for 1080p applications.
  2. If the current hardware permits it, please add a menu option to Treat 1080i source as PsF, to solve Type 1 shyness and perform 2:2 reverse telecine in this case, recombining the segmented frames into whole frames.
  3. If the current hardware permits it, please add a similar option to Treat source as 2:3 Pulldown and perform 2:3 (aka 3:2) reverse telecine in this case.
  4. Please localize/translate the term ON AIR in the specific languages you offer. This will very much impress your users’ clients, especially since those clients often don’t understand the term ON AIR, even though operators often do. I’ll gladly provide the proper translation for Castilian for Spain versus in the Americas if you ask me. It’s slightly different in the two regions.
  5. Please correct the current mistranslation of the word Rate in Castilian (aka “Spanish”) to be the correct term Tasa instead of the inappropriately translated Velocidad both in the UI and in the manual. That’s Tasa with an s, since Taza with a z refers to a cup, like a coffee cup or tea cup.
  6. I am grateful that the Web Presenter HD can display its user interface in different languages, including Castilian (castellano), the language of my award-winning CapicúaFM show and many of my published books. However, Blackmagic has sadly fallen into the trap of calling the Castilian language “Spanish” (“español”) as you’ll see in the photograph below. Blackmagic, please fix the Language menu to display the proper name of the Castilian language: castellano. There are currently six (6) official languages in Spain, and all of them are Spanish languages (in plural). These six (6) Spanish languages are protected by Article 3 of the Spanish Constitution of 1978, by the respective constitutions of five other countries and by Federal law in Chile. By inaccurately naming the language as “Español”, Blackmagic is acting as an accessory after the fact to the linguicide (linguistic genocide) crimes attempted in the 20th century, and is even breaking the law in at least seven (7) countries where the Castilian language is protected by local legislation. For more details, please see my book The Castilian Conspiracy, which is the English adaptation. The original is available in Castilian as  La conspiración del castellano.

Above are the two mentioned books which contain all of the irrefutable proof.

 

Ratings

 

Appearance and Build Quality

 

Ease of operation

 

Capability of downscaling from 4k to 1080p or lower, which indirectly solves Types 1, 2 and 3 shyness

 

Capability of solving Type 3 1080 shyness

 

Capability of solving Type 1 & 2 1080 shyness

(zero with current firmware)

 

Translation/Localization

(The word Rate is currently mistranslated to Castilian. See suggestion 5 in the article.)

 

Language Menu

See suggestion 6 in the article.

 

Conclusions

The Blackmagic Web Presenter HD is a good solution to a need that many webcasters experience when their single cameras or video mixer/switcher doesn’t have a good inboard encoder. In the case of software video mixers/switchers like Ecamm Live Pro or vMix, the Web Presenter HD is welcome when the host computer is not powerful enough to handle the web streaming in addition to all of their other tasks. Although not promoted by Blackmagic, the Web Presenter HD is also very capable of solving shyness in many situations, as I covered in detail in the article. I would certainly recommend the Web Presenter HD despite its unusual name.I know that it will be an even better product if Blackmagic accepts even some of the six suggestions I made in this article.

 

(Re-)Subscribe for upcoming articles, reviews, radio shows, books and seminars/webinars

Stand by for upcoming articles, reviews, books and courses. Sign up to my free mailing list by clicking here. If you previously subscribed to my bulletins and no longer receive them, you must re-subscribe due to new compliance to GDPR. Most of my current books are at books.AllanTepper.com, and my personal website is AllanTepper.com. Also visit radio.AllanTepper.com.

Si deseas suscribirte (o volver a suscribirte) a mi lista en castellano, visita aquí. Si prefieres, puedes suscribirte a ambas listas (castellano e inglés).

Subscribe to my BeyondPodcasting show in English or CapicúaFM en castellano.

FTC disclosure

No manufacturer is specifically paying Allan Tépper or TecnoTur LLC to write this article or the mentioned books. Some of the other manufacturers listed above have contracted Tépper and/or TecnoTur LLC to carry out consulting and/or translations/localizations/transcreations. Many of the manufacturers listed above have sent Allan Tépper review units, including Blacmkagic (although this one was a loaner). So far, none of the manufacturers listed above is/are sponsors of the TecnoTur , BeyondPodcasting CapicúaFM or TuSaludSecreta programs, although they are welcome to do so, and some are, may be (or may have been) sponsors of ProVideo Coalition magazine. Some links to third parties listed in this article and/or on this web page may indirectly benefit TecnoTur LLC via affiliate programs. Allan Tépper’s opinions are his own. Allan Tépper is not liable for misuse or misunderstanding of information he shares.

Copyright and use of this article

The articles contained in the TecnoTur channel in ProVideo Coalitionmagazine are copyright Allan Tépper/TecnoTur LLC, except where otherwise attributed. Unauthorized use is prohibited without prior approval, except for short quotes which link back to this page, which are encouraged!

Exit mobile version