add tailopt function