add optimal step