some ideas and improvements