added additional redefine functional in then method