implement basic data structs / algorithms