detailed explanation
before 1.2