documentation and pragma once