include guards and required functions (other than rule of 3)
initial commit