more detailed explanation