use vectors instead of lists