introduce forward ptrs
use forward ptrs to allow proper array resizing
map