QRLib: reduce the visiblity of some of the functions since we don't want to expose them in the external API.
QRLib: Effective java recommends making classes final so that someone
       cannot subclass parts of our API and change its behavior