added includeguard
formatted using eclipse