WIP: direct
WIP: product iterator
DONE: DIRECT