Add some new ideas and modification.