added some explaination