adding pragma once; making cyclic structs classes