added structure, elective class and its spec