try to optimise but failed