use pragma once everywhere in place of guards