add optimiztaion methods