a complete explanation