added more explainations