add iter_optim! and related types