move IDX out to its own component