issue #4277 : Refactor to reduce key words and fix some bugs.