fix optimize function