using pragma once instead of header guard