more detail to datastruct.h