added hedder guards and removed pragmas