basic data structure implement