Data Struct and Main