avoid potential leak
hand interface
hand basic implementation
use better prototype
use the new interface
adds util to look into a vector