a more explanatory demo