[#4208] ticket:87 refactor and change the code
6 files changed