After discussion with Kevin, I reverted previous commit and make another solution. Plz review last commit. Thank you.