added more ideas and implementation notes