use pragma once instead of header guards everywhere