some collection implementations in C