add some detailed explaination