for data structor and algorithm