added detailed explanation