support following structure: *S *C **G