possible optimization of step