add some ideas in comments