give a detailed explanation