There should be a more convenient way to free data after it's removed from a container and it should be: - an optional operation - should not assume the same allocators are used for both data and the structure I suggest adding a callback to `remove` type functions so that instead of: ``` c void *e; container_remove_at(c, 3, &e); free(e); ``` we could write something like this: ``` c container_remove_at(c, 3, NULL, free); ```