commenting some ideas and adding some methods