add `#pragma once` guard